Auths: fix possible OOB read in SPA authenticator. Bug 3001
[exim.git] / test / stderr / 0402
index 2fe542bb79fd0375d8d4e540bb414b2a5ac598d3..3f892f56da6df2578e774bbe635a679ec49bb69c 100644 (file)
@@ -27,8 +27,11 @@ Recipients:
 search_tidyup called
 >>Headers received:
 
 search_tidyup called
 >>Headers received:
 
-rewrite_one_header: type=F:
-  From: CALLER_NAME <CALLER@test.ex>
+qualify & rewrite recipients list
+global rewrite rules
+rewrite headers
+ rewrite_one_header: type=F:
+   From: CALLER_NAME <CALLER@test.ex>
 search_tidyup called
 >>Headers after rewriting and local additions:
 I Message-Id: <E10HmaX-0005vi-00@mail.test.ex>
 search_tidyup called
 >>Headers after rewriting and local additions:
 I Message-Id: <E10HmaX-0005vi-00@mail.test.ex>
@@ -47,6 +50,14 @@ Data file written for message 10HmaX-0005vi-00
        ${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}}
+ ├───────text: Received: 
+ ├considering: ${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
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
  ├──condition: def:sender_rcvhost
  ├─────result: false
   ╭───scanning: from $sender_rcvhost
  ├──condition: def:sender_rcvhost
  ├─────result: false
   ╭───scanning: from $sender_rcvhost
@@ -56,6 +67,29 @@ Data file written for message 10HmaX-0005vi-00
        ${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}}
+  ├───────text: from 
+  ├───scanning: $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
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├───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
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├───────text: 
+       
+  ├───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
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
   ├──expanding: from $sender_rcvhost
        
   ├─────result: from 
   ├──expanding: from $sender_rcvhost
        
   ├─────result: from 
@@ -75,16 +109,50 @@ Data file written for message 10HmaX-0005vi-00
        ${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}}
+   ├───────text: from 
+   ├considering: ${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
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
    ╎╭considering: $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
    ╎ }}(Exim $version_number)
    ╎ ${if def:sender_address {(envelope-from <$sender_address>)
    ╎ }}id $message_exim_id${if def:received_for {
    ╎ for $received_for}}
    ╎╭considering: $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
    ╎ }}(Exim $version_number)
    ╎ ${if def:sender_address {(envelope-from <$sender_address>)
    ╎ }}id $message_exim_id${if def:received_for {
    ╎ for $received_for}}
+   ╎├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)
+   ╎ ${if def:sender_address {(envelope-from <$sender_address>)
+   ╎ }}id $message_exim_id${if def:received_for {
+   ╎ for $received_for}}
    ╎├──expanding: $sender_ident
    ╎╰─────result: CALLER
    ╎├──expanding: $sender_ident
    ╎╰─────result: CALLER
+   ├─────op-res: 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)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+   ├───────text:  
+   ├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)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
    ├──expanding: from ${quote_local_part:$sender_ident} 
    ╰─────result: from CALLER 
    ├──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)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
   ├──condition: def:sender_helo_name
   ├─────result: false
    ╭───scanning: (helo=$sender_helo_name)
   ├──condition: def:sender_helo_name
   ├─────result: false
    ╭───scanning: (helo=$sender_helo_name)
@@ -93,14 +161,63 @@ Data file written for message 10HmaX-0005vi-00
        ${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}}
+   ├───────text: (helo=
+   ├───scanning: $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)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+   ├───scanning: )
+       }}}}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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+   ├───────text: )
+       
+   ├───scanning: }}}}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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
    ├──expanding: (helo=$sender_helo_name)
        
    ├─────result: (helo=)
        
    ╰───skipping: result is not used
    ├──expanding: (helo=$sender_helo_name)
        
    ├─────result: (helo=)
        
    ╰───skipping: result is not used
+  ├───item-res: 
+  ├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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
   ├──expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)
        }}
   ╰─────result: from CALLER 
   ├──expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)
        }}
   ╰─────result: from CALLER 
