Taint: reject or log more tainted list metadata elements
[exim.git] / test / stderr / 5420
index a09e869949a24e1efb0a8f173b851cbbb922e128..6fad569adb44d01d88aecfd9f40deb48a6d61e51 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -30,6 +31,7 @@ try option acl_smtp_helo
  list element: *
   in limits_advertise_hosts? yes (matched "*")
  in dsn_advertise_hosts? no (option unset)
+try option acl_smtp_atrn
 try option acl_smtp_etrn
 try option acl_smtp_vrfy
 try option acl_smtp_expn
@@ -43,16 +45,17 @@ try option acl_smtp_expn
 try option acl_smtp_mail
 try option acl_smtp_rcpt
  ╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
-  ╭considering: SERVER}{server}{queue}{cutthrough}}
-  ├───────text: SERVER
-  ├considering: }{server}{queue}{cutthrough}}
-  ├───expanded: SERVER
-  ╰─────result: SERVER
-  ╭considering: server}{queue}{cutthrough}}
-  ├───────text: server
-  ├considering: }{queue}{cutthrough}}
-  ├───expanded: server
-  ╰─────result: server
+  cond: eq
+   ╭considering: SERVER}{server}{queue}{cutthrough}}
+   ├───────text: SERVER
+   ├considering: }{server}{queue}{cutthrough}}
+   ├───expanded: SERVER
+   ╰─────result: SERVER
+   ╭considering: server}{queue}{cutthrough}}
+   ├───────text: server
+   ├considering: }{queue}{cutthrough}}
+   ├───expanded: server
+   ╰─────result: server
  ├──condition: eq░{SERVER}{server}
  ├─────result: false
   ╭───scanning: queue}{cutthrough}}
@@ -69,7 +72,7 @@ try option acl_smtp_rcpt
  ├───expanded: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
  ╰─────result: cutthrough
 using ACL "cutthrough"
-processing "accept" (TESTSUITE/test-config 22)
+processing ACL cutthrough "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
 domain.com in domains?
@@ -93,12 +96,14 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
-accept: condition test succeeded in ACL "cutthrough"
-end of ACL "cutthrough": ACCEPT
+accept: condition test succeeded in ACL cutthrough
+end of ACL cutthrough: ACCEPT
 ----------- start cutthrough setup ------------
 domain.com in domains?
  list element: !░+local_domains
@@ -121,9 +126,11 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 try option interface
 Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
 try option dscp
@@ -148,30 +155,33 @@ cmd buf flush ddd bytes
          250 HELP
 try option host_name_extract
  ╭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}}
-  ├───expanded: $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}}
-  ├───expanded: .outlook.com\$
-  ╰─────result: .outlook.com$
-  ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──────value: 
-  ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├───expanded: $item
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
-  ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──protected: ^250-([\w.]+)\s
-  ├───scanning: }}}░{$1}}
-  ├───expanded: \N^250-([\w.]+)\s\N
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
+  cond: and
+   cond: match
+   ╎╭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}}
+   ╎├───expanded: $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}}
+   ╎├───expanded: .outlook.com\$
+   ╎╰─────result: .outlook.com$
+   cond: match
+   ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──────value: 
+   ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├───expanded: $item
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
+   ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──protected: ^250-([\w.]+)\s
+   ╎├───scanning: }}}░{$1}}
+   ╎├───expanded: \N^250-([\w.]+)\s\N
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
  ├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
  ├─────result: false
   ╭───scanning: $1}}
@@ -182,18 +192,19 @@ try option host_name_extract
  ├───expanded: ${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}{*}{:}}
-  ├───expanded: $address_data
-  ╰─────result: userx
-             ╰──(tainted)
-  ╭considering: usery}{*}{:}}
-  ├───────text: usery
-  ├considering: }{*}{:}}
-  ├───expanded: usery
-  ╰─────result: usery
+  cond: eq
+   ╭considering: $address_data}{usery}{*}{:}}
+   ├──────value: userx
+              ╰──(tainted)
+   ├considering: }{usery}{*}{:}}
+   ├───expanded: $address_data
+   ╰─────result: userx
+              ╰──(tainted)
+   ╭considering: usery}{*}{:}}
+   ├───────text: usery
+   ├considering: }{*}{:}}
+   ├───expanded: usery
+   ╰─────result: usery
  ├──condition: eq░{$address_data}{usery}
  ├─────result: false
   ╭───scanning: *}{:}}
@@ -213,18 +224,19 @@ try option host_name_extract
  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}{*}{:}}
