Wietse Venema: > I've done a proof-of-concept implementation that works as documented > below the signature.
I was able to simplify this further. The result is below. Comments are welcome. The problem with forward_path could be solved without requiring changes to the forward_path default setting: forward_path = $home/.forward${recipient_delimiter}${extension}, $home/.forward When Postfix expands this while delivering mail, it now replaces ${recipient_delimiter} with the actual recipient delimiter in the recipient email address, instead of using the main.cf value. recipient_delimiter (default: empty) 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_delimiter set contains more than one character (Postfix 2.11 and later), user names and address extensions are separated at the first character that matches the recipient_delimiter set. The implementation recognizes only one delimiter character per email address. When used in forward_path, ${recipient_delimiter} is replaced with the actual recipient delimiter in the recipient email address. Examples: # Support Postfix and qmail extensions (Postfix >= 2.11). recipient_delimiter = +- # Use .forward for mail without address extension, or # with an unrecognized address extension. forward_path = $home/.forward, $home/.forward${recipient_delimiter}${extension} This seems like a more reasonable implementation. Support for delimiter priorities could be added later but I doubt that it will really solve problems. Wietse