docs & more debug
authorJeremy Harris <jgh146exb@wizmail.org>
Wed, 6 May 2020 13:04:44 +0000 (14:04 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Wed, 6 May 2020 13:04:44 +0000 (14:04 +0100)
16 files changed:
doc/doc-docbook/spec.xfpt
src/src/match.c
test/stderr/0021
test/stderr/0085
test/stderr/0092
test/stderr/0094
test/stderr/0275
test/stderr/0278
test/stderr/0279
test/stderr/0362
test/stderr/0374
test/stderr/0375
test/stderr/0414
test/stderr/0419
test/stderr/0464
test/stderr/0499

index c8099556ecf560c799212482e993c0b132c1bed1..a05ad66500c41b18652aac93a40d759523347763 100644 (file)
@@ -8335,6 +8335,35 @@ in the previous section. You could also use the &(wildlsearch)& or
 
 
 
 
 
 
+.new
+.section "Results of list checking" SECTlistresults
+The primary result of doing a list check is a truth value.
+In some contexts additional information is stored
+about the list element that matched:
+.vlist
+.vitem hosts
+A &%hosts%& ACL condition
+will store a result in the &$host_data$& variable.
+.vitem local_parts
+A &%local_parts%& router option or &%local_parts%& ACL condition
+will store a result in the &$local_part_data$& variable.
+.vitem domains
+A &%domains%& router option or &%domains%& ACL condition
+.vitem senders
+A &%senders%& router option or &%senders%& ACL condition
+will store a result in the &$sender_data$& variable.
+.vitem recipients
+A &%recipients%& ACL condition
+will store a result in the &$recipient_data$& variable.
+.endlist
+
+The detail of the additional information depends on the
+type of match and is given below as the &*value*& information.
+.wen
+
+
+
+
 .section "Named lists" "SECTnamedlists"
 .cindex "named lists"
 .cindex "list" "named"
 .section "Named lists" "SECTnamedlists"
 .cindex "named lists"
 .cindex "list" "named"
@@ -8497,6 +8526,12 @@ If a pattern consists of a single @ character, it matches the local host name,
 as set by the &%primary_hostname%& option (or defaulted). This makes it
 possible to use the same configuration file on several different hosts that
 differ only in their names.
 as set by the &%primary_hostname%& option (or defaulted). This makes it
 possible to use the same configuration file on several different hosts that
 differ only in their names.
+
+.new
+The value for a match will be the primary host name/
+.wen
+
+
 .next
 .cindex "@[] in a domain list"
 .cindex "domain list" "matching local IP interfaces"
 .next
 .cindex "@[] in a domain list"
 .cindex "domain list" "matching local IP interfaces"
@@ -8507,6 +8542,12 @@ only if that IP address is recognized as local for email routing purposes. The
 &%local_interfaces%& and &%extra_local_interfaces%& options can be used to
 control which of a host's several IP addresses are treated as local.
 In today's Internet, the use of domain literals is controversial.
 &%local_interfaces%& and &%extra_local_interfaces%& options can be used to
 control which of a host's several IP addresses are treated as local.
 In today's Internet, the use of domain literals is controversial.
+
+.new
+The value for a match will be the &`@[]`& string.
+.wen
+
+
 .next
 .cindex "@mx_any"
 .cindex "@mx_primary"
 .next
 .cindex "@mx_any"
 .cindex "@mx_primary"
@@ -8555,6 +8596,11 @@ involved, it is easiest to change the delimiter for the main list as well:
 domains = <? @mx_any/ignore=<;127.0.0.1;::1 ? \
           an.other.domain ? ...
 .endd
 domains = <? @mx_any/ignore=<;127.0.0.1;::1 ? \
           an.other.domain ? ...
 .endd
+.new
+The value for a match will be the list element string (starting &`@mx_`&).
+.wen
+
+
 .next
 .cindex "asterisk" "in domain list"
 .cindex "domain list" "asterisk in"
 .next
 .cindex "asterisk" "in domain list"
 .cindex "domain list" "asterisk in"
@@ -8567,6 +8613,10 @@ matching works only in terms of dot-separated components. For example, a domain
 list item such as &`*key.ex`& matches &'donkey.ex'& as well as
 &'cipher.key.ex'&.
 
 list item such as &`*key.ex`& matches &'donkey.ex'& as well as
 &'cipher.key.ex'&.
 
+.new
+The value for a match will be the list element string (starting with the asterisk).
+.wen
+
 .next
 .cindex "regular expressions" "in domain list"
 .cindex "domain list" "matching regular expression"
 .next
 .cindex "regular expressions" "in domain list"
 .cindex "domain list" "matching regular expression"
@@ -8583,6 +8633,13 @@ must escape any backslash and dollar characters in the regular expression, or
 use the special &`\N`& sequence (see chapter &<<CHAPexpand>>&) to specify that
 it is not to be expanded (unless you really do want to build a regular
 expression by expansion, of course).
 use the special &`\N`& sequence (see chapter &<<CHAPexpand>>&) to specify that
 it is not to be expanded (unless you really do want to build a regular
 expression by expansion, of course).
+
+.new
+The value for a match will be the list element string (starting with the circumflex).
+.wen
+
+
+
 .next
 .cindex "lookup" "in domain list"
 .cindex "domain list" "matching by lookup"
 .next
 .cindex "lookup" "in domain list"
 .cindex "domain list" "matching by lookup"
@@ -8594,12 +8651,15 @@ must be a filename in a suitable format for the lookup type. For example, for
 domains = cdb;/etc/mail/local_domains.cdb
 .endd
 The appropriate type of lookup is done on the file using the domain name as the
 domains = cdb;/etc/mail/local_domains.cdb
 .endd
 The appropriate type of lookup is done on the file using the domain name as the
-key. In most cases, the data that is looked up is not used; Exim is interested
+key. In most cases, the value resulting from the lookup is not used; Exim is interested
 only in whether or not the key is present in the file. However, when a lookup
 is used for the &%domains%& option on a router
 only in whether or not the key is present in the file. However, when a lookup
 is used for the &%domains%& option on a router
-or a &%domains%& condition in an ACL statement, the data is preserved in the
+or a &%domains%& condition in an ACL statement, the value is preserved in the
 &$domain_data$& variable and can be referred to in other router options or
 other statements in the same ACL.
 &$domain_data$& variable and can be referred to in other router options or
 other statements in the same ACL.
+.cindex "tainted data" "de-tainting"
+The value will be untainted.
+
 
 .next
 Any of the single-key lookup type names may be preceded by
 
 .next
 Any of the single-key lookup type names may be preceded by
@@ -8618,6 +8678,7 @@ original lookup fails. This is not a useful feature when using a domain list to
 select particular domains (because any domain would match), but it might have
 value if the result of the lookup is being used via the &$domain_data$&
 expansion variable.
 select particular domains (because any domain would match), but it might have
 value if the result of the lookup is being used via the &$domain_data$&
 expansion variable.
+
 .next
 If the pattern starts with the name of a query-style lookup type followed by a
 semicolon (for example, &"nisplus;"& or &"ldap;"&), the remainder of the
 .next
 If the pattern starts with the name of a query-style lookup type followed by a
 semicolon (for example, &"nisplus;"& or &"ldap;"&), the remainder of the
@@ -8627,25 +8688,37 @@ chapter &<<CHAPfdlookup>>&. For example:
 hold_domains = mysql;select domain from holdlist \
   where domain = '${quote_mysql:$domain}';
 .endd
 hold_domains = mysql;select domain from holdlist \
   where domain = '${quote_mysql:$domain}';
 .endd
-In most cases, the data that is looked up is not used (so for an SQL query, for
+In most cases, the value resulting from the lookup is not used (so for an SQL query, for
 example, it doesn't matter what field you select). Exim is interested only in
 whether or not the query succeeds. However, when a lookup is used for the
 example, it doesn't matter what field you select). Exim is interested only in
 whether or not the query succeeds. However, when a lookup is used for the
-&%domains%& option on a router, the data is preserved in the &$domain_data$&
+&%domains%& option on a router, the value is preserved in the &$domain_data$&
 variable and can be referred to in other options.
 variable and can be referred to in other options.
+.cindex "tainted data" "de-tainting"
+The value will be untainted.
+
 .next
 .new
 If the pattern starts with the name of a lookup type
 of either kind (single-key or query-style) it may be
 .next
 .new
 If the pattern starts with the name of a lookup type
 of either kind (single-key or query-style) it may be
-followed by a command and options,
+followed by a comma and options,
 The options are lookup-type specific and consist of a comma-separated list.
 Each item starts with a tag and and equals "=".
 .wen
 The options are lookup-type specific and consist of a comma-separated list.
 Each item starts with a tag and and equals "=".
 .wen
+
 .next
 .cindex "domain list" "matching literal domain name"
 If none of the above cases apply, a caseless textual comparison is made
 between the pattern and the domain.
 .next
 .cindex "domain list" "matching literal domain name"
 If none of the above cases apply, a caseless textual comparison is made
 between the pattern and the domain.
+
+The value for a match will be the list element string.
+.cindex "tainted data" "de-tainting"
+Note that this is commonly untainted
+(depending on the way the list was created).
+This is a useful way of obtaining an untainted equivalent to
+the domain, for later operations.
 .endlist
 
 .endlist
 
+
 Here is an example that uses several different kinds of pattern:
 .code
 domainlist funny_domains = \
 Here is an example that uses several different kinds of pattern:
 .code
 domainlist funny_domains = \
index ec769b3a98b0d2968ded1ca8fdd0587c616ee284..db02b37bd519c3c050e8aa413681361b00a0dc9f 100644 (file)
@@ -271,12 +271,6 @@ if ((semicolon = Ustrchr(pattern, ';')) == NULL)
 
 /*
 XXX  looks like $0 may be usable
 
 /*
 XXX  looks like $0 may be usable
-XXX  could add setting of *valueptr to all the OK returns; seems doable here, the Q
-     is: what effect would it have at config-file level.  domain_data & local_part_data
-     would get filled in... might anyone be checking it for emptiness?  I think the docs
-     do not say "will be empty otherwise", so that seems ok.
-XXX WORRY: we get new caching of named-list match results.  Is that cache checked
-     for the key being matched?
 */
   }
 
 */
   }
 
@@ -698,7 +692,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
             nb->cache_data = p;
             if (*valueptr)
               DEBUG(D_lists) debug_printf("data from lookup saved for "
             nb->cache_data = p;
             if (*valueptr)
               DEBUG(D_lists) debug_printf("data from lookup saved for "
-                "cache for %s: %s\n", ss, *valueptr);
+                "cache for %s: key '%s' value '%s'\n", ss, p->key, *valueptr);
             }
           }
         }
             }
           }
         }