-  ├───expanded: $address_data
-  ╰─────result: userx
-             ╰──(tainted)
-  ╭considering: userz}{*}{:}}
-  ├───────text: userz
-  ├considering: }{*}{:}}
-  ├───expanded: userz
-  ╰─────result: userz
+  cond: eq
+   ╭considering: $address_data}{userz}{*}{:}}
+   ├──────value: userx
+              ╰──(tainted)
+   ├considering: }{userz}{*}{:}}
+   ├───expanded: $address_data
+   ╰─────result: userx
+              ╰──(tainted)
+   ╭considering: userz}{*}{:}}
+   ├───────text: userz
+   ├considering: }{*}{:}}
+   ├───expanded: userz
+   ╰─────result: userz
  ├──condition: eq░{$address_data}{userz}
  ├─────result: false
   ╭───scanning: *}{:}}
@@ -277,7 +289,7 @@ sync_responses expect rcpt for userx@domain.com
 holding verify callout open for cutthrough delivery
 ----------- end cutthrough setup ------------
 try option acl_smtp_predata
-processing "accept" (TESTSUITE/test-config 55)
+processing inline ACL "accept"
 accept: condition test succeeded in inline ACL
 end of inline ACL: ACCEPT
   SMTP>> DATA
@@ -303,6 +315,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_rcvhost
  ├─────result: false
   ╭───scanning: from░$sender_rcvhost↩
@@ -346,6 +359,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_ident
   ├─────result: true
    ╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
@@ -399,6 +413,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_helo_name
   ├─────result: true
    ╭considering: (helo=$sender_helo_name)↩
@@ -473,6 +488,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_protocol
  ├─────result: true
   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
@@ -507,6 +523,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
@@ -514,12 +531,12 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:tls_in_cipher_std
  ├─────result: false
   ╭───scanning: ░tls░$tls_in_cipher_std↩
@@ -550,7 +567,6 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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░{↩
@@ -570,6 +586,7 @@ try option received_header_text
  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_address
  ├─────result: true
   ╭considering: (envelope-from░<$sender_address>)↩
@@ -602,6 +619,7 @@ try option received_header_text
  ├──────value: 10HmaX-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
@@ -657,6 +675,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -688,6 +707,7 @@ try option acl_smtp_helo
  list element: *
   in limits_advertise_hosts? yes (matched "*")
  in dsn_advertise_hosts? no (option unset)
+try option acl_smtp_atrn
 try option acl_smtp_etrn
 try option acl_smtp_vrfy
 try option acl_smtp_expn
@@ -701,16 +721,17 @@ try option acl_smtp_expn
 try option acl_smtp_mail
 try option acl_smtp_rcpt
  ╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
-  ╭considering: SERVER}{server}{queue}{cutthrough}}
-  ├───────text: SERVER
-  ├considering: }{server}{queue}{cutthrough}}
-  ├───expanded: SERVER
-  ╰─────result: SERVER
-  ╭considering: server}{queue}{cutthrough}}
-  ├───────text: server
-  ├considering: }{queue}{cutthrough}}
-  ├───expanded: server
-  ╰─────result: server
+  cond: eq
+   ╭considering: SERVER}{server}{queue}{cutthrough}}
+   ├───────text: SERVER
+   ├considering: }{server}{queue}{cutthrough}}
+   ├───expanded: SERVER
+   ╰─────result: SERVER
+   ╭considering: server}{queue}{cutthrough}}
+   ├───────text: server
+   ├considering: }{queue}{cutthrough}}
+   ├───expanded: server
+   ╰─────result: server
  ├──condition: eq░{SERVER}{server}
  ├─────result: false
   ╭───scanning: queue}{cutthrough}}
@@ -727,7 +748,7 @@ try option acl_smtp_rcpt
  ├───expanded: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
  ╰─────result: cutthrough
 using ACL "cutthrough"
-processing "accept" (TESTSUITE/test-config 22)
+processing ACL cutthrough "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
 domain.com in domains?
@@ -751,12 +772,14 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
-accept: condition test succeeded in ACL "cutthrough"
-end of ACL "cutthrough": ACCEPT
+accept: condition test succeeded in ACL cutthrough
+end of ACL cutthrough: ACCEPT
 ----------- start cutthrough setup ------------
 domain.com in domains?
  list element: !░+local_domains
@@ -779,9 +802,11 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 try option interface
 Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
 try option dscp
@@ -806,30 +831,33 @@ cmd buf flush ddd bytes
          250 HELP
 try option host_name_extract
  ╭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}}