+ ├───item-res: from CALLER 
+ ├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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├───────text: by 
+ ├considering: $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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├───────text:  
+ ├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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
  ├──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
  ├──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
@@ -108,36 +225,133 @@ Data file written for message 10HmaX-0005vi-00
        ${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}}
+  ├───────text: with 
+  ├considering: $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>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├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}}
+  ├───────text:  
+  ├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}}
   ├──expanding: with $received_protocol 
   ╰─────result: with local 
   ├──expanding: with $received_protocol 
   ╰─────result: with local 
- ├──condition: def:tls_in_ver
+ ├───item-res: with local 
+ ├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}}
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├──expanding:  ($tls_in_ver)
+  ├─────result:  ()
+  ╰───skipping: result is not used
+ ├───item-res: 
+ ├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}}
+ ├──condition: def:tls_in_cipher_std
  ├─────result: false
  ├─────result: false
-  ╭───scanning:  ($tls_in_ver)}}${if def:tls_in_cipher_std { tls $tls_in_cipher_std
+  ╭───scanning:  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}}
        }}(Exim $version_number)
        ${if def:sender_address {(envelope-from <$sender_address>)
        }}id $message_exim_id${if def:received_for {
        for $received_for}}
-  ├──expanding:  ($tls_in_ver)
-  ├─────result:  ()
+  ├───────text:  tls 
+  ├───scanning: $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}}
+  ├───scanning: 
+       }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├───────text: 
+       
+  ├───scanning: }}(Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├──expanding:  tls $tls_in_cipher_std
+       
+  ├─────result:  tls 
+       
   ╰───skipping: result is not used
   ╰───skipping: result is not used
+ ├───item-res: 
+ ├considering: (Exim $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├───────text: (Exim 
+ ├considering: $version_number)
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├considering: )
+       ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+ ├───────text: )
+       
+ ├considering: ${if def:sender_address {(envelope-from <$sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
  ├──condition: def:sender_address
  ├─────result: true
   ╭considering: (envelope-from <$sender_address>)
        }}id $message_exim_id${if def:received_for {
        for $received_for}}
  ├──condition: def:sender_address
  ├─────result: true
   ╭considering: (envelope-from <$sender_address>)
        }}id $message_exim_id${if def:received_for {
        for $received_for}}
+  ├───────text: (envelope-from <
+  ├considering: $sender_address>)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├considering: >)
+       }}id $message_exim_id${if def:received_for {
+       for $received_for}}
+  ├───────text: >)
+       
+  ├considering: }}id $message_exim_id${if def:received_for {
+       for $received_for}}
   ├──expanding: (envelope-from <$sender_address>)
        
   ╰─────result: (envelope-from <CALLER@test.ex>)
        
   ├──expanding: (envelope-from <$sender_address>)
        
   ╰─────result: (envelope-from <CALLER@test.ex>)
        
+ ├───item-res: (envelope-from <CALLER@test.ex>)
+       
+ ├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}}
+ ├considering: ${if def:received_for {
+       for $received_for}}
  ├──condition: def:received_for
  ├─────result: false
   ╭───scanning: 
        for $received_for}}
  ├──condition: def:received_for
  ├─────result: false
   ╭───scanning: 
        for $received_for}}
+  ├───────text: 
+       for 
+  ├───scanning: $received_for}}
+  ├───scanning: }}
   ├──expanding: 
        for $received_for
   ├─────result: 
        for 
   ╰───skipping: result is not used
   ├──expanding: 
        for $received_for
   ├─────result: 
        for 
   ╰───skipping: result is not used
+ ├───item-res: 
  ├──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
  ├──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
@@ -151,7 +365,8 @@ Data file written for message 10HmaX-0005vi-00
 >>Generated Received: header line
 P Received: from CALLER by mail.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@test.ex>)
 >>Generated Received: header line
 P Received: from CALLER by mail.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@test.ex>)
