X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/1058096b8c5317376c1df7473f6ca7c543d20715..4e871f9b28dff4cacfd012aede1d092cc8cfbd36:/test/stderr/5420 diff --git a/test/stderr/5420 b/test/stderr/5420 index 7ac360377..535542d26 100644 --- a/test/stderr/5420 +++ b/test/stderr/5420 @@ -1,4 +1,6 @@ Exim version x.yz .... +environment after trimming: + PATH= adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys configuration file is TESTSUITE/test-config admin user @@ -6,18 +8,25 @@ admin user LOG: smtp_connection MAIN SMTP connection from CALLER ╭considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + ├──────value: myhost.test.ex ├considering: ESMTP Exim $version_number $tod_full ├───────text: ESMTP Exim ├considering: $version_number $tod_full + ├──────value: x.yz ├considering: $tod_full ├───────text: ├considering: $tod_full + ├──────value: Tue, 2 Mar 1999 09:44:33 +0000 ├──expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full ╰─────result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) - in pipelining_advertise_hosts? yes (matched "*") + in pipelining_advertise_hosts? + list element: * + in pipelining_advertise_hosts? yes (matched "*") + in chunking_advertise_hosts? in chunking_advertise_hosts? no (end of list) - in tls_advertise_hosts? yes (matched "*") + list element: * + in tls_advertise_hosts? yes (matched "*") ╭considering: ${if eq {SERVER}{server}{queue}{cutthrough}} ╭considering: SERVER}{server}{queue}{cutthrough}} ├───────text: SERVER @@ -48,26 +57,51 @@ using ACL "cutthrough" processing "accept" (TESTSUITE/test-config 22) check control = cutthrough_delivery check verify = recipient -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: userx + ╰──(tainted) ├──expanding: $local_part ╰─────result: userx ╰──(tainted) -domain.com in "*"? yes (matched "*") +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: userx + ╰──(tainted) ├──expanding: $local_part ╰─────result: userx ╰──(tainted) -domain.com in "*"? yes (matched "*") -Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") +Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... 127.0.0.1 in hosts_try_fastopen? + list element: + connected ╭considering: $primary_hostname + ├──────value: myhost.test.ex ├──expanding: $primary_hostname ╰─────result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 @@ -80,8 +114,44 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP + ╭considering: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╭considering: $host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: 127.0.0.1 + ├considering: }{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $host + ╰─────result: 127.0.0.1 + ╭considering: .outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├───────text: .outlook.com + ├considering: \$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├backslashed: '\$' + ├considering: }} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: .outlook.com\$ + ╰─────result: .outlook.com$ + ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: + ├───scanning: }{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $item + ├─────result: + ╰───skipping: result is not used + ╭───scanning: \N^250-([\w.]+)\s\N}}} {$1}} + ├──protected: ^250-([\w.]+)\s + ├───scanning: }}} {$1}} + ├──expanding: \N^250-([\w.]+)\s\N + ├─────result: ^250-([\w.]+)\s + ╰───skipping: result is not used + ├──condition: and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} + ├─────result: false + ╭───scanning: $1}} + ├───scanning: }} + ├──expanding: $1 + ├─────result: + ╰───skipping: result is not used + ├──expanding: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╰─────result: ╭considering: ${if eq {$address_data}{usery}{*}{:}} ╭considering: $address_data}{usery}{*}{:}} + ├──────value: userx + ╰──(tainted) ├considering: }{usery}{*}{:}} ├──expanding: $address_data ╰─────result: userx @@ -106,9 +176,13 @@ cmd buf flush ddd bytes ╰─────result: : ├──expanding: ${if eq {$address_data}{usery}{*}{:}} ╰─────result: : +127.0.0.1 in hosts_avoid_tls? + list element: 127.0.0.1 in hosts_avoid_tls? no (end of list) ╭considering: ${if eq {$address_data}{userz}{*}{:}} ╭considering: $address_data}{userz}{*}{:}} + ├──────value: userx + ╰──(tainted) ├considering: }{userz}{*}{:}} ├──expanding: $address_data ╰─────result: userx @@ -133,13 +207,20 @@ cmd buf flush ddd bytes ╰─────result: : ├──expanding: ${if eq {$address_data}{userz}{*}{:}} ╰─────result: : +127.0.0.1 in hosts_verify_avoid_tls? + list element: 127.0.0.1 in hosts_verify_avoid_tls? no (end of list) SMTP>> STARTTLS cmd buf flush ddd bytes SMTP<< 220 TLS go ahead + list element: * 127.0.0.1 in tls_verify_hosts? no (option unset) -127.0.0.1 in tls_try_verify_hosts? yes (matched "*") -127.0.0.1 in tls_verify_cert_hostnames? yes (matched "*") +127.0.0.1 in tls_try_verify_hosts? + list element: * + 127.0.0.1 in tls_try_verify_hosts? yes (matched "*") +127.0.0.1 in tls_verify_cert_hostnames? + list element: * + 127.0.0.1 in tls_verify_cert_hostnames? yes (matched "*") SMTP>> EHLO myhost.test.ex cmd buf flush ddd bytes SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4] @@ -200,6 +281,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -247,6 +329,7 @@ end of inline ACL: ACCEPT ╎ ${if def:sender_address {(envelope-from <$sender_address>) ╎ }}id $message_exim_id${if def:received_for { ╎ for $received_for}} + ╎├──────value: CALLER ╎├considering: } }}${if def:sender_helo_name {(helo=$sender_helo_name) ╎ }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std ╎ }}(Exim $version_number) @@ -271,6 +354,7 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: from ${quote_local_part:$sender_ident} ╰─────result: from CALLER + ├───item-res: from CALLER ├considering: ${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -292,6 +376,8 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex + ╰──(tainted) ├considering: ) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -310,6 +396,9 @@ end of inline ACL: ACCEPT ╰─────result: (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: (helo=myhost.test.ex) + + ╰──(tainted) ├considering: }}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -320,6 +409,9 @@ end of inline ACL: ACCEPT ╰─────result: from CALLER (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: from CALLER (helo=myhost.test.ex) + + ╰──(tainted) ├considering: by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -331,6 +423,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex ├considering: ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -355,6 +448,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: local-esmtp ├considering: }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -368,16 +462,21 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: with $received_protocol ╰─────result: with local-esmtp + ├───item-res: with local-esmtp + ╰──(tainted) ├considering: ${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} ├──expanding: ($tls_in_ver) ├─────result: () ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: ${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -396,6 +495,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -412,6 +512,8 @@ end of inline ACL: ACCEPT ├─────result: tls ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -421,6 +523,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: x.yz ├considering: ) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -439,6 +542,7 @@ end of inline ACL: ACCEPT ├considering: $sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: CALLER@myhost.test.ex ├considering: >) }}id $message_exim_id${if def:received_for { for $received_for}} @@ -450,11 +554,15 @@ end of inline ACL: ACCEPT ╰─────result: (envelope-from ) + ├───item-res: (envelope-from ) + + ╰──(tainted) ├considering: id $message_exim_id${if def:received_for { for $received_for}} ├───────text: id ├considering: $message_exim_id${if def:received_for { for $received_for}} + ├──────value: 10HmaX-000000005vi-0000 ├considering: ${if def:received_for { for $received_for}} ├──condition: def:received_for @@ -464,12 +572,17 @@ end of inline ACL: ACCEPT ├───────text: for ├considering: $received_for}} + ├──────value: userx@domain.com + ╰──(tainted) ├considering: }} ├──expanding: for $received_for ╰─────result: for userx@domain.com ╰──(tainted) + ├───item-res: + for userx@domain.com + ╰──(tainted) ├──expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -480,7 +593,7 @@ end of inline ACL: ACCEPT ╰─────result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) - id 10HmaX-0005vi-00 + id 10HmaX-000000005vi-0000 for userx@domain.com ╰──(tainted) ----------- start cutthrough headers send ----------- @@ -489,21 +602,24 @@ end of inline ACL: ACCEPT ├──expanding: ${tod_full} ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . - SMTP<< 250 OK id=10HmaY-0005vi-00 + SMTP<< 250 OK id=10HmaY-000000005vi-0000 LOG: MAIN - >> userx@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmaY-0005vi-00" + >> userx@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmaY-000000005vi-0000" SMTP>> QUIT SMTP<< 221 myhost.test.ex closing connection SMTP(close)>> +cmdlog: '220:EHLO:250-:STARTTLS:220:EHLO:250-:MAIL|:RCPT:250:250:DATA:354:250:QUIT:221' ----------- cutthrough shutdown (delivered) ------------ LOG: MAIN <= CALLER@myhost.test.ex U=CALLER P=local-esmtp S=sss LOG: MAIN Completed LOG: smtp_connection MAIN - SMTP connection from CALLER closed by QUIT ->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> + SMTP connection from CALLER D=qqs closed by QUIT +>>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... +environment after trimming: + PATH= adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys configuration file is TESTSUITE/test-config admin user @@ -511,18 +627,25 @@ admin user LOG: smtp_connection MAIN SMTP connection from CALLER ╭considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + ├──────value: myhost.test.ex ├considering: ESMTP Exim $version_number $tod_full ├───────text: ESMTP Exim ├considering: $version_number $tod_full + ├──────value: x.yz ├considering: $tod_full ├───────text: ├considering: $tod_full + ├──────value: Tue, 2 Mar 1999 09:44:33 +0000 ├──expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full ╰─────result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) - in pipelining_advertise_hosts? yes (matched "*") + in pipelining_advertise_hosts? + list element: * + in pipelining_advertise_hosts? yes (matched "*") + in chunking_advertise_hosts? in chunking_advertise_hosts? no (end of list) - in tls_advertise_hosts? yes (matched "*") + list element: * + in tls_advertise_hosts? yes (matched "*") ╭considering: ${if eq {SERVER}{server}{queue}{cutthrough}} ╭considering: SERVER}{server}{queue}{cutthrough}} ├───────text: SERVER @@ -553,26 +676,51 @@ using ACL "cutthrough" processing "accept" (TESTSUITE/test-config 22) check control = cutthrough_delivery check verify = recipient -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: usery + ╰──(tainted) ├──expanding: $local_part ╰─────result: usery ╰──(tainted) -domain.com in "*"? yes (matched "*") +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: usery + ╰──(tainted) ├──expanding: $local_part ╰─────result: usery ╰──(tainted) -domain.com in "*"? yes (matched "*") -Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") +Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... 127.0.0.1 in hosts_try_fastopen? + list element: + connected ╭considering: $primary_hostname + ├──────value: myhost.test.ex ├──expanding: $primary_hostname ╰─────result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 @@ -585,8 +733,44 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP + ╭considering: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╭considering: $host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: 127.0.0.1 + ├considering: }{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $host + ╰─────result: 127.0.0.1 + ╭considering: .outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├───────text: .outlook.com + ├considering: \$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├backslashed: '\$' + ├considering: }} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: .outlook.com\$ + ╰─────result: .outlook.com$ + ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: + ├───scanning: }{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $item + ├─────result: + ╰───skipping: result is not used + ╭───scanning: \N^250-([\w.]+)\s\N}}} {$1}} + ├──protected: ^250-([\w.]+)\s + ├───scanning: }}} {$1}} + ├──expanding: \N^250-([\w.]+)\s\N + ├─────result: ^250-([\w.]+)\s + ╰───skipping: result is not used + ├──condition: and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} + ├─────result: false + ╭───scanning: $1}} + ├───scanning: }} + ├──expanding: $1 + ├─────result: + ╰───skipping: result is not used + ├──expanding: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╰─────result: ╭considering: ${if eq {$address_data}{usery}{*}{:}} ╭considering: $address_data}{usery}{*}{:}} + ├──────value: usery + ╰──(tainted) ├considering: }{usery}{*}{:}} ├──expanding: $address_data ╰─────result: usery @@ -611,7 +795,9 @@ cmd buf flush ddd bytes ╰───skipping: result is not used ├──expanding: ${if eq {$address_data}{usery}{*}{:}} ╰─────result: * -127.0.0.1 in hosts_avoid_tls? yes (matched "*") +127.0.0.1 in hosts_avoid_tls? + list element: * + 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING not using DSN @@ -665,6 +851,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -712,6 +899,7 @@ end of inline ACL: ACCEPT ╎ ${if def:sender_address {(envelope-from <$sender_address>) ╎ }}id $message_exim_id${if def:received_for { ╎ for $received_for}} + ╎├──────value: CALLER ╎├considering: } }}${if def:sender_helo_name {(helo=$sender_helo_name) ╎ }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std ╎ }}(Exim $version_number) @@ -736,6 +924,7 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: from ${quote_local_part:$sender_ident} ╰─────result: from CALLER + ├───item-res: from CALLER ├considering: ${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -757,6 +946,8 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex + ╰──(tainted) ├considering: ) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -775,6 +966,9 @@ end of inline ACL: ACCEPT ╰─────result: (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: (helo=myhost.test.ex) + + ╰──(tainted) ├considering: }}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -785,6 +979,9 @@ end of inline ACL: ACCEPT ╰─────result: from CALLER (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: from CALLER (helo=myhost.test.ex) + + ╰──(tainted) ├considering: by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -796,6 +993,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex ├considering: ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -820,6 +1018,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: local-esmtp ├considering: }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -833,16 +1032,21 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: with $received_protocol ╰─────result: with local-esmtp + ├───item-res: with local-esmtp + ╰──(tainted) ├considering: ${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} ├──expanding: ($tls_in_ver) ├─────result: () ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: ${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -861,6 +1065,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -877,6 +1082,8 @@ end of inline ACL: ACCEPT ├─────result: tls ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -886,6 +1093,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: x.yz ├considering: ) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -904,6 +1112,7 @@ end of inline ACL: ACCEPT ├considering: $sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: CALLER@myhost.test.ex ├considering: >) }}id $message_exim_id${if def:received_for { for $received_for}} @@ -915,11 +1124,15 @@ end of inline ACL: ACCEPT ╰─────result: (envelope-from ) + ├───item-res: (envelope-from ) + + ╰──(tainted) ├considering: id $message_exim_id${if def:received_for { for $received_for}} ├───────text: id ├considering: $message_exim_id${if def:received_for { for $received_for}} + ├──────value: 10HmaZ-000000005vi-0000 ├considering: ${if def:received_for { for $received_for}} ├──condition: def:received_for @@ -929,12 +1142,17 @@ end of inline ACL: ACCEPT ├───────text: for ├considering: $received_for}} + ├──────value: usery@domain.com + ╰──(tainted) ├considering: }} ├──expanding: for $received_for ╰─────result: for usery@domain.com ╰──(tainted) + ├───item-res: + for usery@domain.com + ╰──(tainted) ├──expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -945,7 +1163,7 @@ end of inline ACL: ACCEPT ╰─────result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) - id 10HmaZ-0005vi-00 + id 10HmaZ-000000005vi-0000 for usery@domain.com ╰──(tainted) ----------- start cutthrough headers send ----------- @@ -954,21 +1172,24 @@ end of inline ACL: ACCEPT ├──expanding: ${tod_full} ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . - SMTP<< 250 OK id=10HmbA-0005vi-00 + SMTP<< 250 OK id=10HmbA-000000005vi-0000 LOG: MAIN - >> usery@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" + >> usery@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-000000005vi-0000" SMTP>> QUIT SMTP<< 221 myhost.test.ex closing connection SMTP(close)>> +cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:DATA:354:250:QUIT:221' ----------- cutthrough shutdown (delivered) ------------ LOG: MAIN <= CALLER@myhost.test.ex U=CALLER P=local-esmtp S=sss LOG: MAIN Completed LOG: smtp_connection MAIN - SMTP connection from CALLER closed by QUIT ->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> + SMTP connection from CALLER D=qqs closed by QUIT +>>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... +environment after trimming: + PATH= adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys configuration file is TESTSUITE/test-config admin user @@ -976,18 +1197,25 @@ admin user LOG: smtp_connection MAIN SMTP connection from CALLER ╭considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + ├──────value: myhost.test.ex ├considering: ESMTP Exim $version_number $tod_full ├───────text: ESMTP Exim ├considering: $version_number $tod_full + ├──────value: x.yz ├considering: $tod_full ├───────text: ├considering: $tod_full + ├──────value: Tue, 2 Mar 1999 09:44:33 +0000 ├──expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full ╰─────result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) - in pipelining_advertise_hosts? yes (matched "*") + in pipelining_advertise_hosts? + list element: * + in pipelining_advertise_hosts? yes (matched "*") + in chunking_advertise_hosts? in chunking_advertise_hosts? no (end of list) - in tls_advertise_hosts? yes (matched "*") + list element: * + in tls_advertise_hosts? yes (matched "*") ╭considering: ${if eq {SERVER}{server}{queue}{cutthrough}} ╭considering: SERVER}{server}{queue}{cutthrough}} ├───────text: SERVER @@ -1018,26 +1246,51 @@ using ACL "cutthrough" processing "accept" (TESTSUITE/test-config 22) check control = cutthrough_delivery check verify = recipient -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: usery + ╰──(tainted) ├──expanding: $local_part ╰─────result: usery ╰──(tainted) -domain.com in "*"? yes (matched "*") +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ -domain.com in "test.ex : *.test.ex"? no (end of list) +domain.com in "! +local_domains"? + list element: ! +local_domains + start sublist local_domains + domain.com in "test.ex : *.test.ex"? + ╎list element: test.ex + ╎list element: *.test.ex + domain.com in "test.ex : *.test.ex"? no (end of list) + end sublist local_domains domain.com in "! +local_domains"? yes (end of list) ╭considering: $local_part + ├──────value: usery + ╰──(tainted) ├──expanding: $local_part ╰─────result: usery ╰──(tainted) -domain.com in "*"? yes (matched "*") -Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected +domain.com in "*"? + list element: * + domain.com in "*"? yes (matched "*") +Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... 127.0.0.1 in hosts_try_fastopen? + list element: + connected ╭considering: $primary_hostname + ├──────value: myhost.test.ex ├──expanding: $primary_hostname ╰─────result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 @@ -1050,8 +1303,44 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP + ╭considering: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╭considering: $host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: 127.0.0.1 + ├considering: }{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $host + ╰─────result: 127.0.0.1 + ╭considering: .outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├───────text: .outlook.com + ├considering: \$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├backslashed: '\$' + ├considering: }} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: .outlook.com\$ + ╰─────result: .outlook.com$ + ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}} {$1}} + ├──────value: + ├───scanning: }{\N^250-([\w.]+)\s\N}}} {$1}} + ├──expanding: $item + ├─────result: + ╰───skipping: result is not used + ╭───scanning: \N^250-([\w.]+)\s\N}}} {$1}} + ├──protected: ^250-([\w.]+)\s + ├───scanning: }}} {$1}} + ├──expanding: \N^250-([\w.]+)\s\N + ├─────result: ^250-([\w.]+)\s + ╰───skipping: result is not used + ├──condition: and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} + ├─────result: false + ╭───scanning: $1}} + ├───scanning: }} + ├──expanding: $1 + ├─────result: + ╰───skipping: result is not used + ├──expanding: ${if and {{match{$host}{.outlook.com\$}} {match{$item}{\N^250-([\w.]+)\s\N}}} {$1}} + ╰─────result: ╭considering: ${if eq {$address_data}{usery}{*}{:}} ╭considering: $address_data}{usery}{*}{:}} + ├──────value: usery + ╰──(tainted) ├considering: }{usery}{*}{:}} ├──expanding: $address_data ╰─────result: usery @@ -1076,7 +1365,9 @@ cmd buf flush ddd bytes ╰───skipping: result is not used ├──expanding: ${if eq {$address_data}{usery}{*}{:}} ╰─────result: * -127.0.0.1 in hosts_avoid_tls? yes (matched "*") +127.0.0.1 in hosts_avoid_tls? + list element: * + 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING not using DSN @@ -1130,6 +1421,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -1177,6 +1469,7 @@ end of inline ACL: ACCEPT ╎ ${if def:sender_address {(envelope-from <$sender_address>) ╎ }}id $message_exim_id${if def:received_for { ╎ for $received_for}} + ╎├──────value: CALLER ╎├considering: } }}${if def:sender_helo_name {(helo=$sender_helo_name) ╎ }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std ╎ }}(Exim $version_number) @@ -1201,6 +1494,7 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: from ${quote_local_part:$sender_ident} ╰─────result: from CALLER + ├───item-res: from CALLER ├considering: ${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -1222,6 +1516,8 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex + ╰──(tainted) ├considering: ) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) @@ -1240,6 +1536,9 @@ end of inline ACL: ACCEPT ╰─────result: (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: (helo=myhost.test.ex) + + ╰──(tainted) ├considering: }}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1250,6 +1549,9 @@ end of inline ACL: ACCEPT ╰─────result: from CALLER (helo=myhost.test.ex) ╰──(tainted) + ├───item-res: from CALLER (helo=myhost.test.ex) + + ╰──(tainted) ├considering: by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1261,6 +1563,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: myhost.test.ex ├considering: ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1285,6 +1588,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: local-esmtp ├considering: }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1298,16 +1602,21 @@ end of inline ACL: ACCEPT for $received_for}} ├──expanding: with $received_protocol ╰─────result: with local-esmtp + ├───item-res: with local-esmtp + ╰──(tainted) ├considering: ${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} ├──expanding: ($tls_in_ver) ├─────result: () ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: ${if def:tls_in_cipher_std { tls $tls_in_cipher_std }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1326,6 +1635,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: ├───scanning: }}(Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) @@ -1342,6 +1652,8 @@ end of inline ACL: ACCEPT ├─────result: tls ╰───skipping: result is not used + ├───item-res: + ╰──(tainted) ├considering: (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -1351,6 +1663,7 @@ end of inline ACL: ACCEPT ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: x.yz ├considering: ) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { @@ -1369,6 +1682,7 @@ end of inline ACL: ACCEPT ├considering: $sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} + ├──────value: CALLER@myhost.test.ex ├considering: >) }}id $message_exim_id${if def:received_for { for $received_for}} @@ -1380,11 +1694,15 @@ end of inline ACL: ACCEPT ╰─────result: (envelope-from ) + ├───item-res: (envelope-from ) + + ╰──(tainted) ├considering: id $message_exim_id${if def:received_for { for $received_for}} ├───────text: id ├considering: $message_exim_id${if def:received_for { for $received_for}} + ├──────value: 10HmbB-000000005vi-0000 ├considering: ${if def:received_for { for $received_for}} ├──condition: def:received_for @@ -1394,12 +1712,17 @@ end of inline ACL: ACCEPT ├───────text: for ├considering: $received_for}} + ├──────value: usery@domain.com + ╰──(tainted) ├considering: }} ├──expanding: for $received_for ╰─────result: for usery@domain.com ╰──(tainted) + ├───item-res: + for usery@domain.com + ╰──(tainted) ├──expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol }}${if def:tls_in_ver { ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std @@ -1410,7 +1733,7 @@ end of inline ACL: ACCEPT ╰─────result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) - id 10HmbB-0005vi-00 + id 10HmbB-000000005vi-0000 for usery@domain.com ╰──(tainted) ----------- start cutthrough headers send ----------- @@ -1419,19 +1742,20 @@ end of inline ACL: ACCEPT ├──expanding: ${tod_full} ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . - SMTP<< 250 OK id=10HmbC-0005vi-00 + SMTP<< 250 OK id=10HmbC-000000005vi-0000 LOG: MAIN - >> usery@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbC-0005vi-00" + >> usery@domain.com R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbC-000000005vi-0000" SMTP>> QUIT SMTP<< 221 myhost.test.ex closing connection SMTP(close)>> +cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:DATA:354:250:QUIT:221' ----------- cutthrough shutdown (delivered) ------------ LOG: MAIN <= CALLER@myhost.test.ex U=CALLER P=local-esmtp S=sss LOG: MAIN Completed LOG: smtp_connection MAIN - SMTP connection from CALLER closed by QUIT ->>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> + SMTP connection from CALLER D=qqs closed by QUIT +>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> ******** SERVER ********