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 = +-