Wietse Venema:
> Raimar Sandner:
> > On Dienstag, 20. Juni 2017 22:33:34 CEST Wietse Venema wrote:
> > > Raimar Sandner:
> > > > Hi,
> > > > 
> > > > there seems to be a regression after upgrading from postfix 3.1.4 to 
> > > > 3.2.2
> > > > on arch linux. I'm using virtual aliases with
> > > >  ...
> > > > postfix 3.1 will map  [email protected] to [email protected]. 
> > > > This
> > > > is working perfectly fine: When I receive a mail on
> > > > [email protected], postfix 3.1 logs
> > > >  ...
> > > > This setup stopped working with postfix 3.2 with the exact same
> > > > configuration. The extension is not propagated anymore, postfix 3.2 logs
> > > > ...
> > > > How can I restore the behaviour of postfix 3.1? Your help is greatly
> > > > appreciated! I'm glad to provide more information in case I forgot
> > > > something relevant.
> > > That will require a bugfix. After many years, the address mapping
> > > code needed to be cleaned up, and I thought that all the tests would
> > > have caught any incompatibilities, but apparently not.
> > > 
> > >   Wietse
> > 
> > Thanks for the quick reply! I think I will stick with 3.1 for the time 
> > being. 
> > Can I help by reporting the bug somewhere besides here?
> 
> I already located the problem. We don't have a huge list of bugs.

Patch follows. This was a naive attempt to avoid appending an
extension to an address that already had one. It broke with a
delimiter of '.' because domains also contain '.'.

This reverts the behavior to Postfix 3.1.

        Wietse

--- /var/tmp/postfix-3.3-20170617/src/global/mail_addr_crunch.c 2017-01-27 
17:36:22.000000000 -0500
+++ src/global/mail_addr_crunch.c       2017-06-20 19:17:16.000000000 -0400
@@ -120,7 +120,7 @@
        tok822_externalize(extern_addr, tpp[0]->head, TOK822_STR_DEFL);
        canon_addr_external(canon_addr, STR(extern_addr));
        unquote_822_local(intern_addr, STR(canon_addr));
-       if (extension && strchr(STR(intern_addr), *extension) == 0) {
+       if (extension) {
            VSTRING_SPACE(intern_addr, extlen + 1);
            if ((ratsign = strrchr(STR(intern_addr), '@')) == 0) {
                vstring_strcat(intern_addr, extension);

Reply via email to