-  ├───expanded: $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}}
-  ├───expanded: .outlook.com\$
-  ╰─────result: .outlook.com$
-  ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──────value: 
-  ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├───expanded: $item
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
-  ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──protected: ^250-([\w.]+)\s
-  ├───scanning: }}}░{$1}}
-  ├───expanded: \N^250-([\w.]+)\s\N
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
+  cond: and
+   cond: match
+   ╎╭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}}
+   ╎├───expanded: $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}}
+   ╎├───expanded: .outlook.com\$
+   ╎╰─────result: .outlook.com$
+   cond: match
+   ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──────value: 
+   ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├───expanded: $item
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
+   ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──protected: ^250-([\w.]+)\s
+   ╎├───scanning: }}}░{$1}}
+   ╎├───expanded: \N^250-([\w.]+)\s\N
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
  ├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
  ├─────result: false
   ╭───scanning: $1}}
@@ -840,18 +868,19 @@ try option host_name_extract
  ├───expanded: ${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}{*}{:}}
-  ├───expanded: $address_data
-  ╰─────result: usery
-             ╰──(tainted)
-  ╭considering: usery}{*}{:}}
-  ├───────text: usery
-  ├considering: }{*}{:}}
-  ├───expanded: usery
-  ╰─────result: usery
+  cond: eq
+   ╭considering: $address_data}{usery}{*}{:}}
+   ├──────value: usery
+              ╰──(tainted)
+   ├considering: }{usery}{*}{:}}
+   ├───expanded: $address_data
+   ╰─────result: usery
+              ╰──(tainted)
+   ╭considering: usery}{*}{:}}
+   ├───────text: usery
+   ├considering: }{*}{:}}
+   ├───expanded: usery
+   ╰─────result: usery
  ├──condition: eq░{$address_data}{usery}
  ├─────result: true
   ╭considering: *}{:}}
@@ -885,7 +914,7 @@ sync_responses expect rcpt for usery@domain.com
 holding verify callout open for cutthrough delivery
 ----------- end cutthrough setup ------------
 try option acl_smtp_predata
-processing "accept" (TESTSUITE/test-config 55)
+processing inline ACL "accept"
 accept: condition test succeeded in inline ACL
 end of inline ACL: ACCEPT
   SMTP>> DATA
@@ -911,6 +940,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_rcvhost
  ├─────result: false
   ╭───scanning: from░$sender_rcvhost↩
@@ -954,6 +984,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_ident
   ├─────result: true
    ╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
@@ -1007,6 +1038,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_helo_name
   ├─────result: true
    ╭considering: (helo=$sender_helo_name)↩
@@ -1081,6 +1113,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_protocol
  ├─────result: true
   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
@@ -1115,6 +1148,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
@@ -1122,12 +1156,12 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:tls_in_cipher_std
  ├─────result: false
   ╭───scanning: ░tls░$tls_in_cipher_std↩
@@ -1158,7 +1192,6 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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░{↩
@@ -1178,6 +1211,7 @@ try option received_header_text
  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_address
  ├─────result: true
   ╭considering: (envelope-from░<$sender_address>)↩
@@ -1210,6 +1244,7 @@ try option received_header_text
  ├──────value: 10HmaZ-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
@@ -1265,6 +1300,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -1296,6 +1332,7 @@ try option acl_smtp_helo
  list element: *
   in limits_advertise_hosts? yes (matched "*")
  in dsn_advertise_hosts? no (option unset)
+try option acl_smtp_atrn
 try option acl_smtp_etrn
 try option acl_smtp_vrfy
 try option acl_smtp_expn
@@ -1309,16 +1346,17 @@ try option acl_smtp_expn
 try option acl_smtp_mail
 try option acl_smtp_rcpt
  ╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
-  ╭considering: SERVER}{server}{queue}{cutthrough}}
-  ├───────text: SERVER
-  ├considering: }{server}{queue}{cutthrough}}
-  ├───expanded: SERVER
-  ╰─────result: SERVER
-  ╭considering: server}{queue}{cutthrough}}
-  ├───────text: server
-  ├considering: }{queue}{cutthrough}}
-  ├───expanded: server
-  ╰─────result: server
+  cond: eq
+   ╭considering: SERVER}{server}{queue}{cutthrough}}
+   ├───────text: SERVER
+   ├considering: }{server}{queue}{cutthrough}}
+   ├───expanded: SERVER
+   ╰─────result: SERVER
+   ╭considering: server}{queue}{cutthrough}}
+   ├───────text: server
+   ├considering: }{queue}{cutthrough}}
+   ├───expanded: server
+   ╰─────result: server
  ├──condition: eq░{SERVER}{server}
  ├─────result: false
   ╭───scanning: queue}{cutthrough}}
@@ -1335,7 +1373,7 @@ try option acl_smtp_rcpt
  ├───expanded: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
  ╰─────result: cutthrough
 using ACL "cutthrough"
-processing "accept" (TESTSUITE/test-config 22)
+processing ACL cutthrough "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
 domain.com in domains?
