Rewrites: avoid a split log line when rewiting hits a malformed address. Bug 3160
[exim.git] / test / stderr / 0085
index 3e44df43924a84bb72f69241f78bb17a3a0e6e36..520e9de95da9b6a70fa7cee1f1a2111aa1e5a543 100644 (file)
@@ -1,10 +1,10 @@
 Exim version x.yz ....
 changed uid/gid: forcing real = effective
 Exim version x.yz ....
 changed uid/gid: forcing real = effective
-  uid=uuuu gid=CALLER_GID pid=pppp
+  uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
 admin user
 changed uid/gid: privilege not needed
 configuration file is TESTSUITE/test-config
 admin user
 changed uid/gid: privilege not needed
-  uid=EXIM_UID gid=EXIM_GID pid=pppp
+  uid=EXIM_UID gid=EXIM_GID pid=p1234
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
@@ -19,16 +19,25 @@ routing x@y.z
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
+y.z in "smart.domain"?
+ list element: smart.domain
 y.z in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
 y.z in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "test.ex : myhost.test.ex"? no (end of list)
+y.z in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   y.z in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎list element: myhost.test.ex
+   y.z in "test.ex : myhost.test.ex"? no (end of list)
+  end sublist local_domains
 y.z in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
 y.z in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
-rda_interpret (string): :fail: unrouteable mail domain "$domain"
-expanded: :fail: unrouteable mail domain "y.z"
+rda_interpret (string): ':fail: unrouteable mail domain "$domain"'
+expanded: ':fail: unrouteable mail domain "y.z"' (tainted)
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "y.z"
 extract item: :fail: unrouteable mail domain "y.z"
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "y.z"
 extract item: :fail: unrouteable mail domain "y.z"
@@ -42,51 +51,68 @@ routing x@smart.domain
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "smart.domain"? yes (matched "smart.domain")
+smart.domain in "smart.domain"?
+ list element: smart.domain
+ smart.domain in "smart.domain"? yes (matched "smart.domain")
 checking local_parts
 checking local_parts
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="smart.domain" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="smart.domain"
-file lookup required for smart.domain
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-x in "x : y : abc@d.e.f"? yes (matched "x")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="smart.domain" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="smart.domain" opts=NULL
+ file lookup required for smart.domain
+   in TESTSUITE/aux-fixed/0085.data
+ creating new cache entry
+ lookup yielded: x : y : abc@d.e.f
+x in "x : y : abc@d.e.f"?
+ list element: x
+ x in "x : y : abc@d.e.f"? yes (matched "x")
 checking senders
 checking senders
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="smart.domain" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="smart.domain"
-cached data used for lookup of smart.domain
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-address match test: subject=abc@d.e.f pattern=x
-d.e.f in "x"? no (end of list)
-address match test: subject=abc@d.e.f pattern=y
-d.e.f in "y"? no (end of list)
-address match test: subject=abc@d.e.f pattern=abc@d.e.f
-d.e.f in "d.e.f"? yes (matched "d.e.f")
-abc@d.e.f in "x : y : abc@d.e.f"? yes (matched "abc@d.e.f")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="smart.domain" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="smart.domain" opts=NULL
+ cached data used for lookup of smart.domain
+   in TESTSUITE/aux-fixed/0085.data
+ lookup yielded: x : y : abc@d.e.f
+abc@d.e.f in "x : y : abc@d.e.f"?
+ list element: x
+ address match test: subject=abc@d.e.f pattern=x
+ d.e.f in "x"?
+  list element: x
+ d.e.f in "x"? no (end of list)
+ list element: y
+ address match test: subject=abc@d.e.f pattern=y
+ d.e.f in "y"?
+  list element: y
+ d.e.f in "y"? no (end of list)
+ list element: abc@d.e.f
+ address match test: subject=abc@d.e.f pattern=abc@d.e.f
+ d.e.f in "d.e.f"?
+  list element: d.e.f
+  d.e.f in "d.e.f"? yes (matched "d.e.f")
+ abc@d.e.f in "x : y : abc@d.e.f"? yes (matched "abc@d.e.f")
 calling smart1 router
 smart1 router called for x@smart.domain
   domain = smart.domain
 route_item = *
 calling smart1 router
 smart1 router called for x@smart.domain
   domain = smart.domain
 route_item = *
