>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
->>> list element:
->>> list element: @
->>> list element: @[]
+>>> test in helo_lookup_domains?
+>>> list element: @
+>>> list element: @[]
>>> test in helo_lookup_domains? no (end of list)
>>> using ACL "check_recipient"
->>> processing "require" (TESTSUITE/test-config 21)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing unknown@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> unknown in "defer"? no (end of list)
->>> list element: userx
->>> unknown in "userx"? no (end of list)
+>>> 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 local_parts? no (end of list)
+>>> unknown in local_parts?
+>>> list element: userx
+>>> unknown in local_parts? no (end of list)
>>> no more routers
>>> ----------- end verify ------------
->>> require: condition test failed in ACL "check_recipient"
->>> end of ACL "check_recipient": not OK
+>>> require: condition test failed in ACL check_recipient
+>>> end of ACL check_recipient: not OK
LOG: H=(test) [127.0.0.1] sender verify fail for <unknown@test.ex>: Unrouteable address
LOG: H=(test) [127.0.0.1] F=<unknown@test.ex> rejected RCPT <userx@test.ex>: Sender verify failed
>>> using ACL "check_recipient"
->>> processing "require" (TESTSUITE/test-config 21)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@unknown.dom.ain
->>> list element: ! +local_domains
->>> 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 ------------
->>> require: condition test failed in ACL "check_recipient"
->>> end of ACL "check_recipient": not OK
+>>> require: condition test failed in ACL check_recipient
+>>> end of ACL check_recipient: not OK
LOG: H=(test) [127.0.0.1] sender verify fail for <userx@unknown.dom.ain>: unrouteable mail domain "unknown.dom.ain"
LOG: H=(test) [127.0.0.1] F=<userx@unknown.dom.ain> rejected RCPT <userx@test.ex>: Sender verify failed
->>> list element: *
->>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
+>>> host in smtp_accept_max_nonmail_hosts?
+>>> list element: *
+>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"
->>> processing "require" (TESTSUITE/test-config 21)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing "unknown with spaces"@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> unknown with spaces in "defer"? no (end of list)
->>> list element: userx
->>> unknown with spaces in "userx"? no (end of list)
+>>> 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 local_parts? no (end of list)
+>>> unknown with spaces in local_parts?
+>>> list element: userx
+>>> unknown with spaces in local_parts? no (end of list)
>>> no more routers
>>> ----------- end verify ------------
->>> require: condition test failed in ACL "check_recipient"
->>> end of ACL "check_recipient": not OK
+>>> require: condition test failed in ACL check_recipient
+>>> end of ACL check_recipient: not OK
LOG: H=(test) [127.0.0.1] sender verify fail for <"unknown with spaces"@test.ex>: Unrouteable address
LOG: H=(test) [127.0.0.1] F=<"unknown with spaces"@test.ex> rejected RCPT <userx@test.ex>: Sender verify failed
>>> using ACL "check_recipient"
->>> processing "require" (TESTSUITE/test-config 21)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> userx in "defer"? no (end of list)
->>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> 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 local_parts? no (end of list)
+>>> userx in local_parts?
+>>> list element: userx
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
->>> require: condition test succeeded in ACL "check_recipient"
->>> processing "accept" (TESTSUITE/test-config 22)
+>>> require: condition test succeeded in ACL check_recipient
+>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22)
>>> check domains = +local_domains
->>> list element: +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "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
+>>> test.ex in "+local_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 "+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)
>>> using ACL "check_message"
->>> processing "require" (TESTSUITE/test-config 27)
+>>> processing ACL check_message "require" (TESTSUITE/test-config 27)
>>> check verify = header_sender
>>> verifying From: header address unknown@test.ex
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing unknown@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> unknown in "defer"? no (end of list)
->>> list element: userx
->>> unknown in "userx"? no (end of list)
+>>> 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 local_parts? no (end of list)
+>>> unknown in local_parts?
+>>> list element: userx
+>>> 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
+>>> require: condition test failed in ACL check_message
+>>> end of ACL check_message: not OK
+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)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> userx in "defer"? no (end of list)
->>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> 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 local_parts? no (end of list)
+>>> userx in local_parts?
+>>> list element: userx
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
->>> require: condition test succeeded in ACL "check_recipient"
->>> processing "accept" (TESTSUITE/test-config 22)
+>>> require: condition test succeeded in ACL check_recipient
+>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22)
>>> check domains = +local_domains
->>> list element: +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "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
+>>> test.ex in "+local_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 "+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)
+>>> processing ACL check_message "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 "<>"
+>>> require: condition test failed in ACL check_message
+>>> end of ACL check_message: not OK
+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)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing defer@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> defer in "defer"? yes (matched "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 local_parts? yes (matched "defer")
>>> calling defer router
>>> defer router: defer for defer@test.ex
>>> message: forced defer
>>> ----------- end verify ------------
->>> require: condition test deferred in ACL "check_recipient"
+>>> require: condition test deferred in ACL check_recipient
LOG: H=(test) [127.0.0.1] sender verify defer for <defer@test.ex>: forced defer
LOG: H=(test) [127.0.0.1] F=<defer@test.ex> temporarily rejected RCPT <userx@test.ex>: Could not complete sender verify
>>> using ACL "check_recipient"
->>> processing "require" (TESTSUITE/test-config 21)
+>>> processing ACL check_recipient "require" (TESTSUITE/test-config 21)
>>> check verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> userx in "defer"? no (end of list)
->>> list element: userx
->>> userx in "userx"? yes (matched "userx")
+>>> 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 local_parts? no (end of list)
+>>> userx in local_parts?
+>>> list element: userx
+>>> userx in local_parts? yes (matched "userx")
>>> calling userx router
>>> routed by userx router
>>> ----------- end verify ------------
->>> require: condition test succeeded in ACL "check_recipient"
->>> processing "accept" (TESTSUITE/test-config 22)
+>>> require: condition test succeeded in ACL check_recipient
+>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22)
>>> check domains = +local_domains
->>> list element: +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "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
+>>> test.ex in "+local_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 "+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)
>>> using ACL "check_message"
->>> processing "require" (TESTSUITE/test-config 27)
+>>> processing ACL check_message "require" (TESTSUITE/test-config 27)
>>> check verify = header_sender
>>> verifying from: header address <defer@test.ex>
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing defer@test.ex
->>> list element: ! +local_domains
->>> list element: test.ex
->>> test.ex in "test.ex"? yes (matched "test.ex")
->>> test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list element: defer
->>> defer in "defer"? yes (matched "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 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
+>>> require: condition test deferred in ACL check_message
+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)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
->>> list element:
->>> list element: @
->>> list element: @[]
+>>> foo.bar in helo_lookup_domains?
+>>> 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)
->>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
+>>> 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)
->>> list element: *
->>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
->>> list element: @
->>> list element: @[]
+>>> host in smtp_accept_max_nonmail_hosts?
+>>> list element: *
+>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
+>>> foo.bar in helo_lookup_domains?
+>>> 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)
->>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
+>>> 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)
->>> list element: @
->>> list element: @[]
+>>> foo.bar in helo_lookup_domains?
+>>> 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)
->>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
+>>> 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)
->>> list element: @
->>> list element: @[]
+>>> foo.bar in helo_lookup_domains?
+>>> 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)
->>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
->>> host in chunking_advertise_hosts? no (end of list)
->>> list element: @
->>> list element: @[]
->>> foo.bar in helo_lookup_domains? no (end of list)
->>> host in dsn_advertise_hosts? no (option unset)
->>> list element: *
->>> host in pipelining_advertise_hosts? yes (matched "*")
+>>> 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)