@@ -710,7 +704,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
       else
         {
         DEBUG(D_lists) debug_printf("cached %s match for %s\n",
       else
         {
         DEBUG(D_lists) debug_printf("cached %s match for %s\n",
-          ((bits & (-bits)) == bits)? "yes" : "no", ss);
+          (bits & (-bits)) == bits ? "yes" : "no", ss);
 
         cached = US" - cached";
         if (valueptr)
 
         cached = US" - cached";
         if (valueptr)
index 77f3e5790e89bfaf61e54ef2ce916a50386359a4..b9104e1c27e33feb747fd989323b3adb5db010e9 100644 (file)
@@ -76,7 +76,7 @@ test1 in "somewhere"? no (end of list)
 address match test: subject=ok@test1 pattern=ok@test1
 test1 in "test1"? yes (matched "test1")
 ok@test1 in "ok@somewhere : ok@test1 : ok@test3"? yes (matched "ok@test1")
 address match test: subject=ok@test1 pattern=ok@test1
 test1 in "test1"? yes (matched "test1")
 ok@test1 in "ok@somewhere : ok@test1 : ok@test3"? yes (matched "ok@test1")
-data from lookup saved for cache for +ok_senders: test1
+data from lookup saved for cache for +ok_senders: key 'ok@test1' value 'test1'
 ok@test1 in "+ok_senders"? yes (matched "+ok_senders")
 check sender_domains = +ok_sender_domains
 test1 in "somewhere : test1 : test3"? yes (matched "test1")
 ok@test1 in "+ok_senders"? yes (matched "+ok_senders")
 check sender_domains = +ok_sender_domains
 test1 in "somewhere : test1 : test3"? yes (matched "test1")
@@ -172,7 +172,7 @@ test3 in "test1"? no (end of list)
 address match test: subject=ok@test3 pattern=ok@test3
 test3 in "test3"? yes (matched "test3")
 ok@test3 in "ok@somewhere : ok@test1 : ok@test3"? yes (matched "ok@test3")
 address match test: subject=ok@test3 pattern=ok@test3
 test3 in "test3"? yes (matched "test3")
 ok@test3 in "ok@somewhere : ok@test1 : ok@test3"? yes (matched "ok@test3")
-data from lookup saved for cache for +ok_senders: test3
+data from lookup saved for cache for +ok_senders: key 'ok@test3' value 'test3'
 ok@test3 in "+ok_senders"? yes (matched "+ok_senders")
 check sender_domains = +ok_sender_domains
 test3 in "somewhere : test1 : test3"? yes (matched "test3")
 ok@test3 in "+ok_senders"? yes (matched "+ok_senders")
 check sender_domains = +ok_sender_domains
 test3 in "somewhere : test1 : test3"? yes (matched "test3")
index 8e53c8a18c43ca1407a08193c6fc58dfddf175e8..e270896479461ba520a43fdd109fd97fe72e1268 100644 (file)
@@ -105,7 +105,7 @@ smart1 router skipped: domains mismatch
 local_part=x domain=test.ex
 checking domains
 test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
 local_part=x domain=test.ex
 checking domains
 test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+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 <--------
 test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
@@ -188,7 +188,7 @@ smart1 router skipped: domains mismatch
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
-data from lookup saved for cache for +local_domains: myhost.test.ex
+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 <--------
 myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
@@ -304,7 +304,7 @@ smart1 router skipped: domains mismatch
 local_part=x domain=test.ex
 checking domains
 test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
 local_part=x domain=test.ex
 checking domains
 test.ex in "test.ex : myhost.test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+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 <--------
 test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
@@ -361,7 +361,7 @@ smart1 router skipped: domains mismatch
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
 local_part=x domain=myhost.test.ex
 checking domains
 myhost.test.ex in "test.ex : myhost.test.ex"? yes (matched "myhost.test.ex")
-data from lookup saved for cache for +local_domains: myhost.test.ex
+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 <--------
 myhost.test.ex in "! +local_domains"? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
index 886e40b8bf4b7e8efbe9d5dc53bac9251e99f309..e412e874ff6970e62ea8c2e6fa03b1b5d3c26cd9 100644 (file)
@@ -97,7 +97,7 @@ deny: condition test failed in ACL "check_recipient"
 processing "accept" (TESTSUITE/test-config 31)
 check domains = +local_domains
 test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
 processing "accept" (TESTSUITE/test-config 31)
 check domains = +local_domains
 test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
 test.ex in "+local_domains"? yes (matched "+local_domains")
 accept: condition test succeeded in ACL "check_recipient"
 end of ACL "check_recipient": ACCEPT
 test.ex in "+local_domains"? yes (matched "+local_domains")
 accept: condition test succeeded in ACL "check_recipient"
 end of ACL "check_recipient": ACCEPT
index 6615535a31e490d7c8882985107117a01e067542..c96adbdeadea2128b082a58c4484ec08ea80ba6a 100644 (file)
@@ -120,7 +120,7 @@ accept: condition test failed in ACL "check_recipient"
 processing "accept" (TESTSUITE/test-config 24)
 check domains = +local_domains
 test.ex in "test.ex"? yes (matched "test.ex")
 processing "accept" (TESTSUITE/test-config 24)
 check domains = +local_domains
 test.ex in "test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
 test.ex in "+local_domains"? yes (matched "+local_domains")
 accept: condition test succeeded in ACL "check_recipient"
 end of ACL "check_recipient": ACCEPT
 test.ex in "+local_domains"? yes (matched "+local_domains")
 accept: condition test succeeded in ACL "check_recipient"
 end of ACL "check_recipient": ACCEPT
index a1fec0cbe7882f1de2e68ea7d68efc937315711c..d8fc7e6cb1c266e43f9d267315fa3b2aa9260ca2 100644 (file)
@@ -63,7 +63,7 @@ checking domains
 test.ex in "never.ex"? no (end of list)
 test.ex in "never1.ex"? no (end of list)
 test.ex in "test.ex"? yes (matched "test.ex")
 test.ex in "never.ex"? no (end of list)
 test.ex in "never1.ex"? no (end of list)
 test.ex in "test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
 test.ex in "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 test.ex in "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
@@ -237,7 +237,7 @@ checking domains
 test.ex in "never.ex"? no (end of list)
 test.ex in "never1.ex"? no (end of list)
 test.ex in "test.ex"? yes (matched "test.ex")
 test.ex in "never.ex"? no (end of list)
 test.ex in "never1.ex"? no (end of list)
 test.ex in "test.ex"? yes (matched "test.ex")
-data from lookup saved for cache for +local_domains: test.ex
+data from lookup saved for cache for +local_domains: key 'test.ex' value 'test.ex'
 test.ex in "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 test.ex in "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
index e46e09dbe450b151dd23bba607a2c313307117b1..d00bc9f00ffb5607d4862129daaf8edea544f49a 100644 (file)
@@ -21,7 +21,7 @@ checking local_parts
 CALLER in "never"? no (end of list)
 CALLER in "never1"? no (end of list)
 CALLER in "CALLER"? yes (matched "CALLER")
 CALLER in "never"? no (end of list)
 CALLER in "never1"? no (end of list)
 CALLER in "CALLER"? yes (matched "CALLER")
-data from lookup saved for cache for +local_localparts: CALLER
+data from lookup saved for cache for +local_localparts: key 'CALLER' value 'CALLER'
 CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
@@ -150,7 +150,7 @@ checking local_parts
 CALLER in "never"? no (end of list)
 CALLER in "never1"? no (end of list)
 CALLER in "CALLER"? yes (matched "CALLER")
 CALLER in "never"? no (end of list)
 CALLER in "never1"? no (end of list)
 CALLER in "CALLER"? yes (matched "CALLER")
-data from lookup saved for cache for +local_localparts: CALLER
+data from lookup saved for cache for +local_localparts: key 'CALLER' value 'CALLER'
 CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
index 43986ebba2d430b02903137d18058fa90ac2011b..216ee88bd56cd93592680ff10f25c5ab9562bfb5 100644 (file)
@@ -34,7 +34,7 @@ CALLER@test.ex in "never1@test.ex"? no (end of list)
 address match test: subject=CALLER@test.ex pattern=CALLER@test.ex
 test.ex in "test.ex"? yes (matched "test.ex")
 CALLER@test.ex in "CALLER@test.ex"? yes (matched "CALLER@test.ex")
 address match test: subject=CALLER@test.ex pattern=CALLER@test.ex
 test.ex in "test.ex"? yes (matched "test.ex")
 CALLER@test.ex in "CALLER@test.ex"? yes (matched "CALLER@test.ex")
-data from lookup saved for cache for +local_addresses: test.ex
+data from lookup saved for cache for +local_addresses: key 'CALLER@test.ex' value 'test.ex'
 CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"? no (matched "! +local_addresses")
 r1 router skipped: senders mismatch
 --------> r2 router <--------
 CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"? no (matched "! +local_addresses")
 r1 router skipped: senders mismatch
 --------> r2 router <--------
index f3bb873a621930162b93096b299f71f80716f53d..7433c9d046d4c98e7eb1a3d3d7ad901e9dc4a93c 100644 (file)
@@ -38,7 +38,7 @@ accept: condition test failed in ACL "check_rcpt"
 processing "accept" (TESTSUITE/test-config 23)
 check domains = +relay_domains
 a.b.c in "a.b.c"? yes (matched "a.b.c")
 processing "accept" (TESTSUITE/test-config 23)
 check domains = +relay_domains
 a.b.c in "a.b.c"? yes (matched "a.b.c")
-data from lookup saved for cache for +relay_domains: a.b.c
+data from lookup saved for cache for +relay_domains: key 'a.b.c' value 'a.b.c'
 a.b.c in "+relay_domains"? yes (matched "+relay_domains")
 check verify = recipient
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 a.b.c in "+relay_domains"? yes (matched "+relay_domains")
 check verify = recipient
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -62,7 +62,7 @@ r1 router skipped: domains mismatch
 local_part=x domain=x.test.ex
 checking domains
 x.test.ex in "*.test.ex"? yes (matched "*.test.ex")
 local_part=x domain=x.test.ex
 checking domains
 x.test.ex in "*.test.ex"? yes (matched "*.test.ex")
-data from lookup saved for cache for +local_domains: .test.ex
+data from lookup saved for cache for +local_domains: key 'x.test.ex' value '.test.ex'
 x.test.ex in "+local_domains"? yes (matched "+local_domains")
 calling r2 router
 r2 router called for x@x.test.ex
 x.test.ex in "+local_domains"? yes (matched "+local_domains")
 calling r2 router
 r2 router called for x@x.test.ex
index 02207cc97db1f4eec9b06a2f8d224756692e00ac..cf5659d3fb93a7063467f5c8eebbb15c57efc32b 100644 (file)
@@ -59,7 +59,7 @@ set transport ut4
 queued for ut4 transport: local_part = d3
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut4 transport: local_part = d3
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d3@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d3@myhost.test.ex
   transport: ut4
@@ -87,7 +87,7 @@ ut4 router called for d2@myhost.test.ex
 queued for ut4 transport: local_part = d2
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut4 transport: local_part = d2
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d2@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d2@myhost.test.ex
   transport: ut4
@@ -115,7 +115,7 @@ ut4 router called for d1@myhost.test.ex
 queued for ut4 transport: local_part = d1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut4 transport: local_part = d1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d1@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d1@myhost.test.ex
   transport: ut4
@@ -140,7 +140,7 @@ set transport ut3
 queued for ut3 transport: local_part = c1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut3 transport: local_part = c1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^c\d
 routed by ut3 router (unseen)
   envelope to: c1@myhost.test.ex
   transport: ut3
 routed by ut3 router (unseen)
   envelope to: c1@myhost.test.ex
   transport: ut3
@@ -161,7 +161,7 @@ set transport ut2
 queued for ut2 transport: local_part = b1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut2 transport: local_part = b1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^b\d
 routed by ut2 router (unseen)
   envelope to: b1@myhost.test.ex
   transport: ut2
 routed by ut2 router (unseen)
   envelope to: b1@myhost.test.ex
   transport: ut2
@@ -178,7 +178,7 @@ set transport ut1
 queued for ut1 transport: local_part = a1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut1 transport: local_part = a1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^a\d
 routed by u1 router (unseen)
   envelope to: a1@myhost.test.ex
   transport: ut1
 routed by u1 router (unseen)
   envelope to: a1@myhost.test.ex
   transport: ut1
index 117d285c476fac50504047244305bfa104d3b185..439165e3733e559aebbbbeb4222f2136bf40a2f3 100644 (file)
@@ -121,7 +121,7 @@ set transport ut6
 queued for ut6 transport: local_part = f3
 domain = myhost.test.ex
   errors_to=
 queued for ut6 transport: local_part = f3
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^f\d
 routed by ut6 router (unseen)
   envelope to: f3@myhost.test.ex
   transport: ut6
 routed by ut6 router (unseen)
   envelope to: f3@myhost.test.ex
   transport: ut6
@@ -159,7 +159,7 @@ ut6 router called for f2@myhost.test.ex
 queued for ut6 transport: local_part = f2
 domain = myhost.test.ex
   errors_to=
 queued for ut6 transport: local_part = f2
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^f\d
 routed by ut6 router (unseen)
   envelope to: f2@myhost.test.ex
   transport: ut6
 routed by ut6 router (unseen)
   envelope to: f2@myhost.test.ex
   transport: ut6
@@ -197,7 +197,7 @@ ut6 router called for f1@myhost.test.ex
 queued for ut6 transport: local_part = f1
 domain = myhost.test.ex
   errors_to=
 queued for ut6 transport: local_part = f1
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^f\d
 routed by ut6 router (unseen)
   envelope to: f1@myhost.test.ex
   transport: ut6
 routed by ut6 router (unseen)
   envelope to: f1@myhost.test.ex
   transport: ut6
@@ -231,7 +231,7 @@ set transport ut5
 queued for ut5 transport: local_part = e1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut5 transport: local_part = e1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^e\d
 routed by ut5 router (unseen)
   envelope to: e1@myhost.test.ex
   transport: ut5
 routed by ut5 router (unseen)
   envelope to: e1@myhost.test.ex
   transport: ut5
@@ -260,7 +260,7 @@ set transport ut4
 queued for ut4 transport: local_part = d3
 domain = myhost.test.ex
   errors_to=
 queued for ut4 transport: local_part = d3
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d3@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d3@myhost.test.ex
   transport: ut4
@@ -289,7 +289,7 @@ ut4 router called for d2@myhost.test.ex
 queued for ut4 transport: local_part = d2
 domain = myhost.test.ex
   errors_to=
 queued for ut4 transport: local_part = d2
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d2@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d2@myhost.test.ex
   transport: ut4
@@ -318,7 +318,7 @@ ut4 router called for d1@myhost.test.ex
 queued for ut4 transport: local_part = d1
 domain = myhost.test.ex
   errors_to=
 queued for ut4 transport: local_part = d1
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^d\d
 routed by ut4 router (unseen)
   envelope to: d1@myhost.test.ex
   transport: ut4
 routed by ut4 router (unseen)
   envelope to: d1@myhost.test.ex
   transport: ut4
@@ -344,7 +344,7 @@ set transport ut3
 queued for ut3 transport: local_part = c1
 domain = myhost.test.ex
   errors_to=
 queued for ut3 transport: local_part = c1
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^c\d
 routed by ut3 router (unseen)
   envelope to: c1@myhost.test.ex
   transport: ut3
 routed by ut3 router (unseen)
   envelope to: c1@myhost.test.ex
   transport: ut3
@@ -366,7 +366,7 @@ set transport ut2
 queued for ut2 transport: local_part = b1
 domain = myhost.test.ex
   errors_to=
 queued for ut2 transport: local_part = b1
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^b\d
 routed by ut2 router (unseen)
   envelope to: b1@myhost.test.ex
   transport: ut2
 routed by ut2 router (unseen)
   envelope to: b1@myhost.test.ex
   transport: ut2
@@ -384,7 +384,7 @@ set transport ut1
 queued for ut1 transport: local_part = a1
 domain = myhost.test.ex
   errors_to=
 queued for ut1 transport: local_part = a1
 domain = myhost.test.ex
   errors_to=
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^a\d
 routed by u1 router (unseen)
   envelope to: a1@myhost.test.ex
   transport: ut1
 routed by u1 router (unseen)
   envelope to: a1@myhost.test.ex
   transport: ut1
@@ -978,7 +978,7 @@ set transport ut1
 queued for ut1 transport: local_part = h1
 domain = myhost.test.ex
   errors_to=NULL
 queued for ut1 transport: local_part = h1
 domain = myhost.test.ex
   errors_to=NULL
-  domain_data=NULL localpart_data=NULL
+  domain_data=NULL localpart_data=^h\d
 routed by ut8 router (unseen)
   envelope to: h1@myhost.test.ex
   transport: ut1
 routed by ut8 router (unseen)
   envelope to: h1@myhost.test.ex
   transport: ut1
index 9ec9025349bf0abf1b6426441192b4c9dbbec45f..f1edd1ae3b76248c41d5e231fd0a64d90cef4452 100644 (file)
@@ -43,9 +43,9 @@ file lookup required for b.domain
   in TESTSUITE/aux-fixed/0414.list2
 lookup yielded: b.domain-data
 b.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list2")
   in TESTSUITE/aux-fixed/0414.list2
 lookup yielded: b.domain-data
 b.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list2")
-data from lookup saved for cache for +B: b.domain-data
+data from lookup saved for cache for +B: key 'b.domain' value 'b.domain-data'
 b.domain in "+A : +B"? yes (matched "+B")
 b.domain in "+A : +B"? yes (matched "+B")
-data from lookup saved for cache for +C: b.domain-data
+data from lookup saved for cache for +C: key 'b.domain' value 'b.domain-data'
 b.domain in "!+C"? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 b.domain in "!+C"? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
@@ -89,9 +89,9 @@ file lookup required for a.domain
   in TESTSUITE/aux-fixed/0414.list1
 lookup yielded: a.domain-data
 a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list1"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list1")
   in TESTSUITE/aux-fixed/0414.list1
 lookup yielded: a.domain-data
 a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list1"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list1")