-       id 10HmaX-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+       id 10HmaX-0005vi-00;
+       Tue, 2 Mar 1999 09:44:33 +0000
  ╭considering: ${tod_full}
  ├──expanding: ${tod_full}
  ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000
  ╭considering: ${tod_full}
  ├──expanding: ${tod_full}
  ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000
@@ -197,7 +412,7 @@ recipients_count=5
 **** SPOOL_IN - No additional fields
 **** SPOOL_IN - No additional fields
 **** SPOOL_IN - No additional fields
 **** SPOOL_IN - No additional fields
 **** SPOOL_IN - No additional fields
 **** SPOOL_IN - No additional fields
-body_linecount=0 message_linecount=6
+body_linecount=0 message_linecount=7
 DSN: set orcpt:   flags: 0x0
 DSN: set orcpt:   flags: 0x0
 DSN: set orcpt:   flags: 0x0
 DSN: set orcpt:   flags: 0x0
 DSN: set orcpt:   flags: 0x0
 DSN: set orcpt:   flags: 0x0
@@ -213,8 +428,7 @@ Delivery address list:
  locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
  locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: (nil)
- ensuring TESTSUITE/spool/db/retry.lockfile is owned by exim
- failed to open DB file TESTSUITE/spool/db/retry.lockfile: No such file or directory
+ failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@test.ex
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@test.ex
@@ -275,6 +489,8 @@ stripped prefix rd+
 checking local_parts
 usery in "usery"? yes (matched "usery")
  ╭considering: /non-exist/$domain
 checking local_parts
 usery in "usery"? yes (matched "usery")
  ╭considering: /non-exist/$domain
+ ├───────text: /non-exist/
+ ├considering: $domain
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
@@ -315,6 +531,8 @@ stripped prefix rd+
 checking local_parts
 CALLER in "CALLER"? yes (matched "CALLER")
  ╭considering: /non-exist/$local_part
 checking local_parts
 CALLER in "CALLER"? yes (matched "CALLER")
  ╭considering: /non-exist/$local_part
+ ├───────text: /non-exist/
+ ├considering: $local_part
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/CALLER
             ╰──(tainted)
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/CALLER
             ╰──(tainted)
@@ -349,6 +567,8 @@ local_part=userz domain=test.ex
 checking local_parts
 userz in "userz"? yes (matched "userz")
  ╭considering: /non-exist/$domain
 checking local_parts
 userz in "userz"? yes (matched "userz")
  ╭considering: /non-exist/$domain
+ ├───────text: /non-exist/
+ ├considering: $domain
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
@@ -375,6 +595,8 @@ local_part=usery domain=test.ex
 checking local_parts
 usery in "usery"? yes (matched "usery")
  ╭considering: /non-exist/$domain
 checking local_parts
 usery in "usery"? yes (matched "usery")
  ╭considering: /non-exist/$domain
+ ├───────text: /non-exist/
+ ├considering: $domain
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
  ├──expanding: /non-exist/$domain
  ╰─────result: /non-exist/test.ex
             ╰──(tainted)
@@ -396,6 +618,8 @@ local_part=CALLER domain=test.ex
 checking local_parts
 CALLER in "CALLER"? yes (matched "CALLER")
  ╭considering: /non-exist/$local_part
 checking local_parts
 CALLER in "CALLER"? yes (matched "CALLER")
  ╭considering: /non-exist/$local_part
+ ├───────text: /non-exist/
+ ├considering: $local_part
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/CALLER
             ╰──(tainted)
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/CALLER
             ╰──(tainted)
@@ -445,6 +669,8 @@ search_tidyup called
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /non-exist/$local_part
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /non-exist/$local_part
+ ├───────text: /non-exist/
+ ├considering: $local_part
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/usery
             ╰──(tainted)
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/usery
             ╰──(tainted)
@@ -470,18 +696,37 @@ mailbox TESTSUITE/test-mail/junk is locked
 writing to file TESTSUITE/test-mail/junk
  ╭considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
 writing to file TESTSUITE/test-mail/junk
  ╭considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