@@ -1359,12 +1397,14 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
-accept: condition test succeeded in ACL "cutthrough"
-end of ACL "cutthrough": ACCEPT
+accept: condition test succeeded in ACL cutthrough
+end of ACL cutthrough: ACCEPT
 ----------- start cutthrough setup ------------
 domain.com in domains?
  list element: !░+local_domains
@@ -1387,9 +1427,11 @@ processing address_data
 domain.com in "*"?
  list element: *
  domain.com in "*"? yes (matched "*")
+try option errors_to
+try option headers_add
+try option headers_remove
 try option transport
 try option unseen
-try option unseen
 try option interface
 Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
 try option dscp
@@ -1414,30 +1456,33 @@ cmd buf flush ddd bytes
          250 HELP
 try option host_name_extract
  ╭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}}
-  ├───expanded: $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}}
-  ├───expanded: .outlook.com\$
-  ╰─────result: .outlook.com$
-  ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──────value: 
-  ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
-  ├───expanded: $item
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
-  ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
-  ├──protected: ^250-([\w.]+)\s
-  ├───scanning: }}}░{$1}}
-  ├───expanded: \N^250-([\w.]+)\s\N
-  ├─────result:  ◀skipped▶
-  ╰───skipping: result is not used
+  cond: and
+   cond: match
+   ╎╭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}}
+   ╎├───expanded: $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}}
+   ╎├───expanded: .outlook.com\$
+   ╎╰─────result: .outlook.com$
+   cond: match
+   ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──────value: 
+   ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├───expanded: $item
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
+   ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+   ╎├──protected: ^250-([\w.]+)\s
+   ╎├───scanning: }}}░{$1}}
+   ╎├───expanded: \N^250-([\w.]+)\s\N
+   ╎├─────result:  ◀skipped▶
+   ╎╰───skipping: result is not used
  ├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
  ├─────result: false
   ╭───scanning: $1}}
@@ -1448,18 +1493,19 @@ try option host_name_extract
  ├───expanded: ${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}{*}{:}}
-  ├───expanded: $address_data
-  ╰─────result: usery
-             ╰──(tainted)
-  ╭considering: usery}{*}{:}}
-  ├───────text: usery
-  ├considering: }{*}{:}}
-  ├───expanded: usery
-  ╰─────result: usery
+  cond: eq
+   ╭considering: $address_data}{usery}{*}{:}}
+   ├──────value: usery
+              ╰──(tainted)
+   ├considering: }{usery}{*}{:}}
+   ├───expanded: $address_data
+   ╰─────result: usery
+              ╰──(tainted)
+   ╭considering: usery}{*}{:}}
+   ├───────text: usery
+   ├considering: }{*}{:}}
+   ├───expanded: usery
+   ╰─────result: usery
  ├──condition: eq░{$address_data}{usery}
  ├─────result: true
   ╭considering: *}{:}}
@@ -1493,7 +1539,7 @@ sync_responses expect rcpt for usery@domain.com
 holding verify callout open for cutthrough delivery
 ----------- end cutthrough setup ------------
 try option acl_smtp_predata
-processing "accept" (TESTSUITE/test-config 55)
+processing inline ACL "accept"
 accept: condition test succeeded in inline ACL
 end of inline ACL: ACCEPT
   SMTP>> DATA
@@ -1519,6 +1565,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_rcvhost
  ├─────result: false
   ╭───scanning: from░$sender_rcvhost↩
@@ -1562,6 +1609,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_ident
   ├─────result: true
    ╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
@@ -1615,6 +1663,7 @@ try option received_header_text
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
+   cond: def
   ├──condition: def:sender_helo_name
   ├─────result: true
    ╭considering: (helo=$sender_helo_name)↩
@@ -1689,6 +1738,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_protocol
  ├─────result: true
   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
@@ -1723,6 +1773,7 @@ try option received_header_text
  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
   ␉}}id░$message_exim_id${if░def:received_for░{↩
   ␉for░$received_for}}
@@ -1730,12 +1781,12 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:tls_in_cipher_std
  ├─────result: false
   ╭───scanning: ░tls░$tls_in_cipher_std↩
@@ -1766,7 +1817,6 @@ try option received_header_text
   ├─────result:  ◀skipped▶
   ╰───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░{↩
@@ -1786,6 +1836,7 @@ try option received_header_text
  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
  ␉}}id░$message_exim_id${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:sender_address
  ├─────result: true
   ╭considering: (envelope-from░<$sender_address>)↩
@@ -1818,6 +1869,7 @@ try option received_header_text
  ├──────value: 10HmbB-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
  ␉for░$received_for}}
+  cond: def
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