-data from lookup saved for cache for +A: a.domain-data
+data from lookup saved for cache for +A: key 'a.domain' value 'a.domain-data'
 a.domain in "+A : +B"? yes (matched "+A")
 a.domain in "+A : +B"? yes (matched "+A")
-data from lookup saved for cache for +C: a.domain-data
+data from lookup saved for cache for +C: key 'a.domain' value 'a.domain-data'
 a.domain in "!+C"? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 a.domain in "!+C"? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
index f4619161809c3536c0c4ead9de7bdf92271353b1..ef3ee27bb0557e89dc36746a12b4689627a835db 100644 (file)
@@ -18,7 +18,7 @@ routing k@mxt13.test.ex
 local_part=k domain=mxt13.test.ex
 checking domains
 mxt13.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? no (matched "!mxt13.test.ex")
 local_part=k domain=mxt13.test.ex
 checking domains
 mxt13.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? no (matched "!mxt13.test.ex")
-data from lookup saved for cache for +local_domains: mxt13.test.ex
+data from lookup saved for cache for +local_domains: key 'mxt13.test.ex' value 'mxt13.test.ex'
 mxt13.test.ex in "! +local_domains"? yes (end of list)
 calling dnslookup router
 dnslookup router called for k@mxt13.test.ex
 mxt13.test.ex in "! +local_domains"? yes (end of list)
 calling dnslookup router
 dnslookup router called for k@mxt13.test.ex
