I've done a proof-of-concept implementation that works as documented
below the signature.

This retains the old recipient_delimiter parameter because that
parameter has been in use since 19981029 in the forward_path default
parameter value, and I can't have a multi-character value there.

To support users that have .forward+foo and .forward-foo, you'd
have to spell the file names explicitly:

/etc/postfix/main.cf:
    recipient_delimiters = +-
    forward_path = 
        $home/.forward+${extension}, 
        $home/.forward-${extension}, 
        $home/.forward

This works regardless of what the delimiter in the email address
was; Postfix does not use that when it searches forward_path.

        Wietse

    recipient_delimiters (default: $recipient_delimiter)
            The set of characters that can separate user names and
            address extensions (user+foo).  See canonical(5),
            local(8), relocated(5) and virtual(5) for the effects
            this has on aliases, canonical, virtual, and relocated
            lookups.  Basically, the software tries user+foo before
            trying user.

            When the recipient_delimiters set contains multiple
            characters, user names and address extensions are
            separated at the first character that matches the
            recipient_delimiters set.  The implementation recognizes
            only one delimiter character per email address.

            By default, the recipient_delimiter (note: singular)
            value equals the first character of the recipient_delimiters
            parameter value.  The recipient_delimiter parameter is
            used in the default forward_path value, where the
            software tries .forward+foo before trying .forward.

            When the recipient_delimiters parameter is not specified,
            its value defaults to the recipient_delimiter value.

            Example:

            # Handle both Postfix and qmail extensions.
            recipient_delimiters = +-

Reply via email to