-smart.domain in "*"? yes (matched "*")
+smart.domain in "*"?
+ list element: *
+ smart.domain in "*"? yes (matched "*")
 original list of hosts = '' options = ''
 expanded list of hosts = '' options = ''
 queued for <unset> transport: local_part = x
 domain = smart.domain
   errors_to=NULL
 original list of hosts = '' options = ''
 expanded list of hosts = '' options = ''
 queued for <unset> transport: local_part = x
 domain = smart.domain
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=smart.domain local_part_data=x
 routed by smart1 router
   envelope to: x@smart.domain
   transport: <none>
 routed by smart1 router
   envelope to: x@smart.domain
   transport: <none>
@@ -99,65 +125,90 @@ routing x@test.ex
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
+test.ex in "smart.domain"?
+ list element: smart.domain
 test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
 test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
-test.ex in "! +local_domains"? no (matched "! +local_domains")
+test.ex in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   test.ex in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
+  end sublist local_domains
+ data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+ test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex"? yes (matched "test.ex")
+test.ex in "test.ex"?
+ list element: test.ex
+ test.ex in "test.ex"? yes (matched "test.ex")
 checking local_parts
 checking local_parts
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="test.ex" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="test.ex"
-file lookup required for test.ex
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-x in "x : y : abc@d.e.f"? yes (matched "x")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="test.ex" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="test.ex" opts=NULL
+ file lookup required for test.ex
+   in TESTSUITE/aux-fixed/0085.data
+ creating new cache entry
+ lookup yielded: x : y : abc@d.e.f
+x in "x : y : abc@d.e.f"?
+ list element: x
+ x in "x : y : abc@d.e.f"? yes (matched "x")
 checking senders
 checking senders
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="test.ex" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="test.ex"
-cached data used for lookup of test.ex
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-address match test: subject=abc@d.e.f pattern=x
-d.e.f in "x"? no (end of list)
-address match test: subject=abc@d.e.f pattern=y
-d.e.f in "y"? no (end of list)
-address match test: subject=abc@d.e.f pattern=abc@d.e.f
-d.e.f in "d.e.f"? yes (matched "d.e.f")
-abc@d.e.f in "x : y : abc@d.e.f"? yes (matched "abc@d.e.f")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="test.ex" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="test.ex" opts=NULL
+ cached data used for lookup of test.ex
+   in TESTSUITE/aux-fixed/0085.data
+ lookup yielded: x : y : abc@d.e.f
+abc@d.e.f in "x : y : abc@d.e.f"?
+ list element: x
+ address match test: subject=abc@d.e.f pattern=x
+ d.e.f in "x"?
+  list element: x
+ d.e.f in "x"? no (end of list)
+ list element: y
+ address match test: subject=abc@d.e.f pattern=y
+ d.e.f in "y"?
+  list element: y
+ d.e.f in "y"? no (end of list)
+ list element: abc@d.e.f
+ address match test: subject=abc@d.e.f pattern=abc@d.e.f
+ d.e.f in "d.e.f"?
+  list element: d.e.f
+  d.e.f in "d.e.f"? yes (matched "d.e.f")
+ abc@d.e.f in "x : y : abc@d.e.f"? yes (matched "abc@d.e.f")
 checking require_files
 checking require_files
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="test.ex.files" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="test.ex.files"
-file lookup required for test.ex.files
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: /etc/passwd
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="test.ex.files" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="test.ex.files" opts=NULL
+ file lookup required for test.ex.files
+   in TESTSUITE/aux-fixed/0085.data
+ creating new cache entry
+ lookup yielded: /etc/passwd
 file check: ${lookup{$domain.files}lsearch{TESTSUITE/aux-fixed/0085.data}{$value}}
 expanded file: /etc/passwd
 stat() yielded 0
 file check: ${lookup{$domain.files}lsearch{TESTSUITE/aux-fixed/0085.data}{$value}}
 expanded file: /etc/passwd
 stat() yielded 0
@@ -168,7 +219,7 @@ set transport dummy
 queued for dummy transport: local_part = x
 domain = test.ex
   errors_to=NULL
 queued for dummy transport: local_part = x
 domain = test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=test.ex local_part_data=x
 routed by smart2 router
   envelope to: x@test.ex
   transport: dummy
 routed by smart2 router
   envelope to: x@test.ex
   transport: dummy
@@ -181,29 +232,41 @@ routing x@myhost.test.ex
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
+myhost.test.ex in "smart.domain"?
+ list element: smart.domain
 myhost.test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=myhost.test.ex
 checking domains
-myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
-myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
+myhost.test.ex in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   myhost.test.ex in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎list element: myhost.test.ex
+   ╎myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
+  end sublist local_domains
+ data from lookup saved for cache for +local_domains: key 'myhost.test.ex' value 'myhost.test.ex'
+ myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
+myhost.test.ex in "test.ex"?
+ list element: test.ex
 myhost.test.ex in "test.ex"? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
 myhost.test.ex in "test.ex"? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=2 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
 changed uid/gid: forcing real = effective
 Exim version x.yz ....
 changed uid/gid: forcing real = effective
-  uid=uuuu gid=CALLER_GID pid=pppp
+  uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
 admin user
 changed uid/gid: privilege not needed
 configuration file is TESTSUITE/test-config
 admin user
 changed uid/gid: privilege not needed
-  uid=EXIM_UID gid=EXIM_GID pid=pppp
+  uid=EXIM_UID gid=EXIM_GID pid=p1235
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
 seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
@@ -218,16 +281,25 @@ routing x@y.z
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
+y.z in "smart.domain"?
+ list element: smart.domain
 y.z in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
 y.z in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "test.ex : myhost.test.ex"? no (end of list)
+y.z in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   y.z in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎list element: myhost.test.ex
+   y.z in "test.ex : myhost.test.ex"? no (end of list)
+  end sublist local_domains
 y.z in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
 y.z in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
-rda_interpret (string): :fail: unrouteable mail domain "$domain"
-expanded: :fail: unrouteable mail domain "y.z"
+rda_interpret (string): ':fail: unrouteable mail domain "$domain"'
+expanded: ':fail: unrouteable mail domain "y.z"' (tainted)
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "y.z"
 extract item: :fail: unrouteable mail domain "y.z"
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "y.z"
 extract item: :fail: unrouteable mail domain "y.z"
@@ -241,48 +313,68 @@ routing x@smart.domain
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "smart.domain"? yes (matched "smart.domain")
+smart.domain in "smart.domain"?
+ list element: smart.domain
+ smart.domain in "smart.domain"? yes (matched "smart.domain")
 checking local_parts
 checking local_parts
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="smart.domain" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="smart.domain"
-file lookup required for smart.domain
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-x in "x : y : abc@d.e.f"? yes (matched "x")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="smart.domain" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="smart.domain" opts=NULL
+ file lookup required for smart.domain
+   in TESTSUITE/aux-fixed/0085.data
+ creating new cache entry
+ lookup yielded: x : y : abc@d.e.f
+x in "x : y : abc@d.e.f"?
+ list element: x
+ x in "x : y : abc@d.e.f"? yes (matched "x")
 checking senders
 checking senders
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="smart.domain" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="smart.domain"
-cached data used for lookup of smart.domain
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-address match test: subject=CALLER@myhost.test.ex pattern=x
-myhost.test.ex in "x"? no (end of list)
-address match test: subject=CALLER@myhost.test.ex pattern=y
-myhost.test.ex in "y"? no (end of list)
-address match test: subject=CALLER@myhost.test.ex pattern=abc@d.e.f
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="smart.domain" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="smart.domain" opts=NULL
+ cached data used for lookup of smart.domain
+   in TESTSUITE/aux-fixed/0085.data
+ lookup yielded: x : y : abc@d.e.f
+CALLER@myhost.test.ex in "x : y : abc@d.e.f"?
+ list element: x
+ address match test: subject=CALLER@myhost.test.ex pattern=x
+ myhost.test.ex in "x"?
+  list element: x
+ myhost.test.ex in "x"? no (end of list)
+ list element: y
+ address match test: subject=CALLER@myhost.test.ex pattern=y
+ myhost.test.ex in "y"?
+  list element: y
+ myhost.test.ex in "y"? no (end of list)
+ list element: abc@d.e.f
+ address match test: subject=CALLER@myhost.test.ex pattern=abc@d.e.f
 CALLER@myhost.test.ex in "x : y : abc@d.e.f"? no (end of list)
 smart1 router skipped: senders mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=smart.domain
 checking domains
 CALLER@myhost.test.ex in "x : y : abc@d.e.f"? no (end of list)
 smart1 router skipped: senders mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "test.ex : myhost.test.ex"? no (end of list)
+smart.domain in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   smart.domain in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎list element: myhost.test.ex
+   smart.domain in "test.ex : myhost.test.ex"? no (end of list)
+  end sublist local_domains
 smart.domain in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
 smart.domain in "! +local_domains"? yes (end of list)
 calling fail_remote_domains router