index cc39a583218ec8280ece11e6f3f3d79984be4d96..dc6639ecc64842f48b75be6eff7db3bfc27b3656 100644 (file)
@@ -33,7 +33,7 @@ file lookup required for domain1
   in TESTSUITE/aux-fixed/0464.domains
 lookup yielded: data for domain1
 domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? yes (matched "lsearch;TESTSUITE/aux-fixed/0464.domains")
   in TESTSUITE/aux-fixed/0464.domains
 lookup yielded: data for domain1
 domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? yes (matched "lsearch;TESTSUITE/aux-fixed/0464.domains")
-data from lookup saved for cache for +special_domains: data for domain1
+data from lookup saved for cache for +special_domains: key 'domain1' value 'data for domain1'
 domain1 in "+special_domains"? yes (matched "+special_domains")
 check verify = recipient
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 domain1 in "+special_domains"? yes (matched "+special_domains")
 check verify = recipient
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
index 483cf1ad0f9d62b88f7f3d02580145a969d11bcd..c8535fc352ef5d52e6be5dd14c781b2b7c1555f5 100644 (file)
@@ -24,7 +24,7 @@ local host has lowest MX
 host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
   eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5 
 mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
 host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
   eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5 
 mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
-data from lookup saved for cache for +anymx: @mx_any
+data from lookup saved for cache for +anymx: key 'mxt1.test.ex' value '@mx_any'
 mxt1.test.ex in "+anymx"? yes (matched "+anymx")
 checking "condition" "${if match_domain{$domain}{+anymx}{yes}}"...
 DNS lookup of mxt1.test.ex (MX) using fakens
 mxt1.test.ex in "+anymx"? yes (matched "+anymx")
 checking "condition" "${if match_domain{$domain}{+anymx}{yes}}"...
 DNS lookup of mxt1.test.ex (MX) using fakens