>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing unknown@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> unknown in local_parts?
>>> list element: defer
->>> unknown in "defer"? no (end of list)
->>> unknown in "userx"?
+>>> unknown in local_parts? no (end of list)
+>>> unknown in local_parts?
>>> list element: userx
->>> unknown in "userx"? no (end of list)
+>>> unknown in local_parts? no (end of list)
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@unknown.dom.ain
->>> unknown.dom.ain in "! +local_domains"?
->>> list element: ! +local_domains
->>> unknown.dom.ain in "test.ex"?
->>> list element: test.ex
->>> unknown.dom.ain in "test.ex"? no (end of list)
->>> unknown.dom.ain in "! +local_domains"? yes (end of list)
+>>> unknown.dom.ain in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> unknown.dom.ain in "test.ex"?
+>>> ╎list element: test.ex
+>>> unknown.dom.ain in "test.ex"? no (end of list)
+>>> end sublist local_domains
+>>> unknown.dom.ain in domains? yes (end of list)
>>> calling fail_remote_domains router
>>> fail_remote_domains router forced address failure
>>> ----------- end verify ------------
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing "unknown with spaces"@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown with spaces in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> unknown with spaces in local_parts?
>>> list element: defer
->>> unknown with spaces in "defer"? no (end of list)
->>> unknown with spaces in "userx"?
+>>> unknown with spaces in local_parts? no (end of list)
+>>> unknown with spaces in local_parts?
>>> list element: userx
->>> unknown with spaces in "userx"? no (end of list)
+>>> unknown with spaces in local_parts? no (end of list)
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> userx in local_parts?
>>> list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
>>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
>>> check domains = +local_domains
>>> test.ex in "+local_domains"?
>>> list element: +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
>>> test.ex in "+local_domains"? yes (matched "+local_domains")
>>> accept: condition test succeeded in ACL "check_recipient"
>>> end of ACL "check_recipient": ACCEPT
>>> verifying From: header address unknown@test.ex
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing unknown@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> unknown in local_parts?
>>> list element: defer
->>> unknown in "defer"? no (end of list)
->>> unknown in "userx"?
+>>> unknown in local_parts? no (end of list)
+>>> unknown in local_parts?
>>> list element: userx
->>> unknown in "userx"? no (end of list)
+>>> unknown in local_parts? no (end of list)
>>> no more routers
>>> require: condition test failed in ACL "check_message"
>>> end of ACL "check_message": not OK
-LOG: 10HmaX-0005vi-00 H=(test) [127.0.0.1] F=<userx@test.ex> rejected after DATA: there is no valid sender in any header line
+LOG: 10HmaX-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> rejected after DATA: there is no valid sender in any header line
>>> using ACL "check_recipient"
>>> processing "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> userx in local_parts?
>>> list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
>>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
>>> check domains = +local_domains
>>> test.ex in "+local_domains"?
>>> list element: +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
>>> test.ex in "+local_domains"? yes (matched "+local_domains")
>>> accept: condition test succeeded in ACL "check_recipient"
>>> end of ACL "check_recipient": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
+LOG: 10HmaY-000000005vi-0000 qualify/rewrite: missing or malformed local part
>>> using ACL "check_message"
>>> processing "require" (TESTSUITE/test-config 27)
>>> check verify = header_sender
>>> verifying From: header address <>
>>> require: condition test failed in ACL "check_message"
>>> end of ACL "check_message": not OK
-LOG: 10HmaY-0005vi-00 H=(test) [127.0.0.1] F=<userx@test.ex> rejected after DATA: syntax error in 'From:' header when scanning for sender: missing or malformed local part in "<>"
+LOG: 10HmaY-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> rejected after DATA: syntax error in 'From:' header when scanning for sender: missing or malformed local part in "<>"
>>> using ACL "check_recipient"
>>> processing "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing defer@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> defer in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> defer in local_parts?
>>> list element: defer
->>> defer in "defer"? yes (matched "defer")
+>>> defer in local_parts? yes (matched "defer")
>>> calling defer router
>>> defer router: defer for defer@test.ex
>>> message: forced defer
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> userx in local_parts?
>>> list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
>>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
>>> check domains = +local_domains
>>> test.ex in "+local_domains"?
>>> list element: +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
>>> test.ex in "+local_domains"? yes (matched "+local_domains")
>>> accept: condition test succeeded in ACL "check_recipient"
>>> end of ACL "check_recipient": ACCEPT
>>> verifying from: header address <defer@test.ex>
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing defer@test.ex
->>> test.ex in "! +local_domains"?
->>> list element: ! +local_domains
->>> test.ex in "test.ex"?
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> defer in "defer"?
+>>> test.ex in domains?
+>>> list element: !░+local_domains
+>>> start sublist local_domains
+>>> test.ex in "test.ex"?
+>>> ╎list element: test.ex
+>>> ╎test.ex in "test.ex"? yes (matched "test.ex")
+>>> end sublist local_domains
+>>> data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+>>> test.ex in domains? no (matched "! +local_domains")
+>>> defer in local_parts?
>>> list element: defer
->>> defer in "defer"? yes (matched "defer")
+>>> defer in local_parts? yes (matched "defer")
>>> calling defer router
>>> defer router: defer for defer@test.ex
>>> message: forced defer
>>> require: condition test deferred in ACL "check_message"
-LOG: 10HmaZ-0005vi-00 H=(test) [127.0.0.1] F=<userx@test.ex> temporarily rejected after DATA: all attempts to verify a sender in a header line deferred
+LOG: 10HmaZ-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> temporarily rejected after DATA: all attempts to verify a sender in a header line deferred
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> list element: @
>>> list element: @[]
>>> foo.bar in helo_lookup_domains? no (end of list)
+>>> list element: *
+>>> host in limits_advertise_hosts? yes (matched "*")
>>> host in dsn_advertise_hosts? no (option unset)
>>> host in pipelining_advertise_hosts?
>>> list element: *
>>> list element: @
>>> list element: @[]
>>> foo.bar in helo_lookup_domains? no (end of list)
->>> host in dsn_advertise_hosts? no (option unset)
->>> host in pipelining_advertise_hosts?
>>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
->>> host in chunking_advertise_hosts?
->>> host in chunking_advertise_hosts? no (end of list)
->>> foo.bar in helo_lookup_domains?
->>> list element: @
->>> list element: @[]
->>> foo.bar in helo_lookup_domains? no (end of list)
+>>> host in limits_advertise_hosts? yes (matched "*")
>>> host in dsn_advertise_hosts? no (option unset)
>>> host in pipelining_advertise_hosts?
>>> list element: *
>>> list element: @
>>> list element: @[]
>>> foo.bar in helo_lookup_domains? no (end of list)
+>>> list element: *
+>>> host in limits_advertise_hosts? yes (matched "*")
>>> host in dsn_advertise_hosts? no (option unset)
>>> host in pipelining_advertise_hosts?
>>> list element: *
>>> list element: @
>>> list element: @[]
>>> foo.bar in helo_lookup_domains? no (end of list)
+>>> list element: *
+>>> host in limits_advertise_hosts? yes (matched "*")
>>> host in dsn_advertise_hosts? no (option unset)
>>> host in pipelining_advertise_hosts?
>>> list element: *