-rda_interpret (string): :fail: unrouteable mail domain "$domain"
-expanded: :fail: unrouteable mail domain "smart.domain"
+rda_interpret (string): ':fail: unrouteable mail domain "$domain"'
+expanded: ':fail: unrouteable mail domain "smart.domain"' (tainted)
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "smart.domain"
 extract item: :fail: unrouteable mail domain "smart.domain"
 file is not a filter file
 parse_forward_list: :fail: unrouteable mail domain "smart.domain"
 extract item: :fail: unrouteable mail domain "smart.domain"
@@ -296,50 +388,72 @@ routing x@test.ex
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
+test.ex in "smart.domain"?
+ list element: smart.domain
 test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
 test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
-test.ex in "! +local_domains"? no (matched "! +local_domains")
+test.ex in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   test.ex in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
+  end sublist local_domains
+ data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
+ test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex"? yes (matched "test.ex")
+test.ex in "test.ex"?
+ list element: test.ex
+ test.ex in "test.ex"? yes (matched "test.ex")
 checking local_parts
 checking local_parts
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="test.ex" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="test.ex"
-file lookup required for test.ex
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-x in "x : y : abc@d.e.f"? yes (matched "x")
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="test.ex" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="test.ex" opts=NULL
+ file lookup required for test.ex
+   in TESTSUITE/aux-fixed/0085.data
+ creating new cache entry
+ lookup yielded: x : y : abc@d.e.f
+x in "x : y : abc@d.e.f"?
+ list element: x
+ x in "x : y : abc@d.e.f"? yes (matched "x")
 checking senders
 checking senders
-search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
-  cached open
-search_find: file="TESTSUITE/aux-fixed/0085.data"
-  key="test.ex" partial=-1 affix=NULL starflags=0
-LRU list:
-  0TESTSUITE/aux-fixed/0085.data
-  End
-internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
-  type=lsearch key="test.ex"
-cached data used for lookup of test.ex
-  in TESTSUITE/aux-fixed/0085.data
-lookup yielded: x : y : abc@d.e.f
-address match test: subject=CALLER@myhost.test.ex pattern=x
-myhost.test.ex in "x"? no (end of list)
-address match test: subject=CALLER@myhost.test.ex pattern=y
-myhost.test.ex in "y"? no (end of list)
-address match test: subject=CALLER@myhost.test.ex pattern=abc@d.e.f
+ search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
+   cached open
+ search_find: file="TESTSUITE/aux-fixed/0085.data"
+   key="test.ex" partial=-1 affix=NULL starflags=0 opts=NULL
+ LRU list:
+   0TESTSUITE/aux-fixed/0085.data
+   End
+ internal_search_find: file="TESTSUITE/aux-fixed/0085.data"
+   type=lsearch key="test.ex" opts=NULL
+ cached data used for lookup of test.ex
+   in TESTSUITE/aux-fixed/0085.data
+ lookup yielded: x : y : abc@d.e.f
+CALLER@myhost.test.ex in "x : y : abc@d.e.f"?
+ list element: x
+ address match test: subject=CALLER@myhost.test.ex pattern=x
+ myhost.test.ex in "x"?
+  list element: x
+ myhost.test.ex in "x"? no (end of list)
+ list element: y
+ address match test: subject=CALLER@myhost.test.ex pattern=y
+ myhost.test.ex in "y"?
+  list element: y
+ myhost.test.ex in "y"? no (end of list)
+ list element: abc@d.e.f
+ address match test: subject=CALLER@myhost.test.ex pattern=abc@d.e.f
 CALLER@myhost.test.ex in "x : y : abc@d.e.f"? no (end of list)
 smart2 router skipped: senders mismatch
 no more routers
 CALLER@myhost.test.ex in "x : y : abc@d.e.f"? no (end of list)
 smart2 router skipped: senders mismatch
 no more routers
@@ -352,19 +466,31 @@ routing x@myhost.test.ex
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
+myhost.test.ex in "smart.domain"?
+ list element: smart.domain
 myhost.test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "smart.domain"? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=myhost.test.ex
 checking domains
-myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
-myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
+myhost.test.ex in "! +local_domains"?
+ list element: ! +local_domains
+  start sublist local_domains
+   myhost.test.ex in "test.ex : myhost.test.ex"?
+   ╎list element: test.ex
+   ╎list element: myhost.test.ex
+   ╎myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
+  end sublist local_domains
+ data from lookup saved for cache for +local_domains: key 'myhost.test.ex' value 'myhost.test.ex'
+ myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
+myhost.test.ex in "test.ex"?
+ list element: test.ex
 myhost.test.ex in "test.ex"? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
 myhost.test.ex in "test.ex"? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=pppp (main) terminating with rc=2 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>