+ ├───────text: From 
+ ├considering: ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  ├──condition: def:return_path
  ├─────result: true
   ╭considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
   
  ├──condition: def:return_path
  ├─────result: true
   ╭considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
   
+  ├considering: }{MAILER-DAEMON}} ${tod_bsdinbox}
+  
   ├──expanding: $return_path
   ╰─────result: CALLER@test.ex
              ╰──(tainted)
   ╭───scanning: MAILER-DAEMON}} ${tod_bsdinbox}
   
   ├──expanding: $return_path
   ╰─────result: CALLER@test.ex
              ╰──(tainted)
   ╭───scanning: MAILER-DAEMON}} ${tod_bsdinbox}
   
+  ├───────text: MAILER-DAEMON
+  ├───scanning: }} ${tod_bsdinbox}
+  
   ├──expanding: MAILER-DAEMON
   ├─────result: MAILER-DAEMON
   ╰───skipping: result is not used
   ├──expanding: MAILER-DAEMON
   ├─────result: MAILER-DAEMON
   ╰───skipping: result is not used
+ ├───item-res: CALLER@test.ex
+            ╰──(tainted)
+ ├considering:  ${tod_bsdinbox}
+ ├───────text:  
+ ├considering: ${tod_bsdinbox}
+ ├considering: 
+ ├───────text: 
  ├──expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
  ╰─────result: From CALLER@test.ex Tue Mar 02 09:44:33 1999
  ├──expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
  ╰─────result: From CALLER@test.ex Tue Mar 02 09:44:33 1999
@@ -529,18 +774,37 @@ mailbox TESTSUITE/test-mail/junk is locked
 writing to file TESTSUITE/test-mail/junk
  ╭considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
 writing to file TESTSUITE/test-mail/junk
  ╭considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
+ ├───────text: From 
+ ├considering: ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  ├──condition: def:return_path
  ├─────result: true
   ╭considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
   
  ├──condition: def:return_path
  ├─────result: true
   ╭considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
   
+  ├considering: }{MAILER-DAEMON}} ${tod_bsdinbox}
+  
   ├──expanding: $return_path
   ╰─────result: CALLER@test.ex
              ╰──(tainted)
   ╭───scanning: MAILER-DAEMON}} ${tod_bsdinbox}
   
   ├──expanding: $return_path
   ╰─────result: CALLER@test.ex
              ╰──(tainted)
   ╭───scanning: MAILER-DAEMON}} ${tod_bsdinbox}
   
+  ├───────text: MAILER-DAEMON
+  ├───scanning: }} ${tod_bsdinbox}
+  
   ├──expanding: MAILER-DAEMON
   ├─────result: MAILER-DAEMON
   ╰───skipping: result is not used
   ├──expanding: MAILER-DAEMON
   ├─────result: MAILER-DAEMON
   ╰───skipping: result is not used
+ ├───item-res: CALLER@test.ex
+            ╰──(tainted)
+ ├considering:  ${tod_bsdinbox}
+ ├───────text:  
+ ├considering: ${tod_bsdinbox}
+ ├considering: 
+ ├───────text: 
  ├──expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
  ╰─────result: From CALLER@test.ex Tue Mar 02 09:44:33 1999
  ├──expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}
  
  ╰─────result: From CALLER@test.ex Tue Mar 02 09:44:33 1999
@@ -593,6 +857,8 @@ LOG: MAIN
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /non-exist/$local_part
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /non-exist/$local_part
+ ├───────text: /non-exist/
+ ├considering: $local_part
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/usery
             ╰──(tainted)
  ├──expanding: /non-exist/$local_part
  ╰─────result: /non-exist/usery
             ╰──(tainted)
@@ -623,6 +889,8 @@ LOG: MAIN
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /$local_part
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
  ╭considering: /$local_part
+ ├───────text: /
+ ├considering: $local_part
  ├──expanding: /$local_part
  ╰─────result: /userz
             ╰──(tainted)
  ├──expanding: /$local_part
  ╰─────result: /userz
             ╰──(tainted)