X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/2f8e0a5f6bc17ccd0749c0dc28f5da28da5d25a2..78e481bba25df9e8e0cc4308783d1dbc5d58dc71:/test/stderr/0066 diff --git a/test/stderr/0066 b/test/stderr/0066 index 9769c7126..16a6dddbb 100644 --- a/test/stderr/0066 +++ b/test/stderr/0066 @@ -6,38 +6,69 @@ >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.3.4" in TESTSUITE/aux-var/0066.hostnets) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.3.4] P=smtp S=sss +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.3.4" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key '1.2.3.4' value '1.2.3.4' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.4] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -46,42 +77,73 @@ LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.3.4] P=smtp S= >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "!1.2.3.0/24" in TESTSUITE/aux-var/0066.hostnets) +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "!1.2.3.0/24" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key '1.2.3.5' value '1.2.3.0/24' >>> host in "+relay_hosts"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "deny" (TESTSUITE/test-config 23) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "deny" (TESTSUITE/test-config 23) >>> message: relay not permitted ->>> deny: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": DENY +>>> deny: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: DENY LOG: H=(test) [1.2.3.5] F= rejected RCPT : relay not permitted -LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.3.5] P=smtp S=sss +LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.5] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -90,38 +152,69 @@ LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.3.5] P=smtp S= >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.0.0/16" in TESTSUITE/aux-var/0066.hostnets) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.4.5] P=smtp S=sss +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.0.0/16" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key '1.2.4.5' value '1.2.0.0/16' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.4.5] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -130,45 +223,75 @@ LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=(test) [1.2.4.5] P=smtp S= >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> sender host name required, to match against *-1.test.ex ->>> looking up host name for 1.3.2.4 +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎sender host name required, to match against *-1.test.ex +>>> ╎ looking up host name for 1.3.2.4 LOG: no host name found for IP address 1.3.2.4 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (failed to find host name for 1.3.2.4) +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (failed to find host name for 1.3.2.4) +>>> end sublist relay_hosts >>> host in "+relay_hosts"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "deny" (TESTSUITE/test-config 23) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "deny" (TESTSUITE/test-config 23) >>> message: relay not permitted ->>> deny: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": DENY +>>> deny: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: DENY LOG: H=(test) [1.3.2.4] F= rejected RCPT : relay not permitted -LOG: 10HmbA-0005vi-00 <= userx@somehost.example.com H=(test) [1.3.2.4] P=smtp S=sss +LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.3.2.4] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -177,38 +300,69 @@ LOG: 10HmbA-0005vi-00 <= userx@somehost.example.com H=(test) [1.3.2.4] P=smtp S= >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmbB-0005vi-00 <= userx@somehost.example.com H=(test) [131.111.8.2] P=smtp S=sss +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key '131.111.8.2' value 'net16-lsearch;TESTSUITE/aux-fixed/0066.nets' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [131.111.8.2] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -217,38 +371,69 @@ LOG: 10HmbB-0005vi-00 <= userx@somehost.example.com H=(test) [131.111.8.2] P=smt >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmbC-0005vi-00 <= userx@somehost.example.com H=(test) [192.152.98.3] P=smtp S=sss +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key '192.152.98.3' value 'net24-lsearch;TESTSUITE/aux-fixed/0066.nets' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [192.152.98.3] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -257,43 +442,78 @@ LOG: 10HmbC-0005vi-00 <= userx@somehost.example.com H=(test) [192.152.98.3] P=sm >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> sender host name required, to match against *-1.test.ex ->>> looking up host name for V4NET.0.0.1 ->>> IP address lookup yielded "ten-1.test.ex" ->>> checking addresses for ten-1.test.ex +>>> ╎list element: TESTSUITE/aux-var/0066.hostnets +>>> ╎sender host name required, to match against *-1.test.ex +>>> ╎ looking up host name for V4NET.0.0.1 +>>> ╎ IP address lookup yielded "ten-1.test.ex" +>>> ╎ check dnssec require list +>>> ╎ ten-1.test.ex not in empty list (option unset? cannot trace name) +>>> ╎ check dnssec request list +>>> ╎ ten-1.test.ex not in empty list (option unset? cannot trace name) +>>> ╎ checking addresses for ten-1.test.ex >>> V4NET.0.0.1 OK ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "*-1.test.ex" in TESTSUITE/aux-var/0066.hostnets) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmbD-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex (test) [V4NET.0.0.1] P=smtp S=sss +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "*-1.test.ex" in TESTSUITE/aux-var/0066.hostnets) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.1' value '*-1.test.ex' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmbD-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test) [V4NET.0.0.1] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -302,39 +522,69 @@ LOG: 10HmbD-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex (test) [V4NE >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "black-1.test.ex" in TESTSUITE/aux-fixed/0066.nothosts) +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "black-1.test.ex" in TESTSUITE/aux-fixed/0066.nothosts) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key 'V4NET.11.12.13' value 'black-1.test.ex' >>> host in "+relay_hosts"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "deny" (TESTSUITE/test-config 23) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "deny" (TESTSUITE/test-config 23) >>> message: relay not permitted ->>> deny: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": DENY +>>> deny: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: DENY LOG: H=(test) [V4NET.11.12.13] F= rejected RCPT : relay not permitted -LOG: 10HmbE-0005vi-00 <= userx@somehost.example.com H=(test) [V4NET.11.12.13] P=smtp S=sss +LOG: 10HmbE-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.11.12.13] P=smtp S=sss >>> host in hosts_connection_nolog? no (option unset) >>> host in host_lookup? no (option unset) >>> host in host_reject_connection? no (option unset) @@ -343,35 +593,65 @@ LOG: 10HmbE-0005vi-00 <= userx@somehost.example.com H=(test) [V4NET.11.12.13] P= >>> 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) +>>> test in helo_lookup_domains? +>>> list element: @ +>>> list element: @[] >>> test in helo_lookup_domains? no (end of list) >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> test.ex in "test.ex : myhost.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 : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎test.ex in "test.ex : myhost.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 >>> using ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 20) +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 20) >>> check domains = +local_domains ->>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> anotherhost.example.com in "+local_domains"? +>>> list element: +local_domains +>>> start sublist local_domains +>>> anotherhost.example.com in "test.ex : myhost.ex"? +>>> ╎list element: test.ex +>>> ╎list element: myhost.ex +>>> anotherhost.example.com in "test.ex : myhost.ex"? no (end of list) +>>> end sublist local_domains >>> anotherhost.example.com in "+local_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 21) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 21) >>> check domains = +relay_domains ->>> anotherhost.example.com in "test.ex"? no (end of list) +>>> anotherhost.example.com in "+relay_domains"? +>>> list element: +relay_domains +>>> start sublist relay_domains +>>> anotherhost.example.com in "test.ex"? +>>> ╎list element: test.ex +>>> anotherhost.example.com in "test.ex"? no (end of list) +>>> end sublist relay_domains >>> anotherhost.example.com in "+relay_domains"? no (end of list) ->>> accept: condition test failed in ACL "check_recipient" ->>> processing "accept" (TESTSUITE/test-config 22) +>>> accept: condition test failed in ACL check_recipient +>>> processing ACL check_recipient "accept" (TESTSUITE/test-config 22) >>> check hosts = +relay_hosts +>>> host in "+relay_hosts"? +>>> list element: +relay_hosts +>>> start sublist relay_hosts +>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? +>>> ╎list element: !TESTSUITE/aux-fixed/0066.nothosts MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=black-1.test.ex address=V4NET.11.12.13 MUNGED: ::1 will be omitted in what follows >>> get[host|ipnode]byname[2] looked up these IP addresses: >>> name=ten-3.test.ex address=V4NET.0.0.3 ->>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "!ten-3.test.ex" in TESTSUITE/aux-fixed/0066.nothosts) ->>> host in "+relay_hosts"? yes (matched "+relay_hosts") ->>> accept: condition test succeeded in ACL "check_recipient" ->>> end of ACL "check_recipient": ACCEPT -LOG: 10HmbF-0005vi-00 <= userx@somehost.example.com H=(test) [V4NET.0.0.3] P=smtp S=sss +>>> ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "!ten-3.test.ex" in TESTSUITE/aux-fixed/0066.nothosts) +>>> end sublist relay_hosts +>>> data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.3' value 'ten-3.test.ex' +>>> host in "+relay_hosts"? yes (matched "+relay_hosts") +>>> accept: condition test succeeded in ACL check_recipient +>>> end of ACL check_recipient: ACCEPT +LOG: 10HmbF-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.3] P=smtp S=sss