[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

HELP: lower-case aliases to upper-case accounts ending up in bitbucket



We have mixed-case accounts with names like Ab_37 on our system.
We have lower-case aliases pointing to the mixed-case accounts, like

ab_37:Ab_37

After upgrading from zmailer 2.99.49p10 to 2.99.50-s11, mail to ab_37 or
Ab_37 ends up in the bitbucket. It looks like the router wants to
infinite-loop on the address for some reason, so it gives up and sends it
to bitbucket.

z# router Ab_37
<michael.interactive@halifax.chebucto.ns.ca>: address: Ab_37
(((bitbucket Ab_371 Ab_37 g1)))
             ^^^^^^ note trailing 1

scheduler.perflog shows a line like:
926222550 32654-5356 7 12 ok3 bitbucket/ab_37@chebucto.ns.ca1

How do we prevent this infinite looping? Adding a backslash like:
ab_37:\Ab_37
doesn't change anything.

I've attached the output from router -i:
z# rtrace on
z# router Ab_37 > router.a3 2>&1

Thanks
    router Ab_37
        attributes=default_attributes
        : default_attributes
        defer=''
        log address: Ab_37
            get (get envelopeinfo message-id) <0>
            echo <michael.interactive@halifax.chebucto.ns.ca>: address: Ab_37
        db flush expansions
        msgidfilter Ab_37 default_attributes
            return (return 0) <0>
        tmp=''
        rrouter Ab_37 Ab_37 default_attributes ''
            didhostexpand=''
            fqdn_neighbour Ab_37 Ab_37 default_attributes
                get (get default_attributes type) <0>
                recase -l Ab_37
                lcaddress=ab_37
                plustail=''
                tcomparing '^(.+)@(.+)$' and 'ab_37'
                tcomparing '^.*$' and 'ab_37'
                tmatched '^.*$' and 'ab_37'
                return (return 1) <0>
?=1
?=1
?=1
            tmp=''
?=1
            condquote Ab_37
            address=Ab_37
            scomparing '^"(.*)"<(.*)$' and 'Ab_37'
            scomparing '^"(.*)">(.*)$' and 'Ab_37'
            scomparing '^([\"].*[\"])<(.*)$' and 'Ab_37'
            scomparing '^([\"].*[\"])>(.*)$' and 'Ab_37'
            canonicalize Ab_37
                dequote Ab_37
                address=Ab_37
                scomparing '^(/.+)@(.+)$' and 'Ab_37'
                scomparing '^((\|.+)|(/.+)|(:include:.+))$' and 'Ab_37'
                tcomparing '^((<>)|(:;))$' and 'Ab_37'
                tcomparing '^(.*)<@(.*)>(.*)$' and 'Ab_37'
                tcomparing '^(@.+),(.+)$' and 'Ab_37'
                tcomparing '^(@.+):(.+:.+)$' and 'Ab_37'
                tcomparing '^@([^,:]+)([,:].+)$' and 'Ab_37'
                tcomparing '^(.*)::(.*)$' and 'Ab_37'
                tcomparing '^(.*)@([^@]*.uucp)$' and 'Ab_37'
                tcomparing '^(.*)@([^@]*)$' and 'Ab_37'
                tcomparing '^\[(.*)\]!(.*)$' and 'Ab_37'
                tcomparing '^([^!.]*)!(.*)$' and 'Ab_37'
                tcomparing '^([^!]*)!(.*)$' and 'Ab_37'
                tcomparing '^(.*)%([^%]*)$' and 'Ab_37'
                echo Ab_37
            address=Ab_37
            tcomparing '^@$' and 'Ab_37'
            tcomparing '^(.*)<@\[(.+)\]>(.*)$' and 'Ab_37'
            tcomparing '^(.*)<@(.*)\.>(.*)$' and 'Ab_37'
            tcomparing '^(.*)<@(.*)(ns.ca)>(.*)$' and 'Ab_37'
            tcomparing '^<@(.*)>[:,](.+)@(.+)$' and 'Ab_37'
            tcomparing '^<@(ns.ca)>[:,](.+)@(.+)$' and 'Ab_37'
            tcomparing '^(.+)<@(.+)>(.*)$' and 'Ab_37'
            tcomparing '^<@>.(.+)$' and 'Ab_37'
            tcomparing '^(.+)<@>$' and 'Ab_37'
            tcomparing '^(.*)<@(.+)>(.*)$' and 'Ab_37'
            scomparing '^\\(.+)$' and 'Ab_37'
            scomparing '^/.+$' and 'Ab_37'
            scomparing '^\|.+$' and 'Ab_37'
            scomparing '^:include:.+$' and 'Ab_37'
            scomparing '^.*$' and 'Ab_37'
            smatched '^.*$' and 'Ab_37'
            [ -z  ]
            domain=@chebucto.ns.ca
            tmp=(local Ab_37 Ab_37 default_attributes)
            routeuser (local Ab_37 Ab_37 default_attributes) '' @chebucto.ns.ca
                plustail2=''
                attributes (attributes (local Ab_37 Ab_37 default_attributes)) <0>
                attr=default_attributes
                channel (channel (local Ab_37 Ab_37 default_attributes)) <0>
                chan=local
                get (get default_attributes type) <0>
                a=(local Ab_37 Ab_37 default_attributes)
                user (user (local Ab_37 Ab_37 default_attributes)) <0>
                user=Ab_37
                host (host (local Ab_37 Ab_37 default_attributes)) <0>
                key=localAb_37Ab_37
                %dblookup (expansions localAb_37Ab_37) <0>
expansions(localAb_37Ab_37)
?=1
?=1
                didexpand=''
?=1
                [ -n  ]
?=1
                al=nil
?=1
                channel (channel (local Ab_37 Ab_37 default_attributes)) <0>
                user (user (local Ab_37 Ab_37 default_attributes)) <0>
                condquote Ab_37
                user=Ab_37
                host (host (local Ab_37 Ab_37 default_attributes)) <0>
                condquote Ab_37
                host=Ab_37
                [ -n  ]
?=1
                scomparing '^\\(.*)$' and 'Ab_37'
                scomparing '^:include:(.+)$' and 'Ab_37'
                scomparing '^[|/].*$' and 'Ab_37'
?=1
                [ -z  ]
                aliases Ab_37
                    %dblookup (aliasesdb Ab_37) <0>
aliasesdb(Ab_37)
aliasesdb(ab_37) = Ab_37
... terminating cache[0]
... added ab_37 to cache
                    a=Ab_37
                    db owner aliasesdb
                    filepriv -M 644 /csuite/zmailer/db/aliases.ndbm 0
                    priv=0
                    return (return Ab_37) <0>
                a=Ab_37
                db add expansions localAb_37Ab_37 alias
                newattribute default_attributes privilege 0
                    gensym
                    a=g0
                    eval g0=$default_attributes
                        g0=(privilege nobody type recipient)
?=7
?=7
                    [ 2 != 0 ]
                    lreplace (lreplace g0 privilege 0) <0>
?=1
                    shift
                    shift
                    [ 0 != 0 ]
?=1
?=1
                    echo g0
                nattr=g0
                echo Ab_37
                listaddresses -E root -e root -c Ab_37 file expansion
                maprrouter g0 Ab_37 Ab_37 '' @chebucto.ns.ca
                    al=nil
                    read address
                    address=Ab_37
                    defer=''
                    rrouter Ab_37 Ab_37 g0 '' @chebucto.ns.ca
                        didhostexpand=''
                        fqdn_neighbour Ab_37 Ab_37 g0
                            get (get g0 type) <0>
                            recase -l Ab_37
                            lcaddress=ab_37
                            plustail=''
                            tcomparing '^(.+)@(.+)$' and 'ab_37'
                            tcomparing '^.*$' and 'ab_37'
                            tmatched '^.*$' and 'ab_37'
                            return (return 1) <0>
?=1
?=1
?=1
                        tmp=''
?=1
                        condquote Ab_37
                        address=Ab_37
                        scomparing '^"(.*)"<(.*)$' and 'Ab_37'
                        scomparing '^"(.*)">(.*)$' and 'Ab_37'
                        scomparing '^([\"].*[\"])<(.*)$' and 'Ab_37'
                        scomparing '^([\"].*[\"])>(.*)$' and 'Ab_37'
                        canonicalize Ab_37
                            dequote Ab_37
                            address=Ab_37
                            scomparing '^(/.+)@(.+)$' and 'Ab_37'
                            scomparing '^((\|.+)|(/.+)|(:include:.+))$' and 'Ab_37'
                            tcomparing '^((<>)|(:;))$' and 'Ab_37'
                            tcomparing '^(.*)<@(.*)>(.*)$' and 'Ab_37'
                            tcomparing '^(@.+),(.+)$' and 'Ab_37'
                            tcomparing '^(@.+):(.+:.+)$' and 'Ab_37'
                            tcomparing '^@([^,:]+)([,:].+)$' and 'Ab_37'
                            tcomparing '^(.*)::(.*)$' and 'Ab_37'
                            tcomparing '^(.*)@([^@]*.uucp)$' and 'Ab_37'
                            tcomparing '^(.*)@([^@]*)$' and 'Ab_37'
                            tcomparing '^\[(.*)\]!(.*)$' and 'Ab_37'
                            tcomparing '^([^!.]*)!(.*)$' and 'Ab_37'
                            tcomparing '^([^!]*)!(.*)$' and 'Ab_37'
                            tcomparing '^(.*)%([^%]*)$' and 'Ab_37'
                            echo Ab_37
                        address=Ab_37
                        tcomparing '^@$' and 'Ab_37'
                        tcomparing '^(.*)<@\[(.+)\]>(.*)$' and 'Ab_37'
                        tcomparing '^(.*)<@(.*)\.>(.*)$' and 'Ab_37'
                        tcomparing '^(.*)<@(.*)(ns.ca)>(.*)$' and 'Ab_37'
                        tcomparing '^<@(.*)>[:,](.+)@(.+)$' and 'Ab_37'
                        tcomparing '^<@(ns.ca)>[:,](.+)@(.+)$' and 'Ab_37'
                        tcomparing '^(.+)<@(.+)>(.*)$' and 'Ab_37'
                        tcomparing '^<@>.(.+)$' and 'Ab_37'
                        tcomparing '^(.+)<@>$' and 'Ab_37'
                        tcomparing '^(.*)<@(.+)>(.*)$' and 'Ab_37'
                        scomparing '^\\(.+)$' and 'Ab_37'
                        scomparing '^/.+$' and 'Ab_37'
                        scomparing '^\|.+$' and 'Ab_37'
                        scomparing '^:include:.+$' and 'Ab_37'
                        scomparing '^.*$' and 'Ab_37'
                        smatched '^.*$' and 'Ab_37'
                        [ -z @chebucto.ns.ca ]
?=1
?=1
?=1
                        tmp=(local Ab_37 Ab_37 g0)
?=1
                        routeuser (local Ab_37 Ab_37 g0) '' @chebucto.ns.ca
                            plustail2=''
                            attributes (attributes (local Ab_37 Ab_37 g0)) <0>
                            attr=g0
                            channel (channel (local Ab_37 Ab_37 g0)) <0>
                            chan=local
                            get (get g0 type) <0>
                            a=(local Ab_37 Ab_37 g0)
                            user (user (local Ab_37 Ab_37 g0)) <0>
                            user=Ab_37
                            host (host (local Ab_37 Ab_37 g0)) <0>
                            key=localAb_37Ab_37
                            %dblookup (expansions localAb_37Ab_37) <0>
expansions(localAb_37Ab_37)
expansions(localab_37ab_37) = alias
                            didexpand=alias
                            [ -n alias ]
                            host (host (local Ab_37 Ab_37 g0)) <0>
                            user (user (local Ab_37 Ab_37 g0)) <0>
                            attributes (attributes (local Ab_37 Ab_37 g0)) <0>
                            return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
                        return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
                    shh=(((bitbucket Ab_371 Ab_37 g0)))
                    [  ]
?=1
                    defer=''
?=1
                    lappend (lappend al (((bitbucket Ab_371 Ab_37 g0)))) <0>
?=1
                    read address
?=1
?=1
                    return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
                return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
            return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
        res=(((bitbucket Ab_371 Ab_37 g0)))
        [  ]
?=1
?=1
        return (return (((bitbucket Ab_371 Ab_37 g0)))) <0>
(((bitbucket Ab_371 Ab_37 g0)))