Fix 2-phase, in-order queue run delivery order master github/master
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 18 Jun 2024 08:23:51 +0000 (09:23 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 18 Jun 2024 09:40:14 +0000 (10:40 +0100)
Broken-by: a39bd74d3e94
388 files changed:
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
doc/doc-txt/experimental-spec.txt
doc/doc-txt/id-wellknown.txt [new file with mode: 0644]
src/OS/Makefile-Base
src/OS/os.h-FreeBSD
src/OS/os.h-Linux
src/exim_monitor/em_globals.c
src/exim_monitor/em_hdr.h
src/exim_monitor/em_log.c
src/exim_monitor/em_queue.c
src/exim_monitor/em_version.c
src/scripts/MakeLinks
src/src/EDITME
src/src/acl.c
src/src/arc.c
src/src/auths/cram_md5.c
src/src/auths/dovecot.c
src/src/auths/external.c
src/src/auths/get_data.c
src/src/auths/get_no64_data.c
src/src/auths/plaintext.c
src/src/auths/spa.c
src/src/auths/tls.c
src/src/auths/xtextencode.c
src/src/buildconfig.c
src/src/config.h.defaults
src/src/daemon.c
src/src/dbfn.c
src/src/dbfunctions.h
src/src/deliver.c
src/src/directory.c
src/src/dkim.c
src/src/dkim_transport.c
src/src/dmarc.c
src/src/dns.c
src/src/exim.c
src/src/exim.h
src/src/exim_dbmbuild.c
src/src/exim_dbutil.c
src/src/exim_lock.c
src/src/exinext.src
src/src/expand.c
src/src/filter.c
src/src/filtertest.c
src/src/functions.h
src/src/globals.c
src/src/globals.h
src/src/hintsdb.h
src/src/hintsdb_structs.h
src/src/host.c
src/src/local_scan.h
src/src/log.c
src/src/lookups/dbmdb.c
src/src/lookups/dnsdb.c
src/src/lookups/dsearch.c
src/src/lookups/ldap.c
src/src/lookups/lsearch.c
src/src/lookups/oracle.c
src/src/lookups/redis.c
src/src/lookups/sqlite.c
src/src/macro_predef.c
src/src/macros.h
src/src/malware.c
src/src/match.c
src/src/moan.c
src/src/os.c
src/src/parse.c
src/src/path_max.h [new file with mode: 0644]
src/src/pdkim/pdkim.c
src/src/pdkim/signing.c
src/src/proxy.c
src/src/queue.c
src/src/rda.c
src/src/readconf.c
src/src/regex.c
src/src/retry.c
src/src/rewrite.c
src/src/rfc2047.c
src/src/route.c
src/src/routers/accept.c
src/src/routers/dnslookup.c
src/src/routers/ipliteral.c
src/src/routers/iplookup.c
src/src/routers/manualroute.c
src/src/routers/queryprogram.c
src/src/routers/redirect.c
src/src/routers/rf_expand_data.c
src/src/routers/rf_functions.h
src/src/routers/rf_get_errors_address.c
src/src/routers/rf_get_transport.c
src/src/search.c
src/src/smtp_in.c
src/src/smtp_out.c
src/src/spf.c
src/src/spf.h
src/src/spool_in.c
src/src/spool_out.c
src/src/store.c
src/src/string.c
src/src/structs.h
src/src/tls-gnu.c
src/src/tls-openssl.c
src/src/tls.c
src/src/transport.c
src/src/transports/appendfile.c
src/src/transports/autoreply.c
src/src/transports/lmtp.c
src/src/transports/pipe.c
src/src/transports/queuefile.c
src/src/transports/smtp.c
src/src/transports/smtp.h
src/src/transports/smtp_socks.c
src/src/tree.c
src/src/verify.c
src/src/xclient.c
src/util/mailtest [new file with mode: 0755]
test/aux-fixed/2500.dir/..subdir/regfile [new file with mode: 0644]
test/aux-fixed/4040/acme-response [new file with mode: 0644]
test/aux-fixed/4040/sub/acme-response [new file with mode: 0644]
test/confs/0612
test/confs/0615
test/confs/0637 [new file with mode: 0644]
test/confs/4020
test/confs/4040 [new file with mode: 0644]
test/confs/5708 [new file with mode: 0644]
test/confs/5709 [new file with mode: 0644]
test/confs/5890
test/confs/5891
test/confs/5892
test/confs/5893
test/confs/5894
test/confs/5895
test/log/0367
test/log/0440
test/log/0614
test/log/0615
test/log/0630
test/log/0637 [new file with mode: 0644]
test/log/1157
test/log/1163
test/log/4040 [new file with mode: 0644]
test/log/4714
test/log/5708 [new file with mode: 0644]
test/log/5709 [new file with mode: 0644]
test/mail/1157.userb
test/mail/1157.userc
test/mail/1157.usery
test/mail/1157.userz
test/mail/1163.usery0
test/mail/1163.usery1
test/mail/1163.userz0
test/mail/1163.userz1
test/msglog/1157.10HmbN-000000005vi-0000
test/msglog/1157.10HmbO-000000005vi-0000
test/paniclog/0630
test/rejectlog/0637 [new file with mode: 0644]
test/rejectlog/4040 [new file with mode: 0644]
test/rejectlog/5708 [new file with mode: 0644]
test/runtest
test/scripts/0000-Basic/0038
test/scripts/0000-Basic/0121
test/scripts/0000-Basic/0217
test/scripts/0000-Basic/0615
test/scripts/0000-Basic/0637 [new file with mode: 0644]
test/scripts/2300-DBM/2301 [deleted file]
test/scripts/2300-DBM/2302 [deleted file]
test/scripts/2301-DBM-BDB/2301 [new file with mode: 0644]
test/scripts/2301-DBM-BDB/2302 [new file with mode: 0644]
test/scripts/2301-DBM-BDB/REQUIRES [new file with mode: 0644]
test/scripts/2500-dsearch/2500
test/scripts/4040-wellknown/4040 [new file with mode: 0644]
test/scripts/4040-wellknown/REQUIRES [new file with mode: 0644]
test/scripts/5700-events/5700
test/scripts/5700-events/5708 [new file with mode: 0644]
test/scripts/5709_dnsdb_events/5709 [new file with mode: 0644]
test/scripts/5709_dnsdb_events/REQUIRES [new file with mode: 0644]
test/stderr/0002
test/stderr/0003
test/stderr/0004
test/stderr/0020
test/stderr/0021
test/stderr/0022
test/stderr/0023
test/stderr/0037
test/stderr/0041
test/stderr/0042
test/stderr/0043
test/stderr/0044
test/stderr/0056
test/stderr/0057
test/stderr/0058
test/stderr/0059
test/stderr/0060
test/stderr/0061
test/stderr/0062
test/stderr/0063
test/stderr/0064
test/stderr/0065
test/stderr/0066
test/stderr/0067
test/stderr/0069
test/stderr/0070
test/stderr/0077
test/stderr/0078
test/stderr/0084
test/stderr/0085
test/stderr/0087
test/stderr/0089
test/stderr/0091
test/stderr/0092
test/stderr/0094
test/stderr/0117
test/stderr/0121
test/stderr/0123
test/stderr/0124
test/stderr/0130
test/stderr/0138
test/stderr/0139
test/stderr/0143
test/stderr/0145
test/stderr/0149
test/stderr/0157
test/stderr/0161
test/stderr/0169
test/stderr/0175
test/stderr/0183
test/stderr/0217
test/stderr/0218
test/stderr/0227
test/stderr/0234
test/stderr/0243
test/stderr/0249
test/stderr/0251
test/stderr/0264
test/stderr/0275
test/stderr/0276
test/stderr/0277
test/stderr/0278
test/stderr/0279
test/stderr/0281
test/stderr/0283
test/stderr/0294
test/stderr/0297
test/stderr/0303
test/stderr/0305
test/stderr/0306
test/stderr/0308
test/stderr/0315
test/stderr/0317
test/stderr/0325
test/stderr/0332
test/stderr/0333
test/stderr/0342
test/stderr/0357
test/stderr/0358
test/stderr/0360
test/stderr/0361
test/stderr/0362
test/stderr/0364
test/stderr/0368
test/stderr/0370
test/stderr/0371
test/stderr/0374
test/stderr/0375
test/stderr/0376
test/stderr/0377
test/stderr/0378
test/stderr/0379
test/stderr/0380
test/stderr/0381
test/stderr/0382
test/stderr/0386
test/stderr/0387
test/stderr/0388
test/stderr/0391
test/stderr/0393
test/stderr/0396
test/stderr/0398
test/stderr/0399
test/stderr/0402
test/stderr/0403
test/stderr/0404
test/stderr/0408
test/stderr/0414
test/stderr/0419
test/stderr/0426
test/stderr/0432
test/stderr/0433
test/stderr/0435
test/stderr/0437
test/stderr/0438
test/stderr/0443
test/stderr/0450
test/stderr/0462
test/stderr/0463
test/stderr/0464
test/stderr/0465
test/stderr/0467
test/stderr/0469
test/stderr/0471
test/stderr/0473
test/stderr/0475
test/stderr/0476
test/stderr/0479
test/stderr/0483
test/stderr/0484
test/stderr/0487
test/stderr/0489
test/stderr/0499
test/stderr/0512
test/stderr/0513
test/stderr/0514
test/stderr/0525
test/stderr/0529
test/stderr/0543
test/stderr/0544
test/stderr/0545
test/stderr/0554
test/stderr/0563
test/stderr/0575
test/stderr/0578
test/stderr/0584
test/stderr/0588
test/stderr/0609
test/stderr/0620
test/stderr/0623
test/stderr/0628
test/stderr/0630
test/stderr/0632
test/stderr/0909
test/stderr/1000
test/stderr/1002
test/stderr/1006
test/stderr/1007
test/stderr/1150
test/stderr/1157
test/stderr/1160
test/stderr/2035
test/stderr/2135
test/stderr/2200
test/stderr/2201
test/stderr/2202
test/stderr/2600
test/stderr/2610
test/stderr/2620
test/stderr/3000
test/stderr/3201
test/stderr/3208
test/stderr/3210
test/stderr/3211
test/stderr/3212
test/stderr/3400
test/stderr/3404
test/stderr/3408
test/stderr/3500
test/stderr/4052
test/stderr/4510
test/stderr/4530
test/stderr/4802
test/stderr/4803
test/stderr/5000
test/stderr/5004
test/stderr/5005
test/stderr/5006
test/stderr/5008
test/stderr/5204
test/stderr/5403
test/stderr/5410
test/stderr/5420
test/stderr/5820
test/stderr/5840
test/stdout/0121
test/stdout/0264
test/stdout/0345
test/stdout/0367
test/stdout/0440
test/stdout/0543
test/stdout/0572
test/stdout/0637 [new file with mode: 0644]
test/stdout/0699
test/stdout/1000
test/stdout/2500
test/stdout/4040 [new file with mode: 0644]
test/stdout/4714
test/stdout/5708 [new file with mode: 0644]
test/stdout/5709 [new file with mode: 0644]

index f7ed7964ab4e2281c36e02212fe1c511affc0292..202c2765954dbe6d5dfe4a3d5804131904569b3a 100644 (file)
@@ -1805,6 +1805,11 @@ suited to Exim's usage model.
 Yet another DBM library, called &'tdb'&, is available from
 &url(https://sourceforge.net/projects/tdb/files/). It has its own interface, and also
 operates on a single file.
+.next
+.new
+It is possible to use sqlite3 (&url(https://www.sqlite.org/index.html))
+for the DBM library.
+.wen
 .endlist
 
 .cindex "USE_DB"
@@ -1816,8 +1821,9 @@ USE_DB in an appropriate configuration file (typically
 .code
 USE_DB=yes
 .endd
-Similarly, for gdbm you set USE_GDBM, and for tdb you set USE_TDB. An
-error is diagnosed if you set more than one of these.
+Similarly, for gdbm you set USE_GDBM, for tdb you set USE_TDB,
+and for sqlite3 you set USE_SQLITE.
+An error is diagnosed if you set more than one of these.
 You can set USE_NDBM if needed to override an operating system default.
 
 At the lowest level, the build-time configuration sets none of these options,
@@ -1833,6 +1839,7 @@ in one of these lines:
 .code
 DBMLIB = -ldb
 DBMLIB = -ltdb
+DBMLIB = -lsqlite3
 DBMLIB = -lgdbm -lgdbm_compat
 .endd
 The last of those was for a Linux having GDBM provide emulated NDBM facilities.
@@ -3101,7 +3108,7 @@ options, as appropriate. The &%-bnq%& option (see below) provides a way of
 suppressing this for special cases.
 
 Policy checks on the contents of local messages can be enforced by means of
-the non-SMTP ACL. See chapter &<<CHAPACL>>& for details.
+the non-SMTP ACL. See section &<<SECnonSMTP>>& for details.
 
 .cindex "return code" "for &%-bm%&"
 The return code is zero if the message is successfully accepted. Otherwise, the
@@ -3377,7 +3384,7 @@ dots doubled), terminated by a line containing just a single dot. An error is
 provoked if the terminating dot is missing. A further message may then follow.
 
 As for other local message submissions, the contents of incoming batch SMTP
-messages can be checked using the non-SMTP ACL (see chapter &<<CHAPACL>>&).
+messages can be checked using the non-SMTP ACL (see section &<<SECnonSMTP>>&).
 Unqualified addresses are automatically qualified using &%qualify_domain%& and
 &%qualify_recipient%&, as appropriate, unless the &%-bnq%& option is used.
 
@@ -4715,7 +4722,7 @@ all selected messages, not just the first; frozen messages are included when
 
 The &%-R%& option makes it straightforward to initiate delivery of all messages
 to a given domain after a host has been down for some time. When the SMTP
-command ETRN is accepted by its ACL (see chapter &<<CHAPACL>>&), its default
+command ETRN is accepted by its ACL (see section &<<SECTETRN>>&), its default
 effect is to run Exim with the &%-R%& option, but it can be configured to run
 an arbitrary command instead.
 
@@ -6846,7 +6853,10 @@ by default, but has an option to omit them (see section &<<SECTdbmbuild>>&).
 .cindex "dsearch lookup type"
 The given file must be an absolute directory path; this is searched for an entry
 whose name is the key by calling the &[lstat()]& function.
-The key may not contain any forward slash characters.
+.new
+Unless the options (below) permit a path,
+.wen
+the key may not contain any forward slash characters.
 If &[lstat()]& succeeds then so does the lookup.
 .cindex "tainted data" "dsearch result"
 The result is regarded as untainted.
@@ -6855,7 +6865,7 @@ Options for the lookup can be given by appending them after the word "dsearch",
 separated by a comma.  Options, if present, are a comma-separated list having
 each element starting with a tag name and an equals.
 
-Two options are supported, for the return value and for filtering match
+Three options are supported, for the return value and for filtering match
 candidates.
 The "ret" option requests an alternate result value of
 the entire path for the entry. Example:
@@ -6863,6 +6873,7 @@ the entire path for the entry. Example:
 ${lookup {passwd} dsearch,ret=full {/etc}}
 .endd
 The default result is just the requested entry.
+
 The "filter" option requests that only directory entries of a given type
 are matched. The match value is one of "file", "dir" or "subdir" (the latter
 not matching "." or ".."). Example:
@@ -6872,6 +6883,14 @@ ${lookup {passwd} dsearch,filter=file {/etc}}
 The default matching is for any entry type, including directories
 and symlinks.
 
+The "key" option relaxes the restriction that only a simple path component can
+be searched for, to permit a sequence of path components. Example:
+.code
+${lookup {foo/bar} dsearch,key=path {/etc}}
+.endd
+If this option is used, a ".." component in the key is specifically disallowed.
+The default operation is that the key may only be a single path component.
+
 An example of how this
 lookup can be used to support virtual domains is given in section
 &<<SECTvirtualdomains>>&.
@@ -6901,8 +6920,8 @@ key is found. The first key that matches is used; there is no attempt to find a
 lookup types support only literal keys.
 
 &*Warning 2*&: In a host list, you must always use &(net-iplsearch)& so that
-the implicit key is the host's IP address rather than its name (see section
-&<<SECThoslispatsikey>>&).
+the implicit key is the host's IP address rather than its name
+(see section &<<SECThoslispatsikey>>&).
 
 &*Warning 3*&: Do not use an IPv4-mapped IPv6 address for a key; use the
 IPv4, in dotted-quad form. (Exim converts IPv4-mapped IPv6 addresses to this
@@ -8202,6 +8221,11 @@ or delete command), the result of the lookup is the number of rows affected.
 anything (for example, setting a field to the value it already has), the result
 is zero because no rows are affected.
 
+.new
+To get an encryted connection, use a Mysql option file with the required
+parameters for the connection.
+.wen
+
 
 .subsection "Special PostgreSQL features" SECID74
 PostgreSQL lookups can also use Unix domain socket connections to the database.
@@ -9235,8 +9259,9 @@ is not used.
 
 &*Reminder*&: With this kind of pattern, you must have host &'names'& as
 keys in the file, not IP addresses. If you want to do lookups based on IP
-addresses, you must precede the search type with &"net-"& (see section
-&<<SECThoslispatsikey>>&). There is, however, no reason why you could not use
+addresses, you must precede the search type with &"net-"&
+(see section &<<SECThoslispatsikey>>&).
+There is, however, no reason why you could not use
 two items in the same list, one doing an address lookup and one doing a name
 lookup, both using the same file.
 
@@ -11567,6 +11592,19 @@ literal question mark).
 .cindex "&%utf8_localpart_from_alabel%& expansion item"
 These convert EAI mail name components between UTF-8 and a-label forms.
 For information on internationalisation support see &<<SECTi18nMTA>>&.
+
+
+.new
+.vitem &*${xtextd:*&<&'string'&>&*}*&
+.cindex "text forcing in strings"
+.cindex "string" "xtext decoding"
+.cindex "xtext"
+.cindex "&%xtextd%& expansion item"
+This performs xtext decoding of the string (per RFC 3461 section 4).
+.wen
+
+
+
 .endlist
 
 
@@ -12056,7 +12094,8 @@ where the first item in the list is the empty string.
 .next
 The item @[] matches any of the local host's interface addresses.
 .next
-Single-key lookups are assumed to be like &"net-"& style lookups in host lists,
+Single-key lookups are assumed to be like &"net-"& style lookups in host lists
+(see section &<<SECThoslispatsikey>>&),
 even if &`net-`& is not specified. There is never any attempt to turn the IP
 address into a host name. The most common type of linear search for
 &*match_ip*& is likely to be &*iplsearch*&, in which the file can contain CIDR
@@ -14817,6 +14856,7 @@ listed in more than one group.
 .row &%acl_smtp_rcpt%&               "ACL for RCPT"
 .row &%acl_smtp_starttls%&           "ACL for STARTTLS"
 .row &%acl_smtp_vrfy%&               "ACL for VRFY"
+.row &%acl_smtp_wellknown%&          "ACL for WELLKNOWN"
 .row &%av_scanner%&                  "specify virus scanner"
 .row &%check_rfc2047_length%&        "check length of RFC 2047 &""encoded &&&
                                       words""&"
@@ -14983,6 +15023,7 @@ See also the &'Policy controls'& section above.
 .row &%prdr_enable%&                 "advertise PRDR to all hosts"
 .row &%smtputf8_advertise_hosts%&    "advertise SMTPUTF8 to these hosts"
 .row &%tls_advertise_hosts%&         "advertise TLS to these hosts"
+.row &%wellknown_advertise_hosts%&   "advertise WELLKNOWN to these hosts"
 .endtable
 
 
@@ -15106,7 +15147,7 @@ log_selector = +8bitmime
 .cindex "&ACL;" "for non-SMTP messages"
 .cindex "non-SMTP messages" "ACLs for"
 This option defines the ACL that is run when a non-SMTP message has been
-read and is on the point of being accepted. See chapter &<<CHAPACL>>& for
+read and is on the point of being accepted. See section &<<SECnonSMTP>>& for
 further details.
 
 .option acl_not_smtp_mime main string&!! unset
@@ -15118,24 +15159,26 @@ SMTP messages.
 .cindex "&ACL;" "at start of non-SMTP message"
 .cindex "non-SMTP messages" "ACLs for"
 This option defines the ACL that is run before Exim starts reading a
-non-SMTP message. See chapter &<<CHAPACL>>& for further details.
+non-SMTP message. See section &<<SECnonSMTP>>& for further details.
 
 .option acl_smtp_auth main string&!! unset
 .cindex "&ACL;" "setting up for SMTP commands"
 .cindex "AUTH" "ACL for"
 This option defines the ACL that is run when an SMTP AUTH command is
-received. See chapter &<<CHAPACL>>& for further details.
+received.
+See chapter &<<CHAPACL>>& for general information on ACLs, and chapter
+&<<CHAPSMTPAUTH>>& for details of authentication.
 
 .option acl_smtp_connect main string&!! unset
 .cindex "&ACL;" "on SMTP connection"
 This option defines the ACL that is run when an SMTP connection is received.
-See chapter &<<CHAPACL>>& for further details.
+See section &<<SECconnectACL>>& for further details.
 
 .option acl_smtp_data main string&!! unset
 .cindex "DATA" "ACL for"
 This option defines the ACL that is run after an SMTP DATA command has been
 processed and the message itself has been received, but before the final
-acknowledgment is sent. See chapter &<<CHAPACL>>& for further details.
+acknowledgment is sent. See section &<<SECdataACLS>>& for further details.
 
 .option acl_smtp_data_prdr main string&!! accept
 .cindex "PRDR" "ACL for"
@@ -15146,7 +15189,7 @@ This option defines the ACL that,
 if the PRDR feature has been negotiated,
 is run for each recipient after an SMTP DATA command has been
 processed and the message itself has been received, but before the
-acknowledgment is sent. See chapter &<<CHAPACL>>& for further details.
+acknowledgment is sent. See section &<<SECTPRDRACL>>& for further details.
 
 .option acl_smtp_dkim main string&!! unset
 .cindex DKIM "ACL for"
@@ -15169,7 +15212,7 @@ received. See chapter &<<CHAPACL>>& for further details.
 .cindex "EHLO" "ACL for"
 .cindex "HELO" "ACL for"
 This option defines the ACL that is run when an SMTP EHLO or HELO
-command is received. See chapter &<<CHAPACL>>& for further details.
+command is received. See section &<<SECheloACL>>& for further details.
 
 
 .option acl_smtp_mail main string&!! unset
@@ -15180,7 +15223,8 @@ received. See chapter &<<CHAPACL>>& for further details.
 .option acl_smtp_mailauth main string&!! unset
 .cindex "AUTH" "on MAIL command"
 This option defines the ACL that is run when there is an AUTH parameter on
-a MAIL command. See chapter &<<CHAPACL>>& for details of ACLs, and chapter
+a MAIL command.
+See chapter &<<CHAPACL>>& for general information on ACLs, and chapter
 &<<CHAPSMTPAUTH>>& for details of authentication.
 
 .option acl_smtp_mime main string&!! unset
@@ -15193,7 +15237,7 @@ section &<<SECTscanmimepart>>& for details.
 .cindex "not-QUIT, ACL for"
 This option defines the ACL that is run when an SMTP session
 ends without a QUIT command being received.
-See chapter &<<CHAPACL>>& for further details.
+See section &<<SECTNOTQUITACL>>& for further details.
 
 .option acl_smtp_predata main string&!! unset
 This option defines the ACL that is run when an SMTP DATA command is
@@ -15208,7 +15252,7 @@ received. See chapter &<<CHAPACL>>& for further details.
 .option acl_smtp_rcpt main string&!! unset
 .cindex "RCPT" "ACL for"
 This option defines the ACL that is run when an SMTP RCPT command is
-received. See chapter &<<CHAPACL>>& for further details.
+received. See section &<<SECTQUITACL>>& for further details.
 
 .option acl_smtp_starttls main string&!! unset
 .cindex "STARTTLS, ACL for"
@@ -15220,6 +15264,13 @@ received. See chapter &<<CHAPACL>>& for further details.
 This option defines the ACL that is run when an SMTP VRFY command is
 received. See chapter &<<CHAPACL>>& for further details.
 
+.new
+.option acl_smtp_wellknown main string&!! unset
+.cindex "WELLKNOWN, ACL for"
+This option defines the ACL that is run when an SMTP WELLKNOWN command is
+received. See section &<<SECTWELLKNOWNACL>>& for further details.
+.wen
+
 .option add_environment main "string list" empty
 .cindex "environment" "set values"
 This option adds individual environment variables that the
@@ -16194,11 +16245,13 @@ set.
 .cindex "EHLO" "underscores in"
 .cindex "underscore in EHLO/HELO"
 This option can be set to a string of rogue characters that are permitted in
-all EHLO and HELO names in addition to the standard letters, digits,
-hyphens, and dots. If you really must allow underscores, you can set
+non-ip-literal EHLO and HELO names in addition to the standard letters, digits,
+hyphens, and dots. For examplem if you really must allow underscores,
+you can set
 .code
 helo_allow_chars = _
 .endd
+This option does not apply to names that look like ip-literals.
 Note that the value is one string, not a list.
 
 
@@ -16572,7 +16625,7 @@ If permitted, Exim as a servier will advertise in the EHLO response
 the limit for RCPT commands set by the &%recipients_max%& option (if it is set)
 and the limit for MAIL commands set by the &%smtp_accept_max_per_connection%&
 option.
-,wen
+.wen
 
 .option local_from_check main boolean true
 .cindex "&'Sender:'& header line" "disabling addition of"
@@ -18889,6 +18942,14 @@ absolute and untainted.
 See also &%bounce_message_file%&.
 
 
+.new
+.option wellknown_advertise_hosts main boolean unset
+.cindex WELLKNOWN advertisement
+.cindex "ESMTP extensions" WELLKNOWN
+This option enables the advertising of the SMTP WELLKNOWN extension.
+See also the &%acl_smtp_wellknown%& ACL (&<<SECTWELLKNOWNACL>>&).
+.wen
+
 .option write_rejectlog main boolean true
 .cindex "reject log" "disabling"
 If this option is set false, Exim no longer writes anything to the reject log.
@@ -30540,12 +30601,17 @@ Section 4.3 of that document.
 .subsection General
 Under GnuTLS, DANE is only supported from version 3.0.0 onwards.
 
-DANE is specified in published RFCs and decouples certificate authority trust
+DANE is specified in RFC 6698. It decouples certificate authority trust
 selection from a "race to the bottom" of "you must trust everything for mail
 to get through".
-There is an alternative technology called MTA-STS, which
-instead publishes MX trust anchor information on an HTTPS website.  At the
-time this text was last updated, MTA-STS was still a draft, not yet an RFC.
+It does retain the need to trust the assurances provided by the DNSSEC tree.
+
+There is an alternative technology called MTA-STS (RFC 8461), which
+instead publishes MX trust anchor information on an HTTPS website.
+The discovery of the address for that website does not (per standard)
+require DNSSEC, and could be regarded as being less secure than DANE
+as a result.
+
 Exim has no support for MTA-STS as a client, but Exim mail server operators
 can choose to publish information describing their TLS configuration using
 MTA-STS to let those clients who do use that protocol derive trust
@@ -30616,6 +30682,7 @@ options in the main part of the configuration. These options are:
 .cindex "RCPT" "ACL for"
 .cindex "STARTTLS, ACL for"
 .cindex "VRFY" "ACL for"
+.cindex "WELLKNOWN" "ACL for"
 .cindex "SMTP" "connection, ACL for"
 .cindex "non-SMTP messages" "ACLs for"
 .cindex "MIME content scanning" "ACL for"
@@ -30642,6 +30709,7 @@ options in the main part of the configuration. These options are:
 .irow &%acl_smtp_rcpt%&        "ACL for RCPT"
 .irow &%acl_smtp_starttls%&    "ACL for STARTTLS"
 .irow &%acl_smtp_vrfy%&        "ACL for VRFY"
+.irow &%acl_smtp_wellknown%&   "ACL for WELLKNOWN"
 .endtable
 
 For example, if you set
@@ -30657,7 +30725,7 @@ trying to deliver the message. It is therefore recommended that you do as much
 testing as possible at RCPT time.
 
 
-.subsection "The non-SMTP ACLs" SECID190
+.subsection "The non-SMTP ACLs" SECnonSMTP
 .cindex "non-SMTP messages" "ACLs for"
 The non-SMTP ACLs apply to all non-interactive incoming messages, that is, they
 apply to batched SMTP as well as to non-SMTP messages. (Batched SMTP is not
@@ -30691,7 +30759,7 @@ kind of rejection is treated as permanent, because there is no way of sending a
 temporary error for these kinds of message.
 
 
-.subsection "The SMTP connect ACL" SECID191
+.subsection "The SMTP connect ACL" SECconnectACL
 .cindex "SMTP" "connection, ACL for"
 .oindex &%smtp_banner%&
 The ACL test specified by &%acl_smtp_connect%& happens at the start of an SMTP
@@ -30706,7 +30774,7 @@ is accepted; if the ACL does not accept then the TCP connection is dropped witho
 any TLS startup attempt and without any SMTP response being transmitted.
 
 
-.subsection "The EHLO/HELO ACL" SECID192
+.subsection "The EHLO/HELO ACL" SECheloACL
 .cindex "EHLO" "ACL for"
 .cindex "HELO" "ACL for"
 The ACL test specified by &%acl_smtp_helo%& happens when the client issues an
@@ -30727,7 +30795,7 @@ affect the EHLO options that are listed on the second and subsequent lines of
 an EHLO response.
 
 
-.subsection "The DATA ACLs" SECID193
+.subsection "The DATA ACLs" SECdataACLS
 .cindex "DATA" "ACLs for"
 Two ACLs are associated with the DATA command, because it is two-stage
 command, with two responses being sent to the client.
@@ -30824,6 +30892,62 @@ This ACL is evaluated after &%acl_smtp_dkim%& but before &%acl_smtp_data%&.
 If the ACL is not defined, processing completes as if
 the feature was not requested by the client.
 
+.new
+.subsection "The SMTP WELLKNOWN ACL" SECTWELLKNOWNACL
+.cindex "WELLKNOWN" "ACL for"
+.oindex "&%acl_smtp_wellknown%&"
+The &%acl_smtp_wellknown%& ACL is available only when Exim is compiled
+with WELLKNOWN support enabled.
+
+The ACL determines the response to an SMTP WELLKNOWN command, using the normal
+accept/defer/deny verbs for the response code,
+and a new &"control=wellknown"& modifier.
+This modifier takes a single option, separated by a '/'
+character, which must be the name of a file containing the response
+cleartext.  The modifier is expanded before use in the usual way before
+it is used.  The configuration is responsible for picking a suitable file
+to return and, most importantly, not returning any unexpected file.
+The argument for the SMTP verb will be available in the &$smtp_command_argument$&
+variable and can be used for building the file path.
+If the file path given in the modifier is empty or inacessible, the control will
+fail.
+
+For example:
+.code
+ check_wellknown:
+  accept control = wellknown/\
+                   ${lookup {${xtextd:$smtp_command_argument}} \
+                       dsearch,key=path,filter=file,ret=full \
+                       {$spooldir/wellknown.d}}
+.endd
+File content will be encoded in &"xtext"& form, and line-wrapping
+for line-length limitation will be done before transmission.
+A response summary line will be prepended, with the (pre-encoding) file size.
+
+The above example uses the expansion operator ${xtextd:<coded-string>}
+which is needed to decode the xtext-encoded key from the SMTP verb.
+
+Under the util directory there is a "mailtest" utility which can be used
+to test/retrieve WELLKNOWN items. Syntax is
+.code
+  mailtest -h host.example.com -w security.txt
+.endd
+
+WELLKNOWN is a ESMTP extension providing access to extended
+information about the server.  It is modelled on the webserver
+facilities documented in RFC 8615 and can be used for a security.txt
+file and could be used for ACME handshaking (RFC 8555).
+
+Exim will advertise WELLKNOWN support in the EHLO response
+.oindex &%wellknown_advertise_hosts%&
+(conditional on a new option &%wellknown_advertise_hosts%&)
+and service WELLKNOWN smtp verbs having a single parameter
+giving a key for an item of "site-wide metadata".
+The verb and key are separated by whitespace,
+and the key is xtext-encoded (per RFC 3461 section 4).
+.wen
+
+
 .subsection "The QUIT ACL" SECTQUITACL
 .cindex "QUIT, ACL for"
 The ACL for the SMTP QUIT command is anomalous, in that the outcome of the ACL
@@ -30994,12 +31118,15 @@ For &%acl_not_smtp%&, &%acl_smtp_auth%&, &%acl_smtp_connect%&,
 &%acl_smtp_mime%&, &%acl_smtp_predata%&, and &%acl_smtp_starttls%&, the action
 when the ACL is not defined is &"accept"&.
 
-For the others (&%acl_smtp_etrn%&, &%acl_smtp_expn%&, &%acl_smtp_rcpt%&, and
-&%acl_smtp_vrfy%&), the action when the ACL is not defined is &"deny"&.
-This means that &%acl_smtp_rcpt%& must be defined in order to receive any
-messages over an SMTP connection. For an example, see the ACL in the default
-configuration file.
-
+For the others (&%acl_smtp_etrn%&, &%acl_smtp_expn%&, &%acl_smtp_rcpt%&,
+&%acl_smtp_vrfy%&
+.new
+and &%acl_smtp_wellknown%&),
+.wen
+the action when the ACL
+is not defined is &"deny"&.  This means that &%acl_smtp_rcpt%& must be
+defined in order to receive any messages over an SMTP connection.
+For an example, see the ACL in the default configuration file.
 
 
 
@@ -32104,6 +32231,13 @@ that are being submitted at the same time using &%-bs%& or &%-bS%&.
 This control enables conversion of UTF-8 in message envelope addresses
 to a-label form.
 For details see section &<<SECTi18nMTA>>&.
+
+.new
+.vitem &*control&~=&~wellknown*&
+This control sets up a response data file for a WELLKNOWN SMTP command.
+It may only be used in an ACL servicing that command.
+For details see section &<<SECTWELLKNOWNACL>>&.
+.wen
 .endlist vlist
 
 
@@ -42422,7 +42556,8 @@ Example usage:
     allow_fail
     data =      :fail: Invalid SRS recipient address
 
-  #... further routers here
+  #... further routers here get inbound_srs-redirected recipients
+  # and any that were not SRS'd
 
 
   # transport; should look like the non-forward outbound
@@ -43008,10 +43143,13 @@ Events have names which correspond to the point in process at which they fire.
 The name is placed in the variable &$event_name$& and the event action
 expansion must check this, as it will be called for every possible event type.
 
+.new
 The current list of events is:
+.wen
 .itable all 0 0 4 25* left 10* center 15* center 50* left
 .row auth:fail             after    both       "per driver per authentication attempt"
 .row dane:fail              after    transport  "per connection"
+.row dns:fail               after    both       "per lookup"
 .row msg:complete           after    main       "per message"
 .row msg:defer              after    transport  "per message per delivery try"
 .row msg:delivery           after    transport  "per recipient"
@@ -43045,6 +43183,7 @@ with the event type:
 .itable all 0 0 2 20* left 80* left
 .row auth:fail           "smtp response"
 .row dane:fail            "failure reason"
+.row dns:fail             "failure reason, key and lookup-type"
 .row msg:defer            "error string"
 .row msg:delivery         "smtp confirmation message"
 .row msg:fail:internal    "failure reason"
@@ -43094,6 +43233,11 @@ chain element received on the connection.
 For OpenSSL it will trigger for every chain element including those
 loaded locally.
 
+.new
+For dns:fail events from dnsdb lookups, a &"defer_never"& option does not
+affect the reporting of DNS_AGAIN.
+.wen
+
 . ////////////////////////////////////////////////////////////////////////////
 . ////////////////////////////////////////////////////////////////////////////
 
index af467891374c8e67c19f568a9b4d171181ae584a..daa62ad0e97bffc9691a4f8c98d0d7daeaa4610c 100644 (file)
@@ -150,6 +150,20 @@ JH/29 Bug 3087: Fix SRS encode.  A zero-length quoted element in the local-part
 
 JH/30 Bug 3029: Avoid feeding Resent-From: to DMARC.
 
+JH/31 Bug 3027: For -bh / -bhc tests change to using the compressed form of
+      ipv6 addresses for the sender.  Previously the uncompressed form was used,
+      and if used in textual form this would result in behavior difference
+      versus non-bh.
+
+JH/32 Bug 3096: MAIL before HELO/EHLO, where required by hosts_require_helo, is
+      now classed as a protocol error and subject to smtp_max_synprot_errors.
+
+JH/33 Bug 2994: A subdir dsearch lookup should permit a directory name that starts
+      ".." and has following characters.
+
+JH/34 Fix delivery ordering for 2-phase queue run combined with
+      queue_run_in_order.
+
 
 Exim version 4.97
 -----------------
index 58ab945beb113ca70a54e5a1f9a29489cd6acd6f..778c3259e7c65c85be8510d41457e0ae7d5b5906 100644 (file)
@@ -13,13 +13,25 @@ Version 4.98
  2. The dkim_verbose logging control also enables logging of signing
 
  3. The dkim_timestamps signing option now accepts zero to include a current
-    timestamp but no extiry timestamp.  Code by Simon Arlott; testsuite
+    timestamp but no expiry timestamp.  Code by Simon Arlott; testsuite
     additions by jgh.
 
  4. The recipients_max main option is now expanded.
 
  5. Setting variables for "exim -be" can set a tainted value.
 
+ 6. A dns:fail event.
+
+ 7. The dsearch lookup supports search for a sub-path.
+
+ 8. Include mailtest utility for simple connection checking.
+
+ 9. Add SMTP WELLKNOWN extension.
+
+ 10. Sqlite3 can be used for the hints databases (vs. DBD, NDB, GBDM, TDB).
+     Add "USE_SQLITE = y" and "DBMLIB = -lsqlite3" in Local/Makefile, to override 
+     the settings done in the OS/Makefile-<platform> file.
+
 Version 4.97
 ------------
 
index aa3a278fd5ec9cbfa6c98e50b2a2d777bfebd21a..56ee10f828df594bc868fa2499572d8f03017bc0 100644 (file)
@@ -658,6 +658,9 @@ After a success:
   $proxy_external_address, $proxy_external_port have the proxy "outside" values
   $sender_host_address, $sender_host_port have the remot client values
 
+
+
+
 --------------------------------------------------------------
 End of file
 --------------------------------------------------------------
diff --git a/doc/doc-txt/id-wellknown.txt b/doc/doc-txt/id-wellknown.txt
new file mode 100644 (file)
index 0000000..79e7158
--- /dev/null
@@ -0,0 +1,145 @@
+Internet Draft
+
+Stream: Independent Submission
+Category:
+Date:           2024/05/26
+Author:         J.Harris
+Author:         B.Quatermass
+
+--
+
+    Mailmaint Working Group                                      J. Harris
+    Internet Draft                                               Independent
+    Category: Experimental                                       B. Quatermass
+                                                                 Independent
+                                                                  May 2024
+
+The WELLKNOWN SMTP Service Extension
+
+Abstract
+--------
+
+This document defines a WELLKNOWN extension for the Simple Mail Transfer Protocol
+(SMTP).  The extension provides the means for an SMTP server to inform a client
+of information relating to the server which is intended to be public.
+
+Status of this Memo
+-------------------
+
+This document is published for examination, experimental implementation, and
+evaluation.
+
+This document defines an Experimental Protocol for the Internet community.
+
+This is a contribution to the RFC Series, independently of any other RFC
+stream. The RFC Editor has chosen to publish this document at its discretion
+and makes no statement about its value for implementation or deployment.
+
+1. Introduction
+---------------
+
+The Simple Mail Transfer Protocol [SMTP] provides the ability to transfer email
+messages from a sending system to a recieving one.
+
+Senders may on occasion wish to discover additional information, not directly
+related to a specific email message, about the receiving system.  An example
+is a contact point for discussing problems in communications.
+
+The WELLKNOWN extension provides a means for delivering such information, by an
+SMTP server on request from an SMTP client.
+
+2. The WELLKNOWN SMTP Extension
+------------------------------
+
+The extension mechanism for SMTP is defined in Section 2.2 of the current SMTP
+specification [RFC5321a].
+
+The name of the extension is WELLKNOWN.  Servers implementing this extension
+advertise a WELLKNOWN as a keyword in the response to EHLO.  The keyword has no
+parameters.
+
+A new SMTP verb, "WELLKNOWN" is defined.
+
+3. The WELLNOWN verb
+--------------------
+
+The format for the WELLKNOWN verb is:
+
+        WELLKNOWN <request-key>
+
+The <request-key> parameter identifies the specific type of information being
+requested.  It is separated from the verb by whitespace, and is xtext-encoded
+per RFC 3461 Section 4 [RFC3461].
+
+After the client gives the WELLKNOWN command, the server responds with one of
+the 2xx, 4xx or 5xx response codes.
+
+A success response MUST be a 250 response code, and MUST be multi-line.
+
+The first line of a success response will be a response summary; the following
+lines are the information data requested, xtext-encoded [RFC3461].  The encoded
+information data MAY be split over multiple response lines.
+
+A response summary MAY be empty.  In this case the first line of the response
+will be only "250-".
+
+A response summary MAY contain a size parameter, giving the number of bytes
+of data.  This parameter is expressed as "SIZE=" followed by a decimal number.
+The size value does not include the xtext-encoding overheader, the "250-" or
+"250 " response code prefixing each line, nor the CR,LF bytes between lines.
+
+4. Example
+----------
+
+S: 220 ESMTP spoken here
+
+C: EHLO test
+
+S: 250-Hi there, mate
+S: 250-SIZE
+S: 250-LIMITS
+S: 250-8BITMIME
+S: 250-PIPELINING
+S: 250-WELLKNOWN
+S: 250 HELP
+
+C: WELLKNOWN security.txt
+
+S: 250-SIZE=285
+S: 250-Contact:+20mailto:security@example.com+0A
+S: 250-+0A
+S: 250-Canonical:+20https://www.example.com/.well-known/security.txt+0A
+S: 250-Canonical:+20mailserver://mx1.example.com/WELLKNOWN/security.txt+0A
+S: 250-Canonical:+20mailserver://mx2.example.com/WELLKNOWN/security.txt+0A
+S: 250-+0A
+S: 250-Preferred-Languages:+20en+0A
+S: 250-+0A
+S: 250-Expires:+202025-02-01T00:00:00.000Z+0A
+S: 250 +0A
+
+C: QUIT
+
+S: 221
+
+
+5. Use Cases
+------------
+
+5.1 security.txt
+---
+It is common for a website to provide public-access information via the HTTP
+protocol.  One such item, a "security.txt" file, is descibed in RFC 9116.
+
+The WELLKNOWN extension provides a method for publishing similar information
+for an SMTP host, without the need to operate an HTTP server.
+
+It is RECOMMENDED that the request-key for this usage be "security.txt".
+
+5.2 ACME handshake
+---
+ACME [RFC8555] provides for obtaining a certificate, needed for encrpted
+communications using TLS.  It defines handshake methods using the DNS and using
+HTTP, for verifying ownership of the domain being certified.
+
+The WELLKNOWN extension provides a method for operating a similar handshake,
+without the need to operate an HTTP server or manipulate the DNS.
index 6dcf18b582fb5e56e9b41309eb6e62cdff39f584..afa2a7a2315918264a0b3edfd3308ac316eea53b 100644 (file)
@@ -5,7 +5,7 @@
 # optional, Local/* files at the front of this file, to create Makefile in the
 # build directory.
 #
-# Copyright (c) The Exim Maintainers 1995 - 2023
+# Copyright (c) The Exim Maintainers 1995 - 2024
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 SHELL      = $(MAKE_SHELL)
@@ -108,7 +108,7 @@ config.h: Makefile buildconfig ../src/config.h.defaults $(EDITME)
 
 # Build the builtin-macros data struct
 
-MACRO_HSRC = macro_predef.h os.h globals.h config.h macros.h \
+MACRO_HSRC = macro_predef.h os.h globals.h config.h macros.h path_max.h \
        routers/accept.h routers/dnslookup.h routers/ipliteral.h \
        routers/iplookup.h routers/manualroute.h routers/queryprogram.h \
        routers/redirect.h
@@ -664,7 +664,7 @@ OBJ_MONBIN = util-host_address.o \
             $(MONBIN)
 
 eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) ../exim_monitor/em_version.c \
-               mytypes.h store.h macros.h
+               mytypes.h store.h path_max.h macros.h
        @echo "$(CC) exim_monitor/em_version.c"
        $(FE)$(CC) -o em_version.o -c \
          $(CFLAGS) $(XINCLUDE) -I. ../exim_monitor/em_version.c
@@ -698,6 +698,7 @@ HDRS  =     blob.h \
        local_scan.h \
        macros.h \
        mytypes.h \
+       path_max.h \
        sha_ver.h \
        structs.h \
        os.h
@@ -711,6 +712,7 @@ PHDRS = ../config.h \
        ../local_scan.h \
        ../macros.h \
        ../mytypes.h \
+       ../path_max.h \
        ../structs.h \
        ../os.h
 
index 11f8b1ae7ce824deb45ff74d308e64cc36bde666..57ea822655d880438997a12debf3913f78d39ac7 100644 (file)
@@ -1,6 +1,6 @@
 /* Exim: OS-specific C header file for FreeBSD */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 /* See the file NOTICE for conditions of use and distribution. */
 
index cebda33674bcbc5b0fe029669081ba5b6f1750f9..dcd9ec02d283d491485fcfba4ecc60b7859e6999 100644 (file)
@@ -1,6 +1,6 @@
 /* Exim: OS-specific C header file for Linux */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2020 */
-/* Copyright (c) The Exim Maintainers 2021 */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 /* See the file NOTICE for conditions of use and distribution. */
 
index 3822746bae3f96f53c921825596dbe879b7c3af3..b23accc6585f5c8be0fc1497585f68209c2981e8 100644 (file)
@@ -2,8 +2,8 @@
 *                Exim Monitor                    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index f79686a8062380ec38a819c1a4551248aa8bba34..315c1d25043b1de372790e4f8515d28593a50ea0 100644 (file)
@@ -2,8 +2,8 @@
 *                 Exim Monitor                   *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2009 */
-/* Copyright (c) The Exim Maintainers 2021 - 2022 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
@@ -99,6 +99,7 @@ this interface so that this kind of kludge isn't needed. */
 typedef void * hctx;
 
 #include "local_scan.h"
+#include "path_max.h"
 #include "macros.h"
 #include "structs.h"
 #include "blob.h"
index 49f649d7e9b745192ad663aad23a19493e58b9e9..55dad0bae24b23d8e6ca3fd4b42017f7508afa1e 100644 (file)
@@ -2,8 +2,8 @@
 *                 Exim Monitor                   *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainters 2021 - 2022 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index c7c61a652b44c28ab8210b9310ca35141d390e5b..892b4f8561daba6d8f2a9becb6e5eaaf7d21e0d9 100644 (file)
@@ -2,8 +2,8 @@
 *                 Exim Monitor                   *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index 4c562925cd4a8244557a1f7f8f35e24f71002ecc..066ccab56125d44cf0c6d0df70aa24cae979ff4a 100644 (file)
@@ -2,26 +2,16 @@
 *                  Exim Monitor                  *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
 #define EM_VERSION_C
 
-/* Needed by macros.h */
-/* Some systems have PATH_MAX and some have MAX_PATH_LEN. */
-
-#ifndef PATH_MAX
-# ifdef MAX_PATH_LEN
-#  define PATH_MAX MAX_PATH_LEN
-# else
-#  define PATH_MAX 1024
-# endif
-#endif
-
 #include "mytypes.h"
 #include "store.h"
+#include "path_max.h"
 #include "macros.h"
 #include <string.h>
 #include <stdlib.h>
index 352176fa4e65e3ae65ac0b98e242831d9898718f..ddb237980fa069e6679b24260d675396716394fe 100755 (executable)
@@ -3,7 +3,7 @@
 # Script to build links for all the exim source files from the system-
 # specific build directory. It should be run from within that directory.
 #
-# Copyright (c) The Exim Maintainers 1995 - 2023
+# Copyright (c) The Exim Maintainers 1995 - 2024
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 test ! -d ../src && \
@@ -98,7 +98,8 @@ cd ..
 
 for f in blob.h dbfunctions.h exim.h functions.h globals.h \
   hash.h hintsdb.h hintsdb_structs.h local_scan.h \
-  macros.h mytypes.h osfunctions.h store.h structs.h lookupapi.h sha_ver.h \
+  macros.h mytypes.h osfunctions.h path_max.h store.h \
+  structs.h lookupapi.h sha_ver.h \
   \
   acl.c buildconfig.c base64.c child.c crypt16.c daemon.c dbfn.c debug.c \
   deliver.c directory.c dns.c dnsbl.c drtables.c dummies.c enq.c exim.c \
index 85d24f73fd935f1683da79d7e889bc768b7febd9..ebfaf640a323e584d82f3183a820d4300651f73d 100644 (file)
@@ -1,7 +1,7 @@
 ##################################################
 #          The Exim mail transport agent         #
 ##################################################
-# Copyright (c) The Exim Maintainers 2022 - 2023
+# Copyright (c) The Exim Maintainers 2022 - 2024
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 # This is the template for Exim's main build-time configuration file. It
@@ -47,7 +47,8 @@
 # compile the Exim monitor utility. Exim itself does not use X11.
 
 # Another area of variability between systems is the type and location of the
-# DBM library package. Exim has support for ndbm, gdbm, tdb, and Berkeley DB.
+# DBM library package. Exim has support for ndbm, gdbm, tdb, Berkeley DB and
+# sqlite3.
 # By default the code assumes ndbm; this often works with gdbm or DB, provided
 # they are correctly installed, via their compatibility interfaces. However,
 # Exim can also be configured to use the native calls for Berkeley DB (obsolete
@@ -60,8 +61,8 @@
 # for you by the OS-specific configuration. If Exim compiles without any
 # problems, you probably do not have to worry about the DBM library. If you
 # do want or need to change it, you should first read the discussion in the
-# file doc/dbm.discuss.txt, which also contains instructions for testing Exim's
-# interface to the DBM library.
+# file doc/doc-txt/dbm.discuss.txt, which also contains instructions for testing
+# Exim's interface to the DBM library.
 
 # In Local/Makefiles blank lines and lines starting with # are ignored. It is
 # also permitted to use the # character to add a comment to a setting, for
@@ -591,6 +592,9 @@ DISABLE_MAL_MKS=yes
 # using only native facilities.
 # SUPPORT_SRS=yes
 
+# Uncomment the following to remove support for the ESMTP extension "WELLKNOWN"
+# DISABLE_WELLKNOWN=yes
+
 
 #------------------------------------------------------------------------------
 # Compiling Exim with experimental features. These are documented in
@@ -673,6 +677,10 @@ DISABLE_MAL_MKS=yes
 # USE_DB = yes
 # DBMLIB = -ldb
 
+# sqlite
+# USE_SQLITE = yes
+# DBMLIB = -lsqlite3
+
 
 #------------------------------------------------------------------------------
 # Although Exim is normally a setuid program, owned by root, it refuses to run
index d719a937b4187d2f8c63c908fa3ca12dc8bf9fd7..0aa789dbf820ef9b5a8d7781e40daa5f92326838 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -57,9 +57,7 @@ static int msgcond[] = {
 
 #endif
 
-/* ACL condition and modifier codes - keep in step with the table that
-follows.
-down. */
+/* ACL condition and modifier codes */
 
 enum { ACLC_ACL,
        ACLC_ADD_HEADER,
@@ -119,7 +117,8 @@ enum { ACLC_ACL,
        ACLC_SPF_GUESS,
 #endif
        ACLC_UDPSEND,
-       ACLC_VERIFY };
+       ACLC_VERIFY,
+};
 
 /* ACL conditions/modifiers: "delay", "control", "continue", "endpass",
 "message", "log_message", "log_reject_target", "logwrite", "queue" and "set" are
@@ -149,7 +148,7 @@ static condition_def conditions[] = {
   [ACLC_ACL] =                 { US"acl",              FALSE, FALSE,   0 },
 
   [ACLC_ADD_HEADER] =          { US"add_header",       TRUE, TRUE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_MAIL | ACL_BIT_RCPT |
                                    ACL_BIT_PREDATA | ACL_BIT_DATA |
 #ifndef DISABLE_PRDR
@@ -188,7 +187,7 @@ static condition_def conditions[] = {
 
 #ifdef EXPERIMENTAL_DCC
   [ACLC_DCC] =                 { US"dcc",              TRUE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_DATA |
 # ifndef DISABLE_PRDR
                                  ACL_BIT_PRDR |
@@ -204,7 +203,7 @@ static condition_def conditions[] = {
 #ifndef DISABLE_DKIM
   [ACLC_DKIM_SIGNER] =         { US"dkim_signers",     TRUE, FALSE, (unsigned int) ~ACL_BIT_DKIM },
   [ACLC_DKIM_STATUS] =         { US"dkim_status",      TRUE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_DKIM | ACL_BIT_DATA | ACL_BIT_MIME
 # ifndef DISABLE_PRDR
                                  | ACL_BIT_PRDR
@@ -221,7 +220,7 @@ static condition_def conditions[] = {
   [ACLC_DNSLISTS] =            { US"dnslists", TRUE, FALSE,    0 },
 
   [ACLC_DOMAINS] =             { US"domains",  FALSE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_RCPT | ACL_BIT_VRFY
 #ifndef DISABLE_PRDR
                                  |ACL_BIT_PRDR
@@ -239,7 +238,7 @@ static condition_def conditions[] = {
                                  ACL_BIT_NOTSMTP | ACL_BIT_NOTSMTP_START,
   },
   [ACLC_LOCAL_PARTS] =         { US"local_parts",      FALSE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_RCPT | ACL_BIT_VRFY
 #ifndef DISABLE_PRDR
                                  | ACL_BIT_PRDR
@@ -253,7 +252,7 @@ static condition_def conditions[] = {
 
 #ifdef WITH_CONTENT_SCAN
   [ACLC_MALWARE] =             { US"malware",  TRUE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                    ~(ACL_BIT_DATA |
 # ifndef DISABLE_PRDR
                                    ACL_BIT_PRDR |
@@ -280,7 +279,7 @@ static condition_def conditions[] = {
 
 #ifdef WITH_CONTENT_SCAN
   [ACLC_REGEX] =               { US"regex",            TRUE, FALSE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_DATA |
 # ifndef DISABLE_PRDR
                                    ACL_BIT_PRDR |
@@ -291,7 +290,7 @@ static condition_def conditions[] = {
 
 #endif
   [ACLC_REMOVE_HEADER] =       { US"remove_header",    TRUE, TRUE,
-                                 (unsigned int)
+                                 (unsigned)
                                  ~(ACL_BIT_MAIL|ACL_BIT_RCPT |
                                    ACL_BIT_PREDATA | ACL_BIT_DATA |
 #ifndef DISABLE_PRDR
@@ -320,7 +319,7 @@ static condition_def conditions[] = {
 
 #ifdef WITH_CONTENT_SCAN
   [ACLC_SPAM] =                        { US"spam",             TRUE, FALSE,
-                                 (unsigned int) ~(ACL_BIT_DATA |
+                                 (unsigned) ~(ACL_BIT_DATA |
 # ifndef DISABLE_PRDR
                                  ACL_BIT_PRDR |
 # endif
@@ -370,8 +369,7 @@ for (condition_def * c = conditions; c < conditions + nelem(conditions); c++)
 
 #ifndef MACRO_PREDEF
 
-/* Return values from decode_control(); used as index so keep in step
-with the controls_list table that follows! */
+/* Return values from decode_control() */
 
 enum {
   CONTROL_AUTH_UNADVERTISED,
@@ -411,6 +409,9 @@ enum {
 #ifdef SUPPORT_I18N
   CONTROL_UTF8_DOWNCONVERT,
 #endif
+#ifndef DISABLE_WELLKNOWN
+  CONTROL_WELLKNOWN,
+#endif
 };
 
 
@@ -564,7 +565,12 @@ static control_def controls_list[] = {
 #ifdef SUPPORT_I18N
 [CONTROL_UTF8_DOWNCONVERT] =
   { US"utf8_downconvert",        TRUE, (unsigned) ~(ACL_BIT_RCPT | ACL_BIT_VRFY)
-  }
+  },
+#endif
+#ifndef DISABLE_WELLKNOWN
+[CONTROL_WELLKNOWN] =
+  { US"wellknown",               TRUE, (unsigned) ~ACL_BIT_WELLKNOWN
+  },
 #endif
 };
 
@@ -806,7 +812,7 @@ if (*s++ != '=')
   {
   *error = string_sprintf("\"=\" missing after ACL \"%s\" %s", name,
     conditions[cond->type].is_modifier ? US"modifier" : US"condition");
-  return FALSE;;
+  return FALSE;
   }
 Uskip_whitespace(&s);
 cond->arg = taint ? string_copy_taint(s, GET_TAINTED) : string_copy(s);
@@ -3122,6 +3128,80 @@ return DEFER;
 
 
 
+#ifndef DISABLE_WELLKNOWN
+/*************************************************
+*   The "wellknown" ACL modifier                 *
+*************************************************/
+
+/* Called by acl_check_condition() below.
+
+Retrieve the given file and encode content as xtext.
+Prefix with a summary line giving the length of plaintext.
+Leave a global pointer to the whole, for output by
+the smtp verb handler code (smtp_in.c).
+
+Arguments:
+  arg          the option string for wellknown=
+  log_msgptr   for error messages
+
+Returns:       OK/FAIL
+*/
+
+static int
+wellknown_process(const uschar * arg, uschar ** log_msgptr)
+{
+struct stat statbuf;
+FILE * rf;
+gstring * g;
+
+wellknown_response = NULL;
+if (f.no_multiline_responses) return FAIL;
+
+/* Check for file existence */
+
+if (!*arg) return FAIL;
+if (Ustat(arg, &statbuf) != 0)
+  { *log_msgptr = US"stat"; goto fail; }
+
+/*XXX perhaps refuse to serve a group- or world-writeable file? */
+
+if (!(rf = Ufopen(arg, "r")))
+  { *log_msgptr = US"open"; goto fail; }
+
+/* Set up summary line for output */
+
+g = string_fmt_append(NULL, "SIZE=%lu\n", (long) statbuf.st_size);
+
+#define LINE_LIM 75
+for (int n = 0, ch; (ch = fgetc(rf)) != EOF; )
+  {
+  /* Xtext-encode, adding output linebreaks for input linebreaks
+  or when the line gets long enough */
+
+  if (ch == '\n')
+    { g = string_fmt_append(g, "+%02X", ch); n = LINE_LIM; }
+  else if (ch < 33 || ch > 126 || ch == '+' || ch == '=')
+    { g = string_fmt_append(g, "+%02X", ch); n += 3; }
+  else
+    { g = string_fmt_append(g, "%c", ch); n++; }
+
+  if (n >= LINE_LIM)
+    { g = string_catn(g, US"\n", 1); n = 0; }
+  }
+#undef LINE_LIM
+
+gstring_release_unused(g);
+wellknown_response = string_from_gstring(g);
+return OK;
+
+fail:
+  *log_msgptr = string_sprintf("wellknown: failed to %s file \"%s\": %s",
+                 *log_msgptr, arg, strerror(errno));
+  return FAIL;
+}
+#endif
+
+
 /*************************************************
 *   Handle conditions/modifiers on an ACL item   *
 *************************************************/
@@ -3311,7 +3391,7 @@ for (; cb; cb = cb->next)
 
     case ACLC_CONTROL:
       {
-      const uschar *p = NULL;
+      const uschar * p = NULL;
       control_type = decode_control(arg, &p, where, log_msgptr);
 
       /* Check if this control makes sense at this time */
@@ -3323,6 +3403,7 @@ for (; cb; cb = cb->next)
        return ERROR;
        }
 
+      /*XXX ought to sort these, just for sanity */
       switch(control_type)
        {
        case CONTROL_AUTH_UNADVERTISED:
@@ -3668,8 +3749,13 @@ for (; cb; cb = cb->next)
            break;
            }
          return ERROR;
-#endif
+#endif /*I18N*/
 
+#ifndef DISABLE_WELLKNOWN
+       case CONTROL_WELLKNOWN:
+         rc = *p == '/' ? wellknown_process(p+1, log_msgptr) : FAIL;
+         break;
+#endif
        }
       break;
       }
@@ -4450,7 +4536,7 @@ while ((acl_current = acl))
        verbs[acl->verb], acl_name);
       if (basic_errno != ERRNO_CALLOUTDEFER)
        {
-       if (search_error_message != NULL && *search_error_message != 0)
+       if (search_error_message && *search_error_message)
          *log_msgptr = search_error_message;
        if (smtp_return_error_details) f.acl_temp_details = TRUE;
        }
index bd2fa3bae11033b6d796ff890c7e1289d38ae763..48f69a8cf8bce6432ad44268831d916ffaab1604 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 /* Experimental ARC support for Exim
+   Copyright (c) The Exim Maintainers 2021 - 2024
    Copyright (c) Jeremy Harris 2018 - 2020
-   Copyright (c) The Exim Maintainers 2021 - 2023
    License: GPL
    SPDX-License-Identifier: GPL-2.0-or-later
 */
index 5817be7c93667239d18f28112687e0a57e78d25a..6d31d4b1d21c1b174f0f78a3b92d909f893a37b8 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 7f437fa0dbc64e3cae4169925915b319990cd407..8b80f2c3f880d25f43b4265488722aaf9eae0735 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) The Exim Maintainers 2006 - 2023
+ * Copyright (c) The Exim Maintainers 2006 - 2024
  * Copyright (c) 2004 Andrey Panin <pazke@donpac.ru>
  * SPDX-License-Identifier: GPL-2.0-or-later
  *
index 6ae5833afcef274219b7c42b7fe0fcac977e5c19..a8e04310f9b90daa574720ee3d70c087c4f6d4e2 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2023 */
+/* Copyright (c) The Exim Maintainers 2023 - 2024 */
 /* Copyright (c) Jeremy Harris 2019-2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 0c9fb37fe8455b86d7e3e17dc2f7d0f878730710..4b79cbfa4240d11aeac393504c96bf5e58705a8e 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index ae11ae5dc7c8b241d3e0c2c944181237f5f1ddf9..3f9ac2f3c529ef41892575bf76561c205903bf7c 100644 (file)
@@ -2,6 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 8148960473dfa622ac5af597977f22fc2d536c39..7f59e4c7dddf5b0ea414347406f6725e39196bbf 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 51418c4ed1736af57a8e856166fc5410d3507d26..7ec3974e1dcacb124ff76b2ac6a9b097cbd339d1 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 005032f57dfa21e6eaf336294db71e793e8b734c..85b9a6722fc438c079b5453614baa8e4422784f1 100644 (file)
@@ -2,6 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2024 */
 /* Copyright (c) Jeremy Harris 1995 - 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 75be18161f6d1685803f51686f29116f8b98c000..04cd302deff69bde55ea4a8fd7fe6fb1d1da37e1 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2022 */
+/* Copyright (c) The Exim Maintainers 2022 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -40,3 +40,5 @@ return string_from_gstring(g);
 
 
 /* End of xtextencode.c */
+/* vi: aw ai sw=2
+*/
index 8f53671a0fb684fd95b4bbf1b1479b010cc3b5d4..bfd267929814f8990b4c47d4187b6ef42eef0169 100644 (file)
@@ -53,7 +53,7 @@ typedef struct {
   char *data;
 } save_item;
 
-static const char *db_opts[] = { "", "USE_DB", "USE_GDBM", "USE_TDB", "USE_NDBM" };
+static const char *db_opts[] = { "", "USE_DB", "USE_GDBM", "USE_TDB", "USE_NDBM", "USE_SQLITE" };
 
 static int have_ipv6 = 0;
 static int have_iconv = 0;
@@ -266,7 +266,7 @@ while (fgets(buffer, sizeof(buffer), base) != NULL)
         {
         if (use_which_db_in_local_makefile)
           {
-          printf("*** Only one of USE_DB, USE_GDBM, or USE_TDB should be "
+          printf("*** Only one of USE_DB, USE_GDBM, USE_SQLITE or USE_TDB should be "
             "defined in Local/Makefile\n");
           exit(1);
           }
index c08f1874d71f2b062491f75cefe745119e54690c..13b203e803ea358ae06d5b3d2f8b9ef674a2d32d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2018 - 2023 */
+/* Copyright (c) The Exim Maintainers 2018 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
@@ -59,6 +59,7 @@ Do not put spaces between # and the 'define'.
 #define DISABLE_QUEUE_RAMP
 #define DISABLE_TLS
 #define DISABLE_TLS_RESUME
+#define DISABLE_WELLKNOWN
 
 #define ENABLE_DISABLE_FSYNC
 
@@ -187,6 +188,7 @@ Do not put spaces between # and the 'define'.
 #define USE_OPENSSL
 #define USE_READLINE
 #define USE_TCP_WRAPPERS
+#define USE_SQLITE
 #define USE_TDB
 
 #define WHITELIST_D_MACROS
index 88114d648122193bcf11e465813a56737515a89c..16137f9f61fbb62ee693a63fa9940c6a7764bae3 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -311,7 +311,7 @@ if (smtp_accept_max_per_host)
   /* For speed, interpret a decimal number inline here */
   else
     {
-    uschar *s = expanded;
+    uschar * s = expanded;
     while (isdigit(*s))
       max_for_this_host = max_for_this_host * 10 + *s++ - '0';
     if (*s)
@@ -320,9 +320,9 @@ if (smtp_accept_max_per_host)
     }
   }
 
-/* If we have fewer connections than max_for_this_host, we can skip the tedious
-per host_address checks. Note that at this stage smtp_accept_count contains the
-count of *other* connections, not including this one. */
+/* If we have fewer total connections than max_for_this_host, we can skip the
+tedious per host_address checks. Note that at this stage smtp_accept_count
+contains the count of *other* connections, not including this one. */
 
 if (max_for_this_host > 0 && smtp_accept_count >= max_for_this_host)
   {
@@ -920,7 +920,7 @@ while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
         smtp_slots[i] = empty_smtp_slot;
         if (--smtp_accept_count < 0) smtp_accept_count = 0;
         DEBUG(D_any) debug_printf("%d SMTP accept process%s now running\n",
-          smtp_accept_count, (smtp_accept_count == 1)? "" : "es");
+          smtp_accept_count, smtp_accept_count == 1 ? "" : "es");
         break;
         }
     if (i < smtp_accept_max) continue;  /* Found an accepting process */
@@ -2157,7 +2157,7 @@ if (f.background_daemon)
     pid_t pid = exim_fork(US"daemon");
     if (pid < 0) log_write(0, LOG_MAIN|LOG_PANIC_DIE,
       "fork() failed when starting daemon: %s", strerror(errno));
-    if (pid > 0) exit(EXIT_SUCCESS);      /* in parent process, just exit */
+    if (pid > 0) exim_exit(EXIT_SUCCESS); /* in parent process, just exit */
     (void)setsid();                       /* release controlling terminal */
     f.daemon_listen = daemon_listen;
     }
index 389d1518ed8a0249d6a3f0f75f8a78c941e64426..2b5ec908b92e67a0f084531fe65a623175d9b53d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -20,7 +20,7 @@ with database files like $spooldirectory/db/<name> */
 different DBM files. This module does not contain code for reading DBM files
 for (e.g.) alias expansion. That is all contained within the general search
 functions. As Exim now has support for several DBM interfaces, all the relevant
-functions are called as macros.
+functions are called as inlinable functions from an included file.
 
 All the data in Exim's database is in the nature of *hints*. Therefore it
 doesn't matter if it gets destroyed by accident. These functions are not
@@ -35,7 +35,25 @@ means of locking on independent lock files. (Earlier attempts to lock on the
 DBM files themselves were never completely successful.) Since callers may in
 general want to do more than one read or write while holding the lock, there
 are separate open and close functions. However, the calling modules should
-arrange to hold the locks for the bare minimum of time. */
+arrange to hold the locks for the bare minimum of time.
+
+API:
+  dbfn_open
+  dbfn_close
+  dbfn_read_with_length
+  dbfn_read_enforce_length
+  dbfn_write
+  dbfn_delete
+  dbfn_scan                            unused; ifdeffout out
+
+Users:
+  ACL ratelimit & seen conditions
+  delivery retry handling
+  delivery serialization
+  TLS session resumption
+  peer capability cache
+  callout & quota cache
+*/
 
 
 
@@ -43,6 +61,68 @@ arrange to hold the locks for the bare minimum of time. */
 *          Open and lock a database file         *
 *************************************************/
 
+/* Ensure the directory for the DB is present */
+
+static inline void
+db_dir_make(BOOL panic)
+{
+(void) directory_make(spool_directory, US"db", EXIMDB_DIRECTORY_MODE, panic);
+}
+
+
+/* Lock a file to protect the DB.  Return TRUE for success */
+
+static inline BOOL
+lockfile_take(open_db * dbblock, const uschar * filename, BOOL rdonly, BOOL panic)
+{
+flock_t lock_data;
+int rc, * fdp = &dbblock->lockfd;
+
+priv_drop_temp(exim_uid, exim_gid);
+if ((*fdp = Uopen(filename, O_RDWR, EXIMDB_LOCKFILE_MODE)) < 0)
+  {
+  db_dir_make(panic);
+  *fdp = Uopen(filename, O_RDWR|O_CREAT, EXIMDB_LOCKFILE_MODE);
+  }
+priv_restore();
+
+if (*fdp < 0)
+  {
+  log_write(0, LOG_MAIN, "%s",
+    string_open_failed("database lock file %s", filename));
+  errno = 0;      /* Indicates locking failure */
+  return FALSE;
+  }
+
+/* Now we must get a lock on the opened lock file; do this with a blocking
+lock that times out. */
+
+lock_data.l_type = rdonly ? F_RDLCK : F_WRLCK;
+lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;
+
+DEBUG(D_hints_lookup|D_retry|D_route|D_deliver)
+  debug_printf_indent("locking %s\n", filename);
+
+sigalrm_seen = FALSE;
+ALARM(EXIMDB_LOCK_TIMEOUT);
+rc = fcntl(*fdp, F_SETLKW, &lock_data);
+ALARM_CLR(0);
+
+if (sigalrm_seen) errno = ETIMEDOUT;
+if (rc < 0)
+  {
+  log_write(0, LOG_MAIN|LOG_PANIC, "Failed to get %s lock for %s: %s",
+    rdonly ? "read" : "write", filename,
+    errno == ETIMEDOUT ? "timed out" : strerror(errno));
+  (void)close(*fdp); *fdp = -1;
+  errno = 0;       /* Indicates locking failure */
+  return FALSE;
+  }
+
+DEBUG(D_hints_lookup) debug_printf_indent("locked  %s\n", filename);
+return TRUE;
+}
+
 /* Used for accessing Exim's hints databases.
 
 Arguments:
@@ -59,17 +139,13 @@ Returns:   NULL if the open failed, or the locking failed. After locking
 
            On success, dbblock is returned. This contains the dbm pointer and
            the fd of the locked lock file.
-
-There are some calls that use O_RDWR|O_CREAT for the flags. Having discovered
-this in December 2005, I'm not sure if this is correct or not, but for the
-moment I haven't changed them.
 */
 
 open_db *
-dbfn_open(uschar *name, int flags, open_db *dbblock, BOOL lof, BOOL panic)
+dbfn_open(const uschar * name, int flags, open_db * dbblock,
+  BOOL lof, BOOL panic)
 {
 int rc, save_errno;
-BOOL read_only = flags == O_RDONLY;
 flock_t lock_data;
 uschar dirname[PATHLEN], filename[PATHLEN];
 
@@ -91,51 +167,18 @@ exists, there is no error. */
 snprintf(CS dirname, sizeof(dirname), "%s/db", spool_directory);
 snprintf(CS filename, sizeof(filename), "%s/%s.lockfile", dirname, name);
 
-priv_drop_temp(exim_uid, exim_gid);
-if ((dbblock->lockfd = Uopen(filename, O_RDWR, EXIMDB_LOCKFILE_MODE)) < 0)
-  {
-  (void)directory_make(spool_directory, US"db", EXIMDB_DIRECTORY_MODE, panic);
-  dbblock->lockfd = Uopen(filename, O_RDWR|O_CREAT, EXIMDB_LOCKFILE_MODE);
-  }
-priv_restore();
-
-if (dbblock->lockfd < 0)
-  {
-  log_write(0, LOG_MAIN, "%s",
-    string_open_failed("database lock file %s", filename));
-  errno = 0;      /* Indicates locking failure */
-  DEBUG(D_hints_lookup) acl_level--;
-  return NULL;
-  }
-
-/* Now we must get a lock on the opened lock file; do this with a blocking
-lock that times out. */
-
-lock_data.l_type = read_only? F_RDLCK : F_WRLCK;
-lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;
-
-DEBUG(D_hints_lookup|D_retry|D_route|D_deliver)
-  debug_printf_indent("locking %s\n", filename);
-
-sigalrm_seen = FALSE;
-ALARM(EXIMDB_LOCK_TIMEOUT);
-rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
-ALARM_CLR(0);
-
-if (sigalrm_seen) errno = ETIMEDOUT;
-if (rc < 0)
+dbblock->lockfd = -1;
+if (!exim_lockfile_needed())
+  db_dir_make(panic);
+else
   {
-  log_write(0, LOG_MAIN|LOG_PANIC, "Failed to get %s lock for %s: %s",
-    read_only ? "read" : "write", filename,
-    errno == ETIMEDOUT ? "timed out" : strerror(errno));
-  (void)close(dbblock->lockfd);
-  errno = 0;       /* Indicates locking failure */
-  DEBUG(D_hints_lookup) acl_level--;
-  return NULL;
+  if (!lockfile_take(dbblock, filename, flags == O_RDONLY, panic))
+    {
+    DEBUG(D_hints_lookup) acl_level--;
+    return NULL;
+    }
   }
 
-DEBUG(D_hints_lookup) debug_printf_indent("locked  %s\n", filename);
-
 /* At this point we have an opened and locked separate lock file, that is,
 exclusive access to the database, so we can go ahead and open it. If we are
 expected to create it, don't do so at first, again so that we can detect
@@ -145,6 +188,7 @@ databases - often this is caused by non-matching db.h and the library. To make
 it easy to pin this down, there are now debug statements on either side of the
 open call. */
 
+flags &= O_RDONLY | O_RDWR;
 snprintf(CS filename, sizeof(filename), "%s/%s", dirname, name);
 
 priv_drop_temp(exim_uid, exim_gid);
@@ -173,6 +217,7 @@ if (!dbblock->dbptr)
       debug_printf_indent("%s\n", CS string_open_failed("DB file %s",
           filename));
   (void)close(dbblock->lockfd);
+  dbblock->lockfd = -1;
   errno = save_errno;
   DEBUG(D_hints_lookup) acl_level--;
   return NULL;
@@ -182,7 +227,6 @@ DEBUG(D_hints_lookup)
   debug_printf_indent("opened hints database %s: flags=%s\n", filename,
     flags == O_RDONLY ? "O_RDONLY"
     : flags == O_RDWR ? "O_RDWR"
-    : flags == (O_RDWR|O_CREAT) ? "O_RDWR|O_CREAT"
     : "??");
 
 /* Pass back the block containing the opened database handle and the open fd
@@ -199,7 +243,7 @@ return dbblock;
 *************************************************/
 
 /* Closing a file automatically unlocks it, so after closing the database, just
-close the lock file.
+close the lock file if there was one.
 
 Argument: a pointer to an open database block
 Returns:  nothing
@@ -208,10 +252,17 @@ Returns:  nothing
 void
 dbfn_close(open_db *dbblock)
 {
+int * fdp = &dbblock->lockfd;
+
 exim_dbclose(dbblock->dbptr);
-(void)close(dbblock->lockfd);
+if (*fdp >= 0) (void)close(*fdp);
 DEBUG(D_hints_lookup)
-  { debug_printf_indent("closed hints database and lockfile\n"); acl_level--; }
+  {
+  debug_printf_indent("closed hints database%s\n",
+                     *fdp < 0 ? "" : " and lockfile");
+  acl_level--;
+  }
+*fdp = -1;
 }
 
 
@@ -256,7 +307,11 @@ exim_datum_init(&result_datum);      /* to be cleared before use. */
 exim_datum_data_set(&key_datum, key_copy);
 exim_datum_size_set(&key_datum, klen);
 
-if (!exim_dbget(dbblock->dbptr, &key_datum, &result_datum)) return NULL;
+if (!exim_dbget(dbblock->dbptr, &key_datum, &result_datum))
+  {
+  DEBUG(D_hints_lookup) debug_printf_indent("dbfn_read: null return\n");
+  return NULL;
+  }
 
 /* Assume the data store could have been tainted.  Properly, we should
 store the taint status with the data. */
@@ -264,6 +319,7 @@ store the taint status with the data. */
 dlen = exim_datum_size_get(&result_datum);
 yield = store_get(dlen, GET_TAINTED);
 memcpy(yield, exim_datum_data_get(&result_datum), dlen);
+DEBUG(D_hints_lookup) debug_printf_indent("dbfn_read: size %u return\n", dlen);
 if (length) *length = dlen;
 
 exim_datum_free(&result_datum);    /* Some DBM libs require freeing */
@@ -326,7 +382,8 @@ uschar * key_copy = store_get(klen, key);
 memcpy(key_copy, key, klen);
 gptr->time_stamp = time(NULL);
 
-DEBUG(D_hints_lookup) debug_printf_indent("dbfn_write: key=%s\n", key);
+DEBUG(D_hints_lookup)
+  debug_printf_indent("dbfn_write: key=%s datalen %d\n", key, length);
 
 exim_datum_init(&key_datum);         /* Some DBM libraries require the datum */
 exim_datum_init(&value_datum);       /* to be cleared before use. */
@@ -369,6 +426,11 @@ return exim_dbdel(dbblock->dbptr, &key_datum);
 
 
 
+#ifdef notdef
+/* XXX This appears to be unused.  There's a separate implementation
+in dbutils.c for dumpdb and fixdb, using the same underlying support.
+*/
+
 /*************************************************
 *         Scan the keys of a database file       *
 *************************************************/
@@ -408,6 +470,7 @@ yield = exim_dbscan(dbblock->dbptr, &key_datum, &value_datum, start, *cursor)
 if (!yield) exim_dbdelete_cursor(*cursor);
 return yield;
 }
+#endif
 
 
 
index 1f0dec1f7f0c6703ba9d68bf9f848c3b8fb149c5..0b0bcab22839c2906f02c17f9a53ad2700ab1e1e 100644 (file)
@@ -14,7 +14,7 @@
 
 void     dbfn_close(open_db *);
 int      dbfn_delete(open_db *, const uschar *);
-open_db *dbfn_open(uschar *, int, open_db *, BOOL, BOOL);
+open_db *dbfn_open(const uschar *, int, open_db *, BOOL, BOOL);
 void    *dbfn_read_with_length(open_db *, const uschar *, int *);
 void    *dbfn_read_enforce_length(open_db *, const uschar *, size_t);
 uschar  *dbfn_scan(open_db *, BOOL, EXIM_CURSOR **);
index 0157743a12f0a0c985fe8fde0c8fb127cb71d598..eadc96d22e8b6890be4f76a6a494a57f553e3807 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -859,9 +859,10 @@ Return: string expansion from listener, or NULL
 */
 
 uschar *
-event_raise(uschar * action, const uschar * event, uschar * ev_data, int * errnop)
+event_raise(const uschar * action, const uschar * event, const uschar * ev_data,
+  int * errnop)
 {
-uschar * s;
+const uschar * s;
 if (action)
   {
   DEBUG(D_deliver)
@@ -872,7 +873,7 @@ if (action)
   event_name = event;
   event_data = ev_data;
 
-  if (!(s = expand_string(action)) && *expand_string_message)
+  if (!(s = expand_cstring(action)) && *expand_string_message)
     log_write(0, LOG_MAIN|LOG_PANIC,
       "failed to expand event_action %s in %s: %s\n",
       event, transport_name ? transport_name : US"main", expand_string_message);
@@ -880,7 +881,8 @@ if (action)
   event_name = event_data = NULL;
 
   /* If the expansion returns anything but an empty string, flag for
-  the caller to modify his normal processing
+  the caller to modify his normal processing.  Copy the string to
+  de-const it.
   */
   if (s && *s)
     {
@@ -888,7 +890,7 @@ if (action)
       debug_printf("Event(%s): event_action returned \"%s\"\n", event, s);
     if (errnop)
       *errnop = ERRNO_EVENT;
-    return s;
+    return string_copy(s);
     }
   }
 return NULL;
@@ -901,6 +903,7 @@ const uschar * save_domain = deliver_domain;
 const uschar * save_local =  deliver_localpart;
 const uschar * save_host = deliver_host;
 const uschar * save_address = deliver_host_address;
+uschar * save_rn = router_name, * save_tn = transport_name;
 const int      save_port =   deliver_host_port;
 
 router_name =    addr->router ? addr->router->name : NULL;
@@ -937,7 +940,8 @@ deliver_host_address = save_address;
 deliver_host =      save_host;
 deliver_localpart = save_local;
 deliver_domain =    save_domain;
-router_name = transport_name = NULL;
+router_name = save_rn;
+transport_name = save_tn;
 }
 #endif /*DISABLE_EVENT*/
 
@@ -2458,8 +2462,7 @@ if ((pid = exim_fork(US"delivery-local")) == 0)
   and close the pipe we were writing down before exiting. */
 
   (void)close(pfd[pipe_write]);
-  search_tidyup();
-  exit(EXIT_SUCCESS);
+  exim_exit(EXIT_SUCCESS);
   }
 
 /* Back in the main process: panic if the fork did not succeed. This seems
@@ -5022,7 +5025,7 @@ all pipes, so I do not see a reason to use non-blocking IO here
     big_buffer[0] = continue_transport ? '1' : '0';
     rmt_dlv_checked_write(fd, 'Z', '0', big_buffer, 1);
     (void)close(fd);
-    exit(EXIT_SUCCESS);
+    exim_exit(EXIT_SUCCESS);
     }
 
   /* Back in the mainline: close the unwanted half of the pipe. */
index 94303db0bdc244c205f7a22bcb5c835c197ba579..876d097b51551ea8b3018b783dbea3a293fa0a1b 100644 (file)
@@ -36,7 +36,7 @@ Returns:    panic on failure if panic is set; otherwise return FALSE;
 */
 
 BOOL
-directory_make(const uschar *parent, const uschar *name,
+directory_make(const uschar * parent, const uschar * name,
                int mode, BOOL panic)
 {
 BOOL use_chown = parent == spool_directory && geteuid() == root_uid;
index 9e76c51a0226babfc9f66bd980cf6c63b3bb8bb1..e0b76c3b1ac289ae201f4d9117d71d1c3d6c3c84 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge, 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 8c8d9b41af58a2e48d6a4bfe1bbacf0a5814675c..63870c57f94572c8a769b46923c49a9ce9bdceb7 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2022 - 2023 */
+/* Copyright (c) The Exim Maintainers 2022 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index f684e08ea898f0a37c37bdfcf596a0f0444f8437..28fce06244f889c5c9518361ee884baaa1c875b5 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 /* DMARC support.
-   Copyright (c) The Exim Maintainers 2019 - 2023
+   Copyright (c) The Exim Maintainers 2019 - 2024
    Copyright (c) Todd Lyons <tlyons@exim.org> 2012 - 2014
    License: GPL */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 74c5a58c538df86abf3c37ea78d9db5462185313..45dc1574dc6b50feaf5ac8918e10b02508a0fe1e 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -62,7 +62,7 @@ if (stat(CS utilname, &statbuf) >= 0)
   int infd, outfd, rc;
   uschar *argv[5];
 
-  DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) using fakens\n",
+  DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) using fakens\n",
                name, dns_text_type(type));
 
   argv[0] = utilname;
@@ -105,17 +105,17 @@ if (stat(CS utilname, &statbuf) >= 0)
     case 3: h_errno = NO_RECOVERY; return -1;
     case 4: h_errno = NO_DATA; return -1;
     case 5: /* Pass on to res_search() */
-    DEBUG(D_dns) debug_printf("fakens returned PASS_ON\n");
+    DEBUG(D_dns) debug_printf_indent("fakens returned PASS_ON\n");
     }
   }
 else
   {
-  DEBUG(D_dns) debug_printf("fakens (%s) not found\n", utilname);
+  DEBUG(D_dns) debug_printf_indent("fakens (%s) not found\n", utilname);
   }
 
 /* fakens utility not found, or it returned "pass on" */
 
-DEBUG(D_dns) debug_printf("passing %s on to res_search()\n", domain);
+DEBUG(D_dns) debug_printf_indent("passing %s on to res_search()\n", domain);
 
 return res_search(CS domain, C_IN, type, answerptr, size);
 }
@@ -165,13 +165,13 @@ if (dns_use_edns0 >= 0)
   else
     resp->options &= ~RES_USE_EDNS0;
   DEBUG(D_resolver)
-    debug_printf("Coerced resolver EDNS0 support %s.\n",
+    debug_printf_indent("Coerced resolver EDNS0 support %s.\n",
         dns_use_edns0 ? "on" : "off");
   }
 #else
 if (dns_use_edns0 >= 0)
   DEBUG(D_resolver)
-    debug_printf("Unable to %sset EDNS0 without resolver support.\n",
+    debug_printf_indent("Unable to %sset EDNS0 without resolver support.\n",
         dns_use_edns0 ? "" : "un");
 #endif
 
@@ -187,7 +187,7 @@ if (dns_dnssec_ok >= 0)
   if (dns_use_edns0 == 0 && dns_dnssec_ok != 0)
     {
     DEBUG(D_resolver)
-      debug_printf("CONFLICT: dns_use_edns0 forced false, dns_dnssec_ok forced true, ignoring latter!\n");
+      debug_printf_indent("CONFLICT: dns_use_edns0 forced false, dns_dnssec_ok forced true, ignoring latter!\n");
     }
   else
     {
@@ -195,18 +195,18 @@ if (dns_dnssec_ok >= 0)
       resp->options |= RES_USE_DNSSEC;
     else
       resp->options &= ~RES_USE_DNSSEC;
-    DEBUG(D_resolver) debug_printf("Coerced resolver DNSSEC support %s.\n",
+    DEBUG(D_resolver) debug_printf_indent("Coerced resolver DNSSEC support %s.\n",
         dns_dnssec_ok ? "on" : "off");
     }
   }
 # else
 if (dns_dnssec_ok >= 0)
   DEBUG(D_resolver)
-    debug_printf("Unable to %sset DNSSEC without resolver support.\n",
+    debug_printf_indent("Unable to %sset DNSSEC without resolver support.\n",
         dns_dnssec_ok ? "" : "un");
 if (use_dnssec)
   DEBUG(D_resolver)
-    debug_printf("Unable to set DNSSEC without resolver support.\n");
+    debug_printf_indent("Unable to set DNSSEC without resolver support.\n");
 # endif
 #endif /* DISABLE_DNSSEC */
 
@@ -353,7 +353,7 @@ char * trace = NULL;
 if (reset != RESET_NEXT)
   {
   dnss->rrcount = ntohs(h->qdcount);
-  TRACE debug_printf("%s: reset (Q rrcount %d)\n", __FUNCTION__, dnss->rrcount);
+  TRACE debug_printf_indent("%s: reset (Q rrcount %d)\n", __FUNCTION__, dnss->rrcount);
   dnss->aptr = dnsa->answer + sizeof(HEADER);
 
   /* Skip over questions; failure to expand the name just gives up */
@@ -372,7 +372,7 @@ if (reset != RESET_NEXT)
   /* Get the number of answer records. */
 
   dnss->rrcount = ntohs(h->ancount);
-  TRACE debug_printf("%s: reset (A rrcount %d)\n", __FUNCTION__, dnss->rrcount);
+  TRACE debug_printf_indent("%s: reset (A rrcount %d)\n", __FUNCTION__, dnss->rrcount);
 
   /* Skip over answers if we want to look at the authority section. Also skip
   the NS records (i.e. authority section) if wanting to look at the additional
@@ -380,15 +380,15 @@ if (reset != RESET_NEXT)
 
   if (reset == RESET_ADDITIONAL)
     {
-    TRACE debug_printf("%s: additional\n", __FUNCTION__);
+    TRACE debug_printf_indent("%s: additional\n", __FUNCTION__);
     dnss->rrcount += ntohs(h->nscount);
-    TRACE debug_printf("%s: reset (NS rrcount %d)\n", __FUNCTION__, dnss->rrcount);
+    TRACE debug_printf_indent("%s: reset (NS rrcount %d)\n", __FUNCTION__, dnss->rrcount);
     }
 
   if (reset == RESET_AUTHORITY || reset == RESET_ADDITIONAL)
     {
     TRACE if (reset == RESET_AUTHORITY)
-      debug_printf("%s: authority\n", __FUNCTION__);
+      debug_printf_indent("%s: authority\n", __FUNCTION__);
     while (dnss->rrcount-- > 0)
       {
       TRACE trace = "A-namelen";
@@ -409,13 +409,13 @@ if (reset != RESET_NEXT)
       }
     dnss->rrcount = reset == RESET_AUTHORITY
       ? ntohs(h->nscount) : ntohs(h->arcount);
-    TRACE debug_printf("%s: reset (%s rrcount %d)\n", __FUNCTION__,
+    TRACE debug_printf_indent("%s: reset (%s rrcount %d)\n", __FUNCTION__,
       reset == RESET_AUTHORITY ? "NS" : "AR", dnss->rrcount);
     }
-  TRACE debug_printf("%s: %d RRs to read\n", __FUNCTION__, dnss->rrcount);
+  TRACE debug_printf_indent("%s: %d RRs to read\n", __FUNCTION__, dnss->rrcount);
   }
 else
-  TRACE debug_printf("%s: next (%d left)\n", __FUNCTION__, dnss->rrcount);
+  TRACE debug_printf_indent("%s: next (%d left)\n", __FUNCTION__, dnss->rrcount);
 
 /* The variable dnss->aptr is now pointing at the next RR, and dnss->rrcount
 contains the number of RR records left. */
@@ -458,11 +458,11 @@ if (dnss_inc_aptr(dnsa, dnss, dnss->srr.size))
 /* Return a pointer to the dns_record structure within the dns_answer. This is
 for convenience so that the scans can use nice-looking for loops. */
 
-TRACE debug_printf("%s: return %s\n", __FUNCTION__, dns_text_type(dnss->srr.type));
+TRACE debug_printf_indent("%s: return %s\n", __FUNCTION__, dns_text_type(dnss->srr.type));
 return &dnss->srr;
 
 null_return:
-  TRACE debug_printf("%s: terminate (%d RRs left). Last op: %s; errno %d %s\n",
+  TRACE debug_printf_indent("%s: terminate (%d RRs left). Last op: %s; errno %d %s\n",
     __FUNCTION__, dnss->rrcount, trace, errno, strerror(errno));
   dnss->rrcount = 0;
   return NULL;
@@ -515,7 +515,7 @@ dns_is_secure(const dns_answer * dnsa)
 {
 #ifdef DISABLE_DNSSEC
 DEBUG(D_dns)
-  debug_printf("DNSSEC support disabled at build-time; dns_is_secure() false\n");
+  debug_printf_indent("DNSSEC support disabled at build-time; dns_is_secure() false\n");
 return FALSE;
 #else
 const HEADER * h = (const HEADER *) dnsa->answer;
@@ -542,7 +542,7 @@ if (  !h->aa
    )
   return FALSE;
 
-DEBUG(D_dns) debug_printf("DNS faked the AD bit "
+DEBUG(D_dns) debug_printf_indent("DNS faked the AD bit "
   "(got AA and matched with dns_trust_aa (%s in %s))\n",
   auth_name, dns_trust_aa);
 
@@ -666,7 +666,7 @@ else
   (void)tree_insertnode(&tree_dns_fails, new);
   }
 
-DEBUG(D_dns) debug_printf(" %s neg-cache entry for %s, ttl %d\n",
+DEBUG(D_dns) debug_printf_indent(" %s neg-cache entry for %s, ttl %d\n",
   previous ? "update" : "writing",
   node_name, expiry ? (int)(expiry - time(NULL)) : -1);
 e->expiry = expiry;
@@ -693,7 +693,7 @@ e = previous->data.ptr;
 val = e->data.val;
 rc = e->expiry && e->expiry <= time(NULL) ? -1 : val;
 
-DEBUG(D_dns) debug_printf("DNS lookup of %.255s (%s): %scached value %s%s\n",
+DEBUG(D_dns) debug_printf_indent("DNS lookup of %.255s (%s): %scached value %s%s\n",
   name, dns_text_type(type),
   rc == -1 ? "" : "using ",
   dns_rc_names[val],
@@ -731,12 +731,12 @@ if (  h->qr == 1                          /* a response */
    && ntohs(h->ancount) == 0                   /* no answer records */
    && ntohs(h->nscount) >= 1)                  /* authority records */
   {
-  DEBUG(D_dns) debug_printf("faking res_search(%s) response length as %d\n",
+  DEBUG(D_dns) debug_printf_indent("faking res_search(%s) response length as %d\n",
     dns_text_type(type), (int)sizeof(dnsa->answer));
   dnsa->answerlen = sizeof(dnsa->answer);
   return TRUE;
   }
-DEBUG(D_dns) debug_printf("DNS: couldn't fake dnsa len\n");
+DEBUG(D_dns) debug_printf_indent("DNS: couldn't fake dnsa len\n");
 /* Maybe we should just do a second lookup for an SOA? */
 return FALSE;
 }
@@ -783,7 +783,7 @@ if (fake_dnsa_len_for_fail(dnsa, type))
     return time(NULL) + ttl;
     }
 
-DEBUG(D_dns) debug_printf("DNS: no SOA record found for neg-TTL\n");
+DEBUG(D_dns) debug_printf_indent("DNS: no SOA record found for neg-TTL\n");
 return 0;
 }
 
@@ -844,11 +844,11 @@ if ((rc = dns_fail_cache_hit(name, type)) > 0)
   uschar * alabel;
   uschar * errstr = NULL;
   DEBUG(D_dns) if (string_is_utf8(name))
-    debug_printf("convert utf8 '%s' to alabel for for lookup\n", name);
+    debug_printf_indent("convert utf8 '%s' to alabel for for lookup\n", name);
   if ((alabel = string_domain_utf8_to_alabel(name, &errstr)), errstr)
     {
     DEBUG(D_dns)
-      debug_printf("DNS name '%s' utf8 conversion to alabel failed: %s\n", name,
+      debug_printf_indent("DNS name '%s' utf8 conversion to alabel failed: %s\n", name,
         errstr);
     f.host_find_failed_syntax = TRUE;
     return DNS_NOMATCH;
@@ -877,7 +877,7 @@ if (check_dns_names_pattern[0] != 0 && type != T_PTR && type != T_TXT)
   if (!regex_match(regex_check_dns_names, name, -1, NULL))
     {
     DEBUG(D_dns)
-      debug_printf("DNS name syntax check failed: %s (%s)\n", name,
+      debug_printf_indent("DNS name syntax check failed: %s (%s)\n", name,
         dns_text_type(type));
     f.host_find_failed_syntax = TRUE;
     return DNS_NOMATCH;
@@ -909,7 +909,7 @@ dnsa->answerlen = f.running_in_test_harness
 
 if (dnsa->answerlen > (int) sizeof(dnsa->answer))
   {
-  DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) resulted in overlong packet"
+  DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) resulted in overlong packet"
     " (size %d), truncating to %u.\n",
     name, dns_text_type(type), dnsa->answerlen, (unsigned int) sizeof(dnsa->answer));
   dnsa->answerlen = sizeof(dnsa->answer);
@@ -918,12 +918,12 @@ if (dnsa->answerlen > (int) sizeof(dnsa->answer))
 if (dnsa->answerlen < 0) switch (h_errno)
   {
   case HOST_NOT_FOUND:
-    DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave HOST_NOT_FOUND\n"
+    DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) gave HOST_NOT_FOUND\n"
       "returning DNS_NOMATCH\n", name, dns_text_type(type));
     return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NOMATCH);
 
   case TRY_AGAIN:
-    DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave TRY_AGAIN\n",
+    DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) gave TRY_AGAIN\n",
       name, dns_text_type(type));
 
     /* Cut this out for various test programs */
@@ -955,10 +955,10 @@ if (dnsa->answerlen < 0) switch (h_errno)
 
     if (rc != OK)
       {
-      DEBUG(D_dns) debug_printf("returning DNS_AGAIN\n");
+      DEBUG(D_dns) debug_printf_indent("returning DNS_AGAIN\n");
       return dns_fail_return(name, type, 0, DNS_AGAIN);
       }
-    DEBUG(D_dns) debug_printf("%s is in dns_again_means_nonexist: returning "
+    DEBUG(D_dns) debug_printf_indent("%s is in dns_again_means_nonexist: returning "
       "DNS_NOMATCH\n", name);
     return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NOMATCH);
 
@@ -967,22 +967,22 @@ if (dnsa->answerlen < 0) switch (h_errno)
 #endif
 
   case NO_RECOVERY:
-    DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave NO_RECOVERY\n"
+    DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) gave NO_RECOVERY\n"
       "returning DNS_FAIL\n", name, dns_text_type(type));
     return dns_fail_return(name, type, 0, DNS_FAIL);
 
   case NO_DATA:
-    DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave NO_DATA\n"
+    DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) gave NO_DATA\n"
       "returning DNS_NODATA\n", name, dns_text_type(type));
     return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NODATA);
 
   default:
-    DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave unknown DNS error %d\n"
+    DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) gave unknown DNS error %d\n"
       "returning DNS_FAIL\n", name, dns_text_type(type), h_errno);
     return dns_fail_return(name, type, 0, DNS_FAIL);
   }
 
-DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) succeeded\n",
+DEBUG(D_dns) debug_printf_indent("DNS lookup of %s (%s) succeeded\n",
   name, dns_text_type(type));
 
 return DNS_SUCCEED;
@@ -1010,7 +1010,7 @@ won't return any.
 If fully_qualified_name is not NULL, set it to point to the full name
 returned by the resolver, if this is different to what it is given, unless
 the returned name starts with "*" as some nameservers seem to be returning
-wildcards in this form.  In international mode "different" means "alabel
+wildcards in this form.  In international mode "different" means "a-label
 forms are different".
 
 Arguments:
@@ -1028,11 +1028,13 @@ Returns:                DNS_SUCCEED   successful lookup
 */
 
 int
-dns_lookup(dns_answer *dnsa, const uschar *name, int type,
-  const uschar **fully_qualified_name)
+dns_lookup(dns_answer * dnsa, const uschar * name, int type,
+  const uschar ** fully_qualified_name)
 {
-const uschar *orig_name = name;
+const uschar * orig_name = name;
 BOOL secure_so_far = TRUE;
+int rc = DNS_FAIL;
+const uschar * errstr = NULL;
 
 /* By default, assume the resolver follows CNAME chains (and returns NODATA for
 an unterminated one). If it also does that for a CNAME loop, fine; if it returns
@@ -1046,12 +1048,11 @@ for (int i = 0; i <= dns_cname_loops; i++)
   uschar * data;
   dns_record cname_rr, type_rr;
   dns_scan dnss;
-  int rc;
 
   /* DNS lookup failures get passed straight back. */
 
   if ((rc = dns_basic_lookup(dnsa, name, type)) != DNS_SUCCEED)
-    return rc;
+    goto not_good;
 
   /* We should have either records of the required type, or a CNAME record,
   or both. We need to know whether both exist for getting the fully qualified
@@ -1105,26 +1106,71 @@ for (int i = 0; i <= dns_cname_loops; i++)
   its not existing. */
 
   if (!cname_rr.data)
-    return DNS_FAIL;
+    {
+    errstr = US"no_hit_yet_no_cname";
+    goto not_good;
+    }
 
   /* DNS data comes from the outside, hence tainted */
   data = store_get(256, GET_TAINTED);
   if (dn_expand(dnsa->answer, dnsa->answer + dnsa->answerlen,
       cname_rr.data, (DN_EXPAND_ARG4_TYPE)data, 256) < 0)
-    return DNS_FAIL;
+    {
+    errstr = US"bad_expand";
+    goto not_good;
+    }
   name = data;
 
   if (!dns_is_secure(dnsa))
     secure_so_far = FALSE;
 
-  DEBUG(D_dns) debug_printf("CNAME found: change to %s\n", name);
+  DEBUG(D_dns) debug_printf_indent("CNAME found: change to %s\n", name);
   }       /* Loop back to do another lookup */
 
-/*Control reaches here after 10 times round the CNAME loop. Something isn't
+/* Control reaches here after 10 times round the CNAME loop. Something isn't
 right... */
 
 log_write(0, LOG_MAIN, "CNAME loop for %s encountered", orig_name);
-return DNS_FAIL;
+errstr = US"cname_loop";
+
+not_good:
+  {
+#ifndef DISABLE_EVENT
+  const uschar * s = NULL;
+  BOOL save_flag = f.search_find_defer;
+  uschar * save_serr = search_error_message;
+
+  if (!transport_name)
+    s = event_action;
+  else
+    for(transport_instance * tp = transports; tp; tp = tp->next)
+      if (Ustrcmp(tp->name, transport_name) == 0)
+       { s = tp->event_action; break; }
+
+  if (s)
+    {
+    if (Ustrchr(name, ':'))    /* unlikely, but may as well bugproof */
+      {
+      gstring * g = NULL;
+      while (*name)
+       {
+       if (*name == ':') g = string_catn(g, name, 1);
+       g = string_catn(g, name++, 1);
+       }
+      name = string_from_gstring(g);
+      }
+    event_raise(s, US"dns:fail",
+      string_sprintf("%s:%s:%s",
+       errstr ? errstr : dns_rc_names[rc], name, dns_text_type(type)),
+      NULL);
+    }
+
+  /*XXX what other state could an expansion in the eventhandler mess up? */
+  search_error_message = save_serr;
+  f.search_find_defer = save_flag;
+#endif /*EVENT*/
+  return rc;
+  }
 }
 
 
@@ -1172,12 +1218,12 @@ switch (type)
   case T_SOA:
     {
     const uschar *d = name;
-    while (d != 0)
+    while (d)
       {
       int rc = dns_lookup(dnsa, d, type, fully_qualified_name);
       if (rc != DNS_NOMATCH && rc != DNS_NODATA) return rc;
-      while (*d != 0 && *d != '.') d++;
-      if (*d++ == 0) break;
+      while (*d && *d != '.') d++;
+      if (!*d++) break;
       }
     return DNS_NOMATCH;
     }
@@ -1197,7 +1243,7 @@ switch (type)
     dns_record *rr;
     dns_scan dnss;
 
-    DEBUG(D_dns) debug_printf("CSA lookup of %s\n", name);
+    DEBUG(D_dns) debug_printf_indent("CSA lookup of %s\n", name);
 
     srvname = string_sprintf("_client._smtp.%s", name);
     rc = dns_lookup(dnsa, srvname, T_SRV, NULL);
@@ -1235,7 +1281,7 @@ switch (type)
        limit = 3;
        }
 
-    DEBUG(D_dns) debug_printf("CSA TLD %s\n", tld);
+    DEBUG(D_dns) debug_printf_indent("CSA TLD %s\n", tld);
 
     /* Do not perform the search if the top level or 2nd level domains do not
     exist. This is quite common, and when it occurs all the search queries would
@@ -1262,7 +1308,7 @@ switch (type)
          if (--namesuff <= name) return DNS_NOMATCH;
        while (*namesuff != '.');
 
-      DEBUG(D_dns) debug_printf("CSA parent search at %s\n", namesuff + 1);
+      DEBUG(D_dns) debug_printf_indent("CSA parent search at %s\n", namesuff + 1);
 
       srvname = string_sprintf("_client._smtp.%s", namesuff + 1);
       rc = dns_lookup(dnsa, srvname, T_SRV, NULL);
index 5c9e640218d9e25154827a973a53af2bf3d7ddd5..8111a44899cd354f99bb8f3943ea5b55d97fa74b 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -237,7 +237,7 @@ va_end(ap);
 static void
 term_handler(int sig)
 {
-exit(1);
+exim_exit(EXIT_FAILURE);
 }
 
 
@@ -997,32 +997,35 @@ if (s)
 static gstring *
 show_db_version(gstring * g)
 {
+g = string_cat(g, US"Hints DB:\n");
 #ifdef DB_VERSION_STRING
 DEBUG(D_any)
   {
-  g = string_fmt_append(g, "Library version: BDB: Compile: %s\n", DB_VERSION_STRING);
-  g = string_fmt_append(g, "                      Runtime: %s\n",
+  g = string_fmt_append(g, " Library version: BDB: Compile: %s\n", DB_VERSION_STRING);
+  g = string_fmt_append(g, "                       Runtime: %s\n",
     db_version(NULL, NULL, NULL));
   }
 else
-  g = string_fmt_append(g, "Berkeley DB: %s\n", DB_VERSION_STRING);
+  g = string_fmt_append(g, " Berkeley DB: %s\n", DB_VERSION_STRING);
 
 #elif defined(BTREEVERSION) && defined(HASHVERSION)
 # ifdef USE_DB
-  g = string_cat(g, US"Probably Berkeley DB version 1.8x (native mode)\n");
+  g = string_cat(g, US" Probably Berkeley DB version 1.8x (native mode)\n");
 # else
-  g = string_cat(g, US"Probably Berkeley DB version 1.8x (compatibility mode)\n");
+  g = string_cat(g, US" Probably Berkeley DB version 1.8x (compatibility mode)\n");
 # endif
 
 #elif defined(_DBM_RDONLY) || defined(dbm_dirfno)
-g = string_cat(g, US"Probably ndbm\n");
+g = string_cat(g, US" Probably ndbm\n");
+#elif defined(USE_SQLITE)
+g = string_cat(g, US" Using sqlite3\n");
 #elif defined(USE_TDB)
-g = string_cat(g, US"Using tdb\n");
+g = string_cat(g, US" Using tdb\n");
 #else
 # ifdef USE_GDBM
-  g = string_cat(g, US"Probably GDBM (native mode)\n");
+g = string_cat(g, US" Probably GDBM (native mode)\n");
 # else
-  g = string_cat(g, US"Probably GDBM (compatibility mode)\n");
+g = string_cat(g, US" Probably GDBM (compatibility mode)\n");
 # endif
 #endif
 return g;
@@ -1108,6 +1111,9 @@ g = string_cat(g, US"Support for:");
 #ifndef DISABLE_ESMTP_LIMITS
   g = string_cat(g, US" ESMTP_Limits");
 #endif
+#ifndef DISABLE_WELLKNOWN
+  g = string_cat(g, US" ESMTP_Wellknown");
+#endif
 #ifndef DISABLE_EVENT
   g = string_cat(g, US" Event");
 #endif
@@ -2339,9 +2345,9 @@ on the second character (the one after '-'), to save some effort. */
 
        /* -bh: Host checking - an IP address must follow. */
        case 'h':
-         if (!*argrest || Ustrcmp(argrest, "c") == 0)
+         if (  (!*argrest || Ustrcmp(argrest, "c") == 0)
+            && ++i < argc)
            {
-           if (++i >= argc) { badarg = TRUE; break; }
            sender_host_address = string_copy_taint(
                  exim_str_fail_toolong(argv[i], EXIM_IPADDR_MAX, "-bh"),
                  GET_TAINTED);
@@ -2349,7 +2355,8 @@ on the second character (the one after '-'), to save some effort. */
            f.host_checking_callout = *argrest == 'c';
            message_logs = FALSE;
            }
-         else badarg = TRUE;
+         else
+           badarg = TRUE;
          break;
 
        /* -bi: This option is used by sendmail to initialize *the* alias file,
@@ -4685,12 +4692,12 @@ if (malware_test_file)
   if ((result = malware_in_file(malware_test_file)) == FAIL)
     {
     printf("No malware found.\n");
-    exit(EXIT_SUCCESS);
+    exim_exit(EXIT_SUCCESS);
     }
   if (result != OK)
     {
     printf("Malware lookup returned non-okay/fail: %d\n", result);
-    exit(EXIT_FAILURE);
+    exim_exit(EXIT_FAILURE);
     }
   if (malware_name)
     printf("Malware found: %s\n", malware_name);
@@ -4699,7 +4706,7 @@ if (malware_test_file)
 #else
   printf("Malware scanning not enabled at compile time.\n");
 #endif
-  exit(EXIT_FAILURE);
+  exim_exit(EXIT_FAILURE);
   }
 
 /* Handle a request to list the delivery queue */
@@ -4708,7 +4715,7 @@ if (list_queue)
   {
   set_process_info("listing the queue");
   queue_list(list_queue_option, argv + recipients_arg, argc - recipients_arg);
-  exit(EXIT_SUCCESS);
+  exim_exit(EXIT_SUCCESS);
   }
 
 /* Handle a request to count the delivery queue */
@@ -4717,7 +4724,7 @@ if (count_queue)
   {
   set_process_info("counting the queue");
   fprintf(stdout, "%u\n", queue_count());
-  exit(EXIT_SUCCESS);
+  exim_exit(EXIT_SUCCESS);
   }
 
 /* Handle actions on specific messages, except for the force delivery and
@@ -4756,7 +4763,7 @@ if (msg_action_arg > 0 && msg_action != MSG_DELIVER && msg_action != MSG_LOAD)
 
   else if (!queue_action(argv[msg_action_arg], msg_action, argv, argc,
     recipients_arg)) yield = EXIT_FAILURE;
-  exit(yield);
+  exim_exit(yield);
   }
 
 /* We used to set up here to skip reading the ACL section, on
@@ -5159,7 +5166,7 @@ if (f.daemon_listen || f.inetd_wait_mode || is_multiple_qrun())
     (void)gettimeofday(&t0, NULL);
 # endif
     if (!tls_dropprivs_validate_require_cipher(FALSE))
-      exit(1);
+      exim_exit(EXIT_FAILURE);
 # ifdef MEASURE_TIMING
     report_time_since(&t0, US"validate_ciphers (delta)");
 # endif
@@ -5443,11 +5450,14 @@ if (host_checking)
     }
 
   /* In case the given address is a non-canonical IPv6 address, canonicalize
-  it. The code works for both IPv4 and IPv6, as it happens. */
+  it. Use the compressed form for IPv6. */
 
   size = host_aton(sender_host_address, x);
   sender_host_address = store_get(48, GET_UNTAINTED);  /* large enough for full IPv6 */
-  (void)host_nmtoa(size, x, -1, sender_host_address, ':');
+  if (size == 1)
+    (void) host_nmtoa(size, x, -1, sender_host_address, ':');
+  else
+    (void) ipv6_nmtoa(x, sender_host_address);
 
   /* Now set up for testing */
 
@@ -6189,3 +6199,5 @@ return 0;                  /* To stop compiler warning */
 
 
 /* End of exim.c */
+/* vi: aw ai sw=2
+*/
index 699b391653f140866a4c21c2d8509f3aab6c822d..9bf5dcdfc1b46e242927193977916517f65bc991 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2022 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -127,16 +127,6 @@ making unique names. */
 # define EXIM_ARITH_MIN (-EXIM_ARITH_MAX - 1)
 #endif
 
-/* Some systems have PATH_MAX and some have MAX_PATH_LEN. */
-
-#ifndef PATH_MAX
-# ifdef MAX_PATH_LEN
-#  define PATH_MAX MAX_PATH_LEN
-# else
-#  define PATH_MAX 1024
-# endif
-#endif
-
 /* RFC 5321 specifies that the maximum length of a local-part is 64 octets
 and the maximum length of a domain is 255 octets, but then also defines
 the maximum length of a forward/reverse path as 256 not 64+1+255.
@@ -532,7 +522,9 @@ config.h, mytypes.h, and store.h, so we don't need to mention them explicitly.
 */
 
 #include "local_scan.h"
+#include "path_max.h"
 #include "macros.h"
+#include "blob.h"
 #include "hintsdb.h"
 #include "hintsdb_structs.h"
 #include "structs.h"
index bd24faa5b9d4e9e721fa35061e9d1bd3f5bfdc4c..05387aa3f471b79bb4799f11c623c30842ee5d0e 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -76,14 +76,6 @@ uschar *             queue_name;
 BOOL                   split_spool_directory;
 
 
-/* These introduced by the taintwarn handling */
-rmark
-store_mark_3(const char *func, int linenumber)
-{ return NULL; }
-#ifdef ALLOW_INSECURE_TAINTED_DATA
-BOOL    allow_insecure_tainted_data;
-#endif
-
 /******************************************************************************/
 
 
@@ -177,7 +169,7 @@ BOOL lowercase = TRUE;
 BOOL warn = TRUE;
 BOOL duperr = TRUE;
 BOOL lastdup = FALSE;
-#if !defined (USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM)
+#if !defined (USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM) && !defined(USE_SQLITE)
 int is_db = 0;
 struct stat statbuf;
 #endif
@@ -207,7 +199,7 @@ while (argc > 1)
 if (argc != 3)
   {
   printf("usage: exim_dbmbuild [-nolc] <source file> <dbm base name>\n");
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 
 if (Ustrcmp(argv[arg], "-") == 0)
@@ -215,17 +207,17 @@ if (Ustrcmp(argv[arg], "-") == 0)
 else if (!(f = fopen(argv[arg], "rb")))
   {
   printf("exim_dbmbuild: unable to open %s: %s\n", argv[arg], strerror(errno));
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 
 /* By default Berkeley db does not put extensions on... which
 can be painful! */
 
-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) && !defined(USE_SQLITE)
 if (Ustrcmp(argv[arg], argv[arg+1]) == 0)
   {
   printf("exim_dbmbuild: input and output filenames are the same\n");
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 #endif
 
@@ -235,7 +227,7 @@ if (Ustrcmp(argv[arg], argv[arg+1]) == 0)
 if (strlen(argv[arg+1]) > sizeof(temp_dbmname) - 20)
   {
   printf("exim_dbmbuild: output filename is ridiculously long\n");
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 
 Ustrcpy(temp_dbmname, US argv[arg+1]);
@@ -255,13 +247,13 @@ if (!(d = exim_dbopen(temp_dbmname, dirname, O_RDWR|O_CREAT|O_EXCL, 0644)))
   printf("exim_dbmbuild: unable to create %s: %s\n", temp_dbmname,
     strerror(errno));
   (void)fclose(f);
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 
 /* Unless using native db calls, see if we have created <name>.db; if not,
 assume .dir & .pag */
 
-#if !defined(USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM)
+#if !defined(USE_DB) && !defined(USE_TDB) && !defined(USE_GDBM) && !defined(USE_SQLITE)
 sprintf(CS real_dbmname, "%s.db", temp_dbmname);
 is_db = Ustat(real_dbmname, &statbuf) == 0;
 #endif
@@ -333,7 +325,8 @@ while (Ufgets(line, max_insize, f) != NULL)
       exim_datum_data_set(&content, buffer);
       exim_datum_size_set(&content, bptr - buffer + add_zero);
 
-      switch(rc = exim_dbputb(d, &key, &content))
+      rc = exim_dbputb(d, &key, &content);
+      switch(rc)
         {
         case EXIM_DBPUTB_OK:
          count++;
@@ -423,7 +416,8 @@ if (started)
   exim_datum_data_set(&content, buffer);
   exim_datum_size_set(&content, bptr - buffer + add_zero);
 
-  switch(rc = exim_dbputb(d, &key, &content))
+  rc = exim_dbputb(d, &key, &content);
+  switch(rc)
     {
     case EXIM_DBPUTB_OK:
     count++;
@@ -462,7 +456,7 @@ if (yield == 0 || yield == 1)
     printf("%d duplicate key%s \n", dupcount, (dupcount > 1)? "s" : "");
     }
 
-  #if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
   Ustrcpy(real_dbmname, temp_dbmname);
   Ustrcpy(buffer, US argv[arg+1]);
   if (Urename(real_dbmname, buffer) != 0)
@@ -470,7 +464,7 @@ if (yield == 0 || yield == 1)
     printf("Unable to rename %s as %s\n", real_dbmname, buffer);
     return 1;
     }
-  #else
+#else
 
   /* Rename a single .db file */
 
@@ -506,7 +500,7 @@ if (yield == 0 || yield == 1)
       }
     }
 
-  #endif /* USE_DB || USE_TDB || USE_GDBM */
+#endif /* USE_DB || USE_TDB || USE_GDBM || USE_SQLITE */
   }
 
 /* Otherwise unlink the temporary files. */
@@ -514,7 +508,7 @@ if (yield == 0 || yield == 1)
 else
   {
   printf("dbmbuild abandoned\n");
-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
   /* We created it, so safe to delete despite the name coming from outside */
   /* coverity[tainted_string] */
   Uunlink(temp_dbmname);
@@ -531,10 +525,12 @@ else
     sprintf(CS real_dbmname, "%s.pag", temp_dbmname);
     Uunlink(real_dbmname);
     }
-#endif /* USE_DB || USE_TDB */
+#endif /* USE_DB || USE_TDB || USE_GDBM || USE_SQLITE */
   }
 
 return yield;
 }
 
 /* End of exim_dbmbuild.c */
+/* se aw ai sw=2
+*/
index c868832b1ad3b233f575f6d5416823c36ba2d243..397b1162e6008546a8a38422d3748bf75702c1f8 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -81,11 +81,6 @@ uschar *             queue_name;
 BOOL                   split_spool_directory;
 
 
-/* These introduced by the taintwarn handling */
-#ifdef ALLOW_INSECURE_TAINTED_DATA
-BOOL    allow_insecure_tainted_data;
-#endif
-
 /******************************************************************************/
 
 
@@ -287,78 +282,77 @@ Returns:   NULL if the open failed, or the locking failed.
 */
 
 open_db *
-dbfn_open(uschar *name, int flags, open_db *dbblock, BOOL lof, BOOL panic)
+dbfn_open(const uschar * name, int flags, open_db * dbblock,
+  BOOL lof, BOOL panic)
 {
 int rc;
 struct flock lock_data;
-BOOL read_only = flags == O_RDONLY;
+BOOL read_only = (flags & (O_WRONLY|O_RDWR)) == O_RDONLY;
 uschar * dirname, * filename;
 
 /* The first thing to do is to open a separate file on which to lock. This
 ensures that Exim has exclusive use of the database before it even tries to
-open it. If there is a database, there should be a lock file in existence. */
+open it. If there is a database, there should be a lock file in existence;
+if no lockfile we infer there is no database and error out.  We open the
+lockfile using the r/w mode requested for the DB, users lacking permission
+for the DB access mode will error out here. */
 
-#ifdef COMPILE_UTILITY
 if (  asprintf(CSS &dirname, "%s/db", spool_directory) < 0
    || asprintf(CSS &filename, "%s/%s.lockfile", dirname, name) < 0)
   return NULL;
-#else
-dirname = string_sprintf("%s/db", spool_directory);
-filename = string_sprintf("%s/%s.lockfile", dirname, name);
-#endif
 
-dbblock->lockfd = Uopen(filename, flags, 0);
-if (dbblock->lockfd < 0)
+dbblock->lockfd = -1;
+if (exim_lockfile_needed())
   {
-  printf("** Failed to open database lock file %s: %s\n", filename,
-    strerror(errno));
-  return NULL;
-  }
+  if ((dbblock->lockfd = Uopen(filename, flags, 0)) < 0)
+    {
+    printf("** Failed to open database lock file %s: %s\n", filename,
+      strerror(errno));
+    return NULL;
+    }
 
-/* Now we must get a lock on the opened lock file; do this with a blocking
-lock that times out. */
+  /* Now we must get a lock on the opened lock file; do this with a blocking
+  lock that times out. */
 
-lock_data.l_type = read_only ? F_RDLCK : F_WRLCK;
-lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;
+  lock_data.l_type = read_only ? F_RDLCK : F_WRLCK;
+  lock_data.l_whence = lock_data.l_start = lock_data.l_len = 0;
 
-sigalrm_seen = FALSE;
-os_non_restarting_signal(SIGALRM, sigalrm_handler);
-ALARM(EXIMDB_LOCK_TIMEOUT);
-rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
-ALARM_CLR(0);
+  sigalrm_seen = FALSE;
+  os_non_restarting_signal(SIGALRM, sigalrm_handler);
+  ALARM(EXIMDB_LOCK_TIMEOUT);
+  rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
+  ALARM_CLR(0);
 
-if (sigalrm_seen) errno = ETIMEDOUT;
-if (rc < 0)
-  {
-  printf("** Failed to get %s lock for %s: %s",
-    flags & O_WRONLY ? "write" : "read",
-    filename,
-    errno == ETIMEDOUT ? "timed out" : strerror(errno));
-  (void)close(dbblock->lockfd);
-  return NULL;
-  }
+  if (sigalrm_seen) errno = ETIMEDOUT;
+  if (rc < 0)
+    {
+    printf("** Failed to get %s lock for %s: %s",
+      read_only ? "read" : "write",
+      filename,
+      errno == ETIMEDOUT ? "timed out" : strerror(errno));
+    (void)close(dbblock->lockfd);
+    return NULL;
+    }
 
-/* At this point we have an opened and locked separate lock file, that is,
-exclusive access to the database, so we can go ahead and open it. */
+  /* At this point we have an opened and locked separate lock file, that is,
+  exclusive access to the database, so we can go ahead and open it. */
+  }
 
-#ifdef COMPILE_UTILITY
 if (asprintf(CSS &filename, "%s/%s", dirname, name) < 0) return NULL;
-#else
-filename = string_sprintf("%s/%s", dirname, name);
-#endif
-dbblock->dbptr = exim_dbopen(filename, dirname, flags, 0);
 
-if (!dbblock->dbptr)
+if (flags & O_RDWR) flags |= O_CREAT;
+
+if (!(dbblock->dbptr = exim_dbopen(filename, dirname, flags, 0)))
   {
-  printf("** Failed to open DBM file %s for %s:\n   %s%s\n", filename,
-    read_only? "reading" : "writing", strerror(errno),
-    #ifdef USE_DB
+  printf("** Failed to open DBM file %s for %s: %s%s\n", filename,
+    read_only ? "reading" : "writing", strerror(errno),
+#ifdef USE_DB
     " (or Berkeley DB error while opening)"
-    #else
+#else
     ""
-    #endif
+#endif
     );
-  (void)close(dbblock->lockfd);
+  if (dbblock->lockfd >= 0) (void)close(dbblock->lockfd);
   return NULL;
   }
 
@@ -373,17 +367,17 @@ return dbblock;
 *************************************************/
 
 /* Closing a file automatically unlocks it, so after closing the database, just
-close the lock file.
+close the lock file if there was one.
 
 Argument: a pointer to an open database block
 Returns:  nothing
 */
 
 void
-dbfn_close(open_db *dbblock)
+dbfn_close(open_db * dbp)
 {
-exim_dbclose(dbblock->dbptr);
-(void)close(dbblock->lockfd);
+exim_dbclose(dbp->dbptr);
+if (dbp->lockfd >= 0) (void) close(dbp->lockfd);
 }
 
 
@@ -520,7 +514,7 @@ Arguments:
   cursor   a pointer to a pointer to a cursor anchor, for those dbm libraries
            that use the notion of a cursor
 
-Returns:   the next record from the file, or
+Returns:   the next *key* (nul-terminated) from the file, or
            NULL if there are no more
 */
 
@@ -575,7 +569,7 @@ argc -= optind; argv += optind;
 spool_directory = argv[0];
 
 if (!(dbm = dbfn_open(argv[1], O_RDONLY, &dbblock, FALSE, TRUE)))
-  exit(1);
+  exit(EXIT_FAILURE);
 
 /* Scan the file, formatting the information for each entry. Note
 that data is returned in a malloc'ed block, in order that it be
@@ -1216,7 +1210,7 @@ printf("Tidying Exim hints database %s/db/%s\n", argv[1], argv[2]);
 
 spool_directory = argv[1];
 if (!(dbm = dbfn_open(argv[2], O_RDWR, &dbblock, FALSE, TRUE)))
-  exit(1);
+  exit(EXIT_FAILURE);
 
 /* Prepare for building file names */
 
@@ -1427,3 +1421,5 @@ return 0;
 #endif  /* EXIM_TIDYDB */
 
 /* End of exim_dbutil.c */
+/* vi: aw ai sw=2
+*/
index 363c1bc71d2a437ecb38cdbbce185a0306122946..b37f962d284883f0e08af15e7bb370158b5a153a 100644 (file)
@@ -103,7 +103,7 @@ usage(void)
 printf("usage: exim_lock [-v] [-q] [-lockfile] [-fcntl] [-flock] [-mbx]\n"
        "       [-retries <n>] [-interval <n>] [-timeout <n>] [-restore-times]\n"
        "       <file name> [command]\n");
-exit(1);
+exit(EXIT_FAILURE);
 }
 
 
@@ -227,7 +227,7 @@ if (use_flock)
   {
   printf("exim_lock: can't use flock() because it was not available in the\n"
          "           operating system when exim_lock was compiled\n");
-  exit(1);
+  exit(EXIT_FAILURE);
   }
 #endif
 
@@ -271,14 +271,14 @@ if (*filename == '~')
   if (pw == NULL)
     {
     printf("exim_lock: unable to expand file name %s\n", argv[i-1]);
-    exit(1);
+    exit(EXIT_FAILURE);
     }
 
   if ((int)strlen(pw->pw_dir) + (int)strlen(filename) + 1 > sizeof(buffer))
     {
     printf("exim_lock: expanded file name %s%s is too long", pw->pw_dir,
       filename);
-    exit(1);
+    exit(EXIT_FAILURE);
     }
 
   strcpy(buffer, pw->pw_dir);
@@ -294,7 +294,7 @@ if (use_lockfile)
   if (uname(&s) < 0)
     {
     printf("exim_lock: failed to find host name using uname()\n");
-    exit(1);
+    exit(EXIT_FAILURE);
     }
   primary_hostname = s.nodename;
 
@@ -331,7 +331,7 @@ for (j = 0; j < lock_retries; j++)
       {
       printf("exim_lock: failed to create hitching post %s: %s\n", hitchname,
         strerror(errno));
-      exit(1);
+      exit(EXIT_FAILURE);
       }
 
     /* Apply hitching post algorithm. */
index 5724812c4c0870147e3ef0b04504f90baaf362b3..882db6873898c0161610f9742f0132de23fb6a67 100644 (file)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# Copyright (c) The Exim Maintainers 2023
+# Copyright (c) The Exim Maintainers 2023 - 2024
 # Copyright (c) University of Cambridge, 1995 - 2007
 # See the file NOTICE for conditions of use and distribution.
 
index 1d121756da4db75df3a8e4f9b1873d11576d46ed..e7d0899090a220800ccff8031796cd3dfea030a3 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -259,7 +259,9 @@ static uschar *op_table_main[] = {
   US"strlen",
   US"substr",
   US"uc",
-  US"utf8clean" };
+  US"utf8clean",
+  US"xtextd",
+  };
 
 enum {
   EOP_ADDRESS =  nelem(op_table_underscore),
@@ -307,7 +309,9 @@ enum {
   EOP_STRLEN,
   EOP_SUBSTR,
   EOP_UC,
-  EOP_UTF8CLEAN };
+  EOP_UTF8CLEAN,
+  EOP_XTEXTD,
+  };
 
 
 /* Table of condition names, and corresponding switch numbers. The names must
@@ -7326,19 +7330,20 @@ NOT_ITEM: ;
 
       case EOP_LC:
        {
-       int count = 0;
-       uschar *t = sub - 1;
-       while (*(++t) != 0) { *t = tolower(*t); count++; }
-       yield = string_catn(yield, sub, count);
+       uschar * t = sub - 1;
+       while (*++t) *t = tolower(*t);
+       yield = string_catn(yield, sub, t-sub);
        break;
        }
+       {
+       uschar * s = sub;
+       }
 
       case EOP_UC:
        {
-       int count = 0;
-       uschar *t = sub - 1;
-       while (*(++t) != 0) { *t = toupper(*t); count++; }
-       yield = string_catn(yield, sub, count);
+       uschar * t = sub - 1;
+       while (*++t) *t = toupper(*t);
+       yield = string_catn(yield, sub, t-sub);
        break;
        }
 
@@ -7774,7 +7779,6 @@ NOT_ITEM: ;
            }
          else
            yield = string_cat(yield, sub);
-         break;
          }
 
        /* quote_lookuptype does lookup-specific quoting */
@@ -7806,526 +7810,533 @@ NOT_ITEM: ;
            }
 
          yield = string_cat(yield, sub);
-         break;
          }
+       break;
 
-       /* rx quote sticks in \ before any non-alphameric character so that
-       the insertion works in a regular expression. */
+      /* rx quote sticks in \ before any non-alphameric character so that
+      the insertion works in a regular expression. */
 
-       case EOP_RXQUOTE:
+      case EOP_RXQUOTE:
+       {
+       uschar *t = sub - 1;
+       while (*(++t) != 0)
          {
-         uschar *t = sub - 1;
-         while (*(++t) != 0)
-           {
-           if (!isalnum(*t))
-             yield = string_catn(yield, US"\\", 1);
-           yield = string_catn(yield, t, 1);
-           }
-         break;
+         if (!isalnum(*t))
+           yield = string_catn(yield, US"\\", 1);
+         yield = string_catn(yield, t, 1);
          }
+       break;
+       }
 
-       /* RFC 2047 encodes, assuming headers_charset (default ISO 8859-1) as
-       prescribed by the RFC, if there are characters that need to be encoded */
+      /* RFC 2047 encodes, assuming headers_charset (default ISO 8859-1) as
+      prescribed by the RFC, if there are characters that need to be encoded */
 
-       case EOP_RFC2047:
-         yield = string_cat(yield,
-                             parse_quote_2047(sub, Ustrlen(sub), headers_charset,
-                               FALSE));
-         break;
+      case EOP_RFC2047:
+       yield = string_cat(yield,
+                           parse_quote_2047(sub, Ustrlen(sub), headers_charset,
+                             FALSE));
+       break;
 
-       /* RFC 2047 decode */
+      /* RFC 2047 decode */
 
-       case EOP_RFC2047D:
+      case EOP_RFC2047D:
+       {
+       int len;
+       uschar *error;
+       uschar *decoded = rfc2047_decode(sub, check_rfc2047_length,
+         headers_charset, '?', &len, &error);
+       if (error)
          {
-         int len;
-         uschar *error;
-         uschar *decoded = rfc2047_decode(sub, check_rfc2047_length,
-           headers_charset, '?', &len, &error);
-         if (error)
-           {
-           expand_string_message = error;
-           goto EXPAND_FAILED;
-           }
-         yield = string_catn(yield, decoded, len);
-         break;
+         expand_string_message = error;
+         goto EXPAND_FAILED;
          }
+       yield = string_catn(yield, decoded, len);
+       break;
+       }
 
-       /* from_utf8 converts UTF-8 to 8859-1, turning non-existent chars into
-       underscores */
+      /* from_utf8 converts UTF-8 to 8859-1, turning non-existent chars into
+      underscores */
 
-       case EOP_FROM_UTF8:
+      case EOP_FROM_UTF8:
+       {
+       uschar * buff = store_get(4, sub);
+       while (*sub)
          {
-         uschar * buff = store_get(4, sub);
-         while (*sub)
-           {
-           int c;
-           GETUTF8INC(c, sub);
-           if (c > 255) c = '_';
-           buff[0] = c;
-           yield = string_catn(yield, buff, 1);
-           }
-         break;
+         int c;
+         GETUTF8INC(c, sub);
+         if (c > 255) c = '_';
+         buff[0] = c;
+         yield = string_catn(yield, buff, 1);
          }
+       break;
+       }
 
-       /* replace illegal UTF-8 sequences by replacement character  */
+      /* replace illegal UTF-8 sequences by replacement character  */
 
-       #define UTF8_REPLACEMENT_CHAR US"?"
+      #define UTF8_REPLACEMENT_CHAR US"?"
+
+      case EOP_UTF8CLEAN:
+       {
+       int seq_len = 0, index = 0, bytes_left = 0, complete;
+       u_long codepoint = (u_long)-1;
+       uschar seq_buff[4];                     /* accumulate utf-8 here */
 
-       case EOP_UTF8CLEAN:
+       /* Manually track tainting, as we deal in individual chars below */
+
+       if (!yield)
+         yield = string_get_tainted(Ustrlen(sub), sub);
+       else if (!yield->s || !yield->ptr)
          {
-         int seq_len = 0, index = 0, bytes_left = 0, complete;
-         u_long codepoint = (u_long)-1;
-         uschar seq_buff[4];                   /* accumulate utf-8 here */
+         yield->s = store_get(yield->size = Ustrlen(sub), sub);
+         gstring_reset(yield);
+         }
+       else if (is_incompatible(yield->s, sub))
+         gstring_rebuffer(yield, sub);
 
-         /* Manually track tainting, as we deal in individual chars below */
+       /* Check the UTF-8, byte-by-byte */
+
+       while (*sub)
+         {
+         complete = 0;
+         uschar c = *sub++;
 
-         if (!yield)
-           yield = string_get_tainted(Ustrlen(sub), sub);
-         else if (!yield->s || !yield->ptr)
+         if (bytes_left)
            {
-           yield->s = store_get(yield->size = Ustrlen(sub), sub);
-           gstring_reset(yield);
+           if ((c & 0xc0) != 0x80)
+                   /* wrong continuation byte; invalidate all bytes */
+             complete = 1; /* error */
+           else
+             {
+             codepoint = (codepoint << 6) | (c & 0x3f);
+             seq_buff[index++] = c;
+             if (--bytes_left == 0)            /* codepoint complete */
+               if(codepoint > 0x10FFFF)        /* is it too large? */
+                 complete = -1;        /* error (RFC3629 limit) */
+               else if ( (codepoint & 0x1FF800 ) == 0xD800 ) /* surrogate */
+                 /* A UTF-16 surrogate (which should be one of a pair that
+                 encode a Unicode codepoint that is outside the Basic
+                 Multilingual Plane).  Error, not UTF8.
+                 RFC2279.2 is slightly unclear on this, but 
+                 https://unicodebook.readthedocs.io/issues.html#strict-utf8-decoder
+                 says "Surrogates characters are also invalid in UTF-8:
+                 characters in U+D800—U+DFFF have to be rejected." */
+                 complete = -1;
+               else
+                 {             /* finished; output utf-8 sequence */
+                 yield = string_catn(yield, seq_buff, seq_len);
+                 index = 0;
+                 }
+             }
            }
-         else if (is_incompatible(yield->s, sub))
-           gstring_rebuffer(yield, sub);
-
-         /* Check the UTF-8, byte-by-byte */
-
-         while (*sub)
+         else  /* no bytes left: new sequence */
            {
-           complete = 0;
-           uschar c = *sub++;
-
-           if (bytes_left)
+           if (!(c & 0x80))    /* 1-byte sequence, US-ASCII, keep it */
              {
-             if ((c & 0xc0) != 0x80)
-                     /* wrong continuation byte; invalidate all bytes */
-               complete = 1; /* error */
+             yield = string_catn(yield, &c, 1);
+             continue;
+             }
+           if ((c & 0xe0) == 0xc0)             /* 2-byte sequence */
+             if (c == 0xc0 || c == 0xc1)       /* 0xc0 and 0xc1 are illegal */
+               complete = -1;
              else
                {
-               codepoint = (codepoint << 6) | (c & 0x3f);
-               seq_buff[index++] = c;
-               if (--bytes_left == 0)          /* codepoint complete */
-                 if(codepoint > 0x10FFFF)      /* is it too large? */
-                   complete = -1;      /* error (RFC3629 limit) */
-                 else if ( (codepoint & 0x1FF800 ) == 0xD800 ) /* surrogate */
-                   /* A UTF-16 surrogate (which should be one of a pair that
-                   encode a Unicode codepoint that is outside the Basic
-                   Multilingual Plane).  Error, not UTF8.
-                   RFC2279.2 is slightly unclear on this, but 
-                   https://unicodebook.readthedocs.io/issues.html#strict-utf8-decoder
-                   says "Surrogates characters are also invalid in UTF-8:
-                   characters in U+D800—U+DFFF have to be rejected." */
-                   complete = -1;
-                 else
-                   {           /* finished; output utf-8 sequence */
-                   yield = string_catn(yield, seq_buff, seq_len);
-                   index = 0;
-                   }
+               bytes_left = 1;
+               codepoint = c & 0x1f;
                }
+           else if ((c & 0xf0) == 0xe0)                /* 3-byte sequence */
+             {
+             bytes_left = 2;
+             codepoint = c & 0x0f;
              }
-           else        /* no bytes left: new sequence */
+           else if ((c & 0xf8) == 0xf0)                /* 4-byte sequence */
              {
-             if (!(c & 0x80))  /* 1-byte sequence, US-ASCII, keep it */
-               {
-               yield = string_catn(yield, &c, 1);
-               continue;
-               }
-             if ((c & 0xe0) == 0xc0)           /* 2-byte sequence */
-               if (c == 0xc0 || c == 0xc1)     /* 0xc0 and 0xc1 are illegal */
-                 complete = -1;
-               else
-                 {
-                 bytes_left = 1;
-                 codepoint = c & 0x1f;
-                 }
-             else if ((c & 0xf0) == 0xe0)              /* 3-byte sequence */
-               {
-               bytes_left = 2;
-               codepoint = c & 0x0f;
-               }
-             else if ((c & 0xf8) == 0xf0)              /* 4-byte sequence */
-               {
-               bytes_left = 3;
-               codepoint = c & 0x07;
-               }
-             else      /* invalid or too long (RFC3629 allows only 4 bytes) */
-               complete = -1;
+             bytes_left = 3;
+             codepoint = c & 0x07;
+             }
+           else        /* invalid or too long (RFC3629 allows only 4 bytes) */
+             complete = -1;
 
-             seq_buff[index++] = c;
-             seq_len = bytes_left + 1;
-             }         /* if(bytes_left) */
+           seq_buff[index++] = c;
+           seq_len = bytes_left + 1;
+           }           /* if(bytes_left) */
 
-           if (complete != 0)
-             {
-             bytes_left = index = 0;
-             yield = string_catn(yield, UTF8_REPLACEMENT_CHAR, 1);
-             }
-           if ((complete == 1) && ((c & 0x80) == 0))
-                         /* ASCII character follows incomplete sequence */
-               yield = string_catn(yield, &c, 1);
+         if (complete != 0)
+           {
+           bytes_left = index = 0;
+           yield = string_catn(yield, UTF8_REPLACEMENT_CHAR, 1);
            }
-         /* If given a sequence truncated mid-character, we also want to report ?
-         Eg, ${length_1:フィル} is one byte, not one character, so we expect
-         ${utf8clean:${length_1:フィル}} to yield '?' */
+         if ((complete == 1) && ((c & 0x80) == 0))
+                       /* ASCII character follows incomplete sequence */
+             yield = string_catn(yield, &c, 1);
+         }
+       /* If given a sequence truncated mid-character, we also want to report ?
+       Eg, ${length_1:フィル} is one byte, not one character, so we expect
+       ${utf8clean:${length_1:フィル}} to yield '?' */
 
-         if (bytes_left != 0)
-           yield = string_catn(yield, UTF8_REPLACEMENT_CHAR, 1);
+       if (bytes_left != 0)
+         yield = string_catn(yield, UTF8_REPLACEMENT_CHAR, 1);
 
-         break;
-         }
+       break;
+       }
 
 #ifdef SUPPORT_I18N
-       case EOP_UTF8_DOMAIN_TO_ALABEL:
+      case EOP_UTF8_DOMAIN_TO_ALABEL:
+       {
+       uschar * error = NULL;
+       uschar * s = string_domain_utf8_to_alabel(sub, &error);
+       if (error)
          {
-         uschar * error = NULL;
-         uschar * s = string_domain_utf8_to_alabel(sub, &error);
-         if (error)
-           {
-           expand_string_message = string_sprintf(
-             "error converting utf8 (%s) to alabel: %s",
-             string_printing(sub), error);
-           goto EXPAND_FAILED;
-           }
-         yield = string_cat(yield, s);
-         break;
+         expand_string_message = string_sprintf(
+           "error converting utf8 (%s) to alabel: %s",
+           string_printing(sub), error);
+         goto EXPAND_FAILED;
          }
+       yield = string_cat(yield, s);
+       break;
+       }
 
-       case EOP_UTF8_DOMAIN_FROM_ALABEL:
+      case EOP_UTF8_DOMAIN_FROM_ALABEL:
+       {
+       uschar * error = NULL;
+       uschar * s = string_domain_alabel_to_utf8(sub, &error);
+       if (error)
          {
-         uschar * error = NULL;
-         uschar * s = string_domain_alabel_to_utf8(sub, &error);
-         if (error)
-           {
-           expand_string_message = string_sprintf(
-             "error converting alabel (%s) to utf8: %s",
-             string_printing(sub), error);
-           goto EXPAND_FAILED;
-           }
-         yield = string_cat(yield, s);
-         break;
+         expand_string_message = string_sprintf(
+           "error converting alabel (%s) to utf8: %s",
+           string_printing(sub), error);
+         goto EXPAND_FAILED;
          }
+       yield = string_cat(yield, s);
+       break;
+       }
 
-       case EOP_UTF8_LOCALPART_TO_ALABEL:
+      case EOP_UTF8_LOCALPART_TO_ALABEL:
+       {
+       uschar * error = NULL;
+       uschar * s = string_localpart_utf8_to_alabel(sub, &error);
+       if (error)
          {
-         uschar * error = NULL;
-         uschar * s = string_localpart_utf8_to_alabel(sub, &error);
-         if (error)
-           {
-           expand_string_message = string_sprintf(
-             "error converting utf8 (%s) to alabel: %s",
-             string_printing(sub), error);
-           goto EXPAND_FAILED;
-           }
-         yield = string_cat(yield, s);
-         DEBUG(D_expand) debug_printf_indent("yield: '%Y'\n", yield);
-         break;
+         expand_string_message = string_sprintf(
+           "error converting utf8 (%s) to alabel: %s",
+           string_printing(sub), error);
+         goto EXPAND_FAILED;
          }
+       yield = string_cat(yield, s);
+       DEBUG(D_expand) debug_printf_indent("yield: '%Y'\n", yield);
+       break;
+       }
 
-       case EOP_UTF8_LOCALPART_FROM_ALABEL:
+      case EOP_UTF8_LOCALPART_FROM_ALABEL:
+       {
+       uschar * error = NULL;
+       uschar * s = string_localpart_alabel_to_utf8(sub, &error);
+       if (error)
          {
-         uschar * error = NULL;
-         uschar * s = string_localpart_alabel_to_utf8(sub, &error);
-         if (error)
-           {
-           expand_string_message = string_sprintf(
-             "error converting alabel (%s) to utf8: %s",
-             string_printing(sub), error);
-           goto EXPAND_FAILED;
-           }
-         yield = string_cat(yield, s);
-         break;
+         expand_string_message = string_sprintf(
+           "error converting alabel (%s) to utf8: %s",
+           string_printing(sub), error);
+         goto EXPAND_FAILED;
          }
+       yield = string_cat(yield, s);
+       break;
+       }
 #endif /* EXPERIMENTAL_INTERNATIONAL */
 
-       /* escape turns all non-printing characters into escape sequences. */
+      /* escape turns all non-printing characters into escape sequences. */
 
-       case EOP_ESCAPE:
-         {
-         const uschar * t = string_printing(sub);
-         yield = string_cat(yield, t);
-         break;
-         }
+      case EOP_ESCAPE:
+       {
+       const uschar * t = string_printing(sub);
+       yield = string_cat(yield, t);
+       break;
+       }
 
-       case EOP_ESCAPE8BIT:
-         {
-         uschar c;
+      case EOP_ESCAPE8BIT:
+       {
+       uschar c;
 
-         for (const uschar * s = sub; (c = *s); s++)
-           yield = c < 127 && c != '\\'
-             ? string_catn(yield, s, 1)
-             : string_fmt_append(yield, "\\%03o", c);
-         break;
-         }
+       for (const uschar * s = sub; (c = *s); s++)
+         yield = c < 127 && c != '\\'
+           ? string_catn(yield, s, 1)
+           : string_fmt_append(yield, "\\%03o", c);
+       break;
+       }
 
-       /* Handle numeric expression evaluation */
+      /* Handle numeric expression evaluation */
 
-       case EOP_EVAL:
-       case EOP_EVAL10:
+      case EOP_EVAL:
+      case EOP_EVAL10:
+       {
+       uschar *save_sub = sub;
+       uschar *error = NULL;
+       int_eximarith_t n = eval_expr(&sub, (c == EOP_EVAL10), &error, FALSE);
+       if (error)
          {
-         uschar *save_sub = sub;
-         uschar *error = NULL;
-         int_eximarith_t n = eval_expr(&sub, (c == EOP_EVAL10), &error, FALSE);
-         if (error)
-           {
-           expand_string_message = string_sprintf("error in expression "
-             "evaluation: %s (after processing \"%.*s\")", error,
-             (int)(sub-save_sub), save_sub);
-           goto EXPAND_FAILED;
-           }
-         yield = string_fmt_append(yield, PR_EXIM_ARITH, n);
-         break;
+         expand_string_message = string_sprintf("error in expression "
+           "evaluation: %s (after processing \"%.*s\")", error,
+           (int)(sub-save_sub), save_sub);
+         goto EXPAND_FAILED;
          }
+       yield = string_fmt_append(yield, PR_EXIM_ARITH, n);
+       break;
+       }
 
-       /* Handle time period formatting */
+      /* Handle time period formatting */
 
-       case EOP_TIME_EVAL:
+      case EOP_TIME_EVAL:
+       {
+       int n = readconf_readtime(sub, 0, FALSE);
+       if (n < 0)
          {
-         int n = readconf_readtime(sub, 0, FALSE);
-         if (n < 0)
-           {
-           expand_string_message = string_sprintf("string \"%s\" is not an "
-             "Exim time interval in \"%s\" operator", sub, name);
-           goto EXPAND_FAILED;
-           }
-         yield = string_fmt_append(yield, "%d", n);
-         break;
+         expand_string_message = string_sprintf("string \"%s\" is not an "
+           "Exim time interval in \"%s\" operator", sub, name);
+         goto EXPAND_FAILED;
          }
+       yield = string_fmt_append(yield, "%d", n);
+       break;
+       }
 
-       case EOP_TIME_INTERVAL:
+      case EOP_TIME_INTERVAL:
+       {
+       int n;
+       uschar *t = read_number(&n, sub);
+       if (*t != 0) /* Not A Number*/
          {
-         int n;
-         uschar *t = read_number(&n, sub);
-         if (*t != 0) /* Not A Number*/
-           {
-           expand_string_message = string_sprintf("string \"%s\" is not a "
-             "positive number in \"%s\" operator", sub, name);
-           goto EXPAND_FAILED;
-           }
-         t = readconf_printtime(n);
-         yield = string_cat(yield, t);
-         break;
+         expand_string_message = string_sprintf("string \"%s\" is not a "
+           "positive number in \"%s\" operator", sub, name);
+         goto EXPAND_FAILED;
          }
+       t = readconf_printtime(n);
+       yield = string_cat(yield, t);
+       break;
+       }
 
-       /* Convert string to base64 encoding */
+      /* Convert string to base64 encoding */
 
-       case EOP_STR2B64:
-       case EOP_BASE64:
-         {
+      case EOP_STR2B64:
+      case EOP_BASE64:
+       {
 #ifndef DISABLE_TLS
-         uschar * s = vp && *(void **)vp->value
-           ? tls_cert_der_b64(*(void **)vp->value)
-           : b64encode(CUS sub, Ustrlen(sub));
+       uschar * s = vp && *(void **)vp->value
+         ? tls_cert_der_b64(*(void **)vp->value)
+         : b64encode(CUS sub, Ustrlen(sub));
 #else
-         uschar * s = b64encode(CUS sub, Ustrlen(sub));
+       uschar * s = b64encode(CUS sub, Ustrlen(sub));
 #endif
-         yield = string_cat(yield, s);
-         break;
-         }
+       yield = string_cat(yield, s);
+       break;
+       }
 
-       case EOP_BASE64D:
+      case EOP_BASE64D:
+       {
+       uschar * s;
+       int len = b64decode(sub, &s, sub);
+       if (len < 0)
          {
-         uschar * s;
-         int len = b64decode(sub, &s, sub);
-         if (len < 0)
-           {
-           expand_string_message = string_sprintf("string \"%s\" is not "
-             "well-formed for \"%s\" operator", sub, name);
-           goto EXPAND_FAILED;
-           }
-         yield = string_cat(yield, s);
-         break;
+         expand_string_message = string_sprintf("string \"%s\" is not "
+           "well-formed for \"%s\" operator", sub, name);
+         goto EXPAND_FAILED;
          }
+       yield = string_cat(yield, s);
+       break;
+       }
 
-       /* strlen returns the length of the string */
+      /* strlen returns the length of the string */
 
-       case EOP_STRLEN:
-         yield = string_fmt_append(yield, "%d", Ustrlen(sub));
-         break;
+      case EOP_STRLEN:
+       yield = string_fmt_append(yield, "%d", Ustrlen(sub));
+       break;
+
+      /* length_n or l_n takes just the first n characters or the whole string,
+      whichever is the shorter;
+
+      substr_m_n, and s_m_n take n characters from offset m; negative m take
+      from the end; l_n is synonymous with s_0_n. If n is omitted in substr it
+      takes the rest, either to the right or to the left.
+
+      hash_n or h_n makes a hash of length n from the string, yielding n
+      characters from the set a-z; hash_n_m makes a hash of length n, but
+      uses m characters from the set a-zA-Z0-9.
+
+      nhash_n returns a single number between 0 and n-1 (in text form), while
+      nhash_n_m returns a div/mod hash as two numbers "a/b". The first lies
+      between 0 and n-1 and the second between 0 and m-1. */
+
+      case EOP_LENGTH:
+      case EOP_L:
+      case EOP_SUBSTR:
+      case EOP_S:
+      case EOP_HASH:
+      case EOP_H:
+      case EOP_NHASH:
+      case EOP_NH:
+       {
+       int sign = 1;
+       int value1 = 0;
+       int value2 = -1;
+       int *pn;
+       int len;
+       uschar *ret;
 
-       /* length_n or l_n takes just the first n characters or the whole string,
-       whichever is the shorter;
-
-       substr_m_n, and s_m_n take n characters from offset m; negative m take
-       from the end; l_n is synonymous with s_0_n. If n is omitted in substr it
-       takes the rest, either to the right or to the left.
-
-       hash_n or h_n makes a hash of length n from the string, yielding n
-       characters from the set a-z; hash_n_m makes a hash of length n, but
-       uses m characters from the set a-zA-Z0-9.
-
-       nhash_n returns a single number between 0 and n-1 (in text form), while
-       nhash_n_m returns a div/mod hash as two numbers "a/b". The first lies
-       between 0 and n-1 and the second between 0 and m-1. */
-
-       case EOP_LENGTH:
-       case EOP_L:
-       case EOP_SUBSTR:
-       case EOP_S:
-       case EOP_HASH:
-       case EOP_H:
-       case EOP_NHASH:
-       case EOP_NH:
+       if (!arg)
          {
-         int sign = 1;
-         int value1 = 0;
-         int value2 = -1;
-         int *pn;
-         int len;
-         uschar *ret;
+         expand_string_message = string_sprintf("missing values after %s",
+           name);
+         goto EXPAND_FAILED;
+         }
 
-         if (!arg)
-           {
-           expand_string_message = string_sprintf("missing values after %s",
-             name);
-           goto EXPAND_FAILED;
-           }
+       /* "length" has only one argument, effectively being synonymous with
+       substr_0_n. */
 
-         /* "length" has only one argument, effectively being synonymous with
-         substr_0_n. */
+       if (c == EOP_LENGTH || c == EOP_L)
+         {
+         pn = &value2;
+         value2 = 0;
+         }
 
-         if (c == EOP_LENGTH || c == EOP_L)
+       /* The others have one or two arguments; for "substr" the first may be
+       negative. The second being negative means "not supplied". */
+
+       else
+         {
+         pn = &value1;
+         if (name[0] == 's' && *arg == '-') { sign = -1; arg++; }
+         }
+
+       /* Read up to two numbers, separated by underscores */
+
+       ret = arg;
+       while (*arg != 0)
+         {
+         if (arg != ret && *arg == '_' && pn == &value1)
            {
            pn = &value2;
            value2 = 0;
+           if (arg[1] != 0) arg++;
            }
-
-         /* The others have one or two arguments; for "substr" the first may be
-         negative. The second being negative means "not supplied". */
-
-         else
+         else if (!isdigit(*arg))
            {
-           pn = &value1;
-           if (name[0] == 's' && *arg == '-') { sign = -1; arg++; }
+           expand_string_message =
+             string_sprintf("non-digit after underscore in \"%s\"", name);
+           goto EXPAND_FAILED;
            }
+         else *pn = (*pn)*10 + *arg++ - '0';
+         }
+       value1 *= sign;
 
-         /* Read up to two numbers, separated by underscores */
-
-         ret = arg;
-         while (*arg != 0)
-           {
-           if (arg != ret && *arg == '_' && pn == &value1)
-             {
-             pn = &value2;
-             value2 = 0;
-             if (arg[1] != 0) arg++;
-             }
-           else if (!isdigit(*arg))
-             {
-             expand_string_message =
-               string_sprintf("non-digit after underscore in \"%s\"", name);
-             goto EXPAND_FAILED;
-             }
-           else *pn = (*pn)*10 + *arg++ - '0';
-           }
-         value1 *= sign;
+       /* Perform the required operation */
 
-         /* Perform the required operation */
+       ret = c == EOP_HASH || c == EOP_H
+         ? compute_hash(sub, value1, value2, &len)
+         : c == EOP_NHASH || c == EOP_NH
+         ? compute_nhash(sub, value1, value2, &len)
+         : extract_substr(sub, value1, value2, &len);
+       if (!ret) goto EXPAND_FAILED;
 
-         ret = c == EOP_HASH || c == EOP_H
-           ? compute_hash(sub, value1, value2, &len)
-           : c == EOP_NHASH || c == EOP_NH
-           ? compute_nhash(sub, value1, value2, &len)
-           : extract_substr(sub, value1, value2, &len);
-         if (!ret) goto EXPAND_FAILED;
+       yield = string_catn(yield, ret, len);
+       break;
+       }
 
-         yield = string_catn(yield, ret, len);
-         break;
-         }
+      /* Stat a path */
 
-       /* Stat a path */
+      case EOP_STAT:
+       {
+       uschar smode[12];
+       uschar **modetable[3];
+       mode_t mode;
+       struct stat st;
 
-       case EOP_STAT:
+       if (expand_forbid & RDO_EXISTS)
          {
-         uschar smode[12];
-         uschar **modetable[3];
-         mode_t mode;
-         struct stat st;
+         expand_string_message = US"Use of the stat() expansion is not permitted";
+         goto EXPAND_FAILED;
+         }
 
-         if (expand_forbid & RDO_EXISTS)
-           {
-           expand_string_message = US"Use of the stat() expansion is not permitted";
-           goto EXPAND_FAILED;
-           }
+       if (stat(CS sub, &st) < 0)
+         {
+         expand_string_message = string_sprintf("stat(%s) failed: %s",
+           sub, strerror(errno));
+         goto EXPAND_FAILED;
+         }
+       mode = st.st_mode;
+       switch (mode & S_IFMT)
+         {
+         case S_IFIFO: smode[0] = 'p'; break;
+         case S_IFCHR: smode[0] = 'c'; break;
+         case S_IFDIR: smode[0] = 'd'; break;
+         case S_IFBLK: smode[0] = 'b'; break;
+         case S_IFREG: smode[0] = '-'; break;
+         default: smode[0] = '?'; break;
+         }
 
-         if (stat(CS sub, &st) < 0)
-           {
-           expand_string_message = string_sprintf("stat(%s) failed: %s",
-             sub, strerror(errno));
-           goto EXPAND_FAILED;
-           }
-         mode = st.st_mode;
-         switch (mode & S_IFMT)
-           {
-           case S_IFIFO: smode[0] = 'p'; break;
-           case S_IFCHR: smode[0] = 'c'; break;
-           case S_IFDIR: smode[0] = 'd'; break;
-           case S_IFBLK: smode[0] = 'b'; break;
-           case S_IFREG: smode[0] = '-'; break;
-           default: smode[0] = '?'; break;
-           }
+       modetable[0] = ((mode & 01000) == 0)? mtable_normal : mtable_sticky;
+       modetable[1] = ((mode & 02000) == 0)? mtable_normal : mtable_setid;
+       modetable[2] = ((mode & 04000) == 0)? mtable_normal : mtable_setid;
 
-         modetable[0] = ((mode & 01000) == 0)? mtable_normal : mtable_sticky;
-         modetable[1] = ((mode & 02000) == 0)? mtable_normal : mtable_setid;
-         modetable[2] = ((mode & 04000) == 0)? mtable_normal : mtable_setid;
+       for (int i = 0; i < 3; i++)
+         {
+         memcpy(CS(smode + 7 - i*3), CS(modetable[i][mode & 7]), 3);
+         mode >>= 3;
+         }
 
-         for (int i = 0; i < 3; i++)
-           {
-           memcpy(CS(smode + 7 - i*3), CS(modetable[i][mode & 7]), 3);
-           mode >>= 3;
-           }
+       smode[10] = 0;
+       yield = string_fmt_append(yield,
+         "mode=%04lo smode=%s inode=%ld device=%ld links=%ld "
+         "uid=%ld gid=%ld size=" OFF_T_FMT " atime=%ld mtime=%ld ctime=%ld",
+         (long)(st.st_mode & 077777), smode, (long)st.st_ino,
+         (long)st.st_dev, (long)st.st_nlink, (long)st.st_uid,
+         (long)st.st_gid, st.st_size, (long)st.st_atime,
+         (long)st.st_mtime, (long)st.st_ctime);
+       break;
+       }
 
-         smode[10] = 0;
-         yield = string_fmt_append(yield,
-           "mode=%04lo smode=%s inode=%ld device=%ld links=%ld "
-           "uid=%ld gid=%ld size=" OFF_T_FMT " atime=%ld mtime=%ld ctime=%ld",
-           (long)(st.st_mode & 077777), smode, (long)st.st_ino,
-           (long)st.st_dev, (long)st.st_nlink, (long)st.st_uid,
-           (long)st.st_gid, st.st_size, (long)st.st_atime,
-           (long)st.st_mtime, (long)st.st_ctime);
-         break;
-         }
+      /* vaguely random number less than N */
 
-       /* vaguely random number less than N */
+      case EOP_RANDINT:
+       {
+       int_eximarith_t max = expanded_string_integer(sub, TRUE);
 
-       case EOP_RANDINT:
-         {
-         int_eximarith_t max = expanded_string_integer(sub, TRUE);
+       if (expand_string_message)
+         goto EXPAND_FAILED;
+       yield = string_fmt_append(yield, "%d", vaguely_random_number((int)max));
+       break;
+       }
 
-         if (expand_string_message)
-           goto EXPAND_FAILED;
-         yield = string_fmt_append(yield, "%d", vaguely_random_number((int)max));
-         break;
-         }
+      /* Reverse IP, including IPv6 to dotted-nibble */
 
-       /* Reverse IP, including IPv6 to dotted-nibble */
+      case EOP_REVERSE_IP:
+       {
+       int family, maskptr;
+       uschar reversed[128];
 
-       case EOP_REVERSE_IP:
+       family = string_is_ip_address(sub, &maskptr);
+       if (family == 0)
          {
-         int family, maskptr;
-         uschar reversed[128];
-
-         family = string_is_ip_address(sub, &maskptr);
-         if (family == 0)
-           {
-           expand_string_message = string_sprintf(
-               "reverse_ip() not given an IP address [%s]", sub);
-           goto EXPAND_FAILED;
-           }
-         invert_address(reversed, sub);
-         yield = string_cat(yield, reversed);
-         break;
+         expand_string_message = string_sprintf(
+             "reverse_ip() not given an IP address [%s]", sub);
+         goto EXPAND_FAILED;
          }
+       invert_address(reversed, sub);
+       yield = string_cat(yield, reversed);
+       break;
+       }
 
-       /* Unknown operator */
+      case EOP_XTEXTD:
+       {
+       uschar * s;
+       int len = auth_xtextdecode(sub, &s);
+       yield = string_catn(yield, s, len);
+       break;
+       }
 
-       default:
-         expand_string_message =
-           string_sprintf("unknown expansion operator \"%s\"", name);
-         goto EXPAND_FAILED;
-       }       /* EOP_* switch */
+      /* Unknown operator */
+      default:
+       expand_string_message =
+         string_sprintf("unknown expansion operator \"%s\"", name);
+       goto EXPAND_FAILED;
+      }        /* EOP_* switch */
 
-       DEBUG(D_expand)
+      DEBUG(D_expand)
        {
        const uschar * res = string_from_gstring(yield);
        const uschar * s = res + expansion_start;
index 18567f17c32d43f9fa0df4e8c0b07636881a4b22..813ffdd7c7e4e5777ff04b160da31c9ce528d38c 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -71,35 +71,6 @@ enum { had_neither, had_else, had_elif, had_endif };
 static BOOL read_command_list(const uschar **, filter_cmd ***, BOOL);
 
 
-/* The string arguments for the mail command. The header line ones (that are
-permitted to include \n followed by white space) first, and then the body text
-one (it can have \n anywhere). Then the file names and once_repeat, which may
-not contain \n. */
-
-static const char *mailargs[] = {  /* "to" must be first, and */
-  "to",                            /* "cc" and "bcc" must follow */
-  "cc",
-  "bcc",
-  "from",
-  "reply_to",
-  "subject",
-  "extra_headers",           /* miscellaneous added header lines */
-  "text",
-  "file",
-  "log",
-  "once",
-  "once_repeat"
-};
-
-/* The count of string arguments */
-
-#define MAILARGS_STRING_COUNT (nelem(mailargs))
-
-/* The count of string arguments that are actually passed over as strings
-(once_repeat is converted to an int). */
-
-#define mailargs_string_passed (MAILARGS_STRING_COUNT - 1)
-
 /* This defines the offsets for the arguments; first the string ones, and
 then the non-string ones. The order must be as above. */
 
@@ -120,21 +91,50 @@ enum { mailarg_index_to,
        mailargs_total              /* total number of arguments */
        };
 
+/* The string arguments for the mail command. The header line ones (that are
+permitted to include \n followed by white space) first, and then the body text
+one (it can have \n anywhere). Then the file names and once_repeat, which may
+not contain \n. */
+
+static const char *mailargs[] = {  /* "to" must be first, and */
+  [mailarg_index_to] = "to",       /* "cc" and "bcc" must follow */
+  [mailarg_index_cc] = "cc",
+  [mailarg_index_bcc] = "bcc",
+  [mailarg_index_from] = "from",
+  [mailarg_index_reply_to] = "reply_to",
+  [mailarg_index_subject] = "subject",
+  [mailarg_index_headers] = "extra_headers", /* misc added header lines */
+  [mailarg_index_text] = "text",
+  [mailarg_index_file] = "file",
+  [mailarg_index_log] = "log",
+  [mailarg_index_once] = "once",
+  [mailarg_index_once_repeat] = "once_repeat"
+};
+
+/* The count of string arguments */
+
+#define MAILARGS_STRING_COUNT (nelem(mailargs))
+
+/* The count of string arguments that are actually passed over as strings
+(once_repeat is converted to an int). */
+
+#define mailargs_string_passed (MAILARGS_STRING_COUNT - 1)
+
 /* Offsets in the data structure for the string arguments (note that
 once_repeat isn't a string argument at this point.) */
 
-static int reply_offsets[] = {  /* must be in same order as above */
-  offsetof(reply_item, to),
-  offsetof(reply_item, cc),
-  offsetof(reply_item, bcc),
-  offsetof(reply_item, from),
-  offsetof(reply_item, reply_to),
-  offsetof(reply_item, subject),
-  offsetof(reply_item, headers),
-  offsetof(reply_item, text),
-  offsetof(reply_item, file),
-  offsetof(reply_item, logfile),
-  offsetof(reply_item, oncelog),
+static int reply_offsets[] = {
+  [mailarg_index_to] = offsetof(reply_item, to),
+  [mailarg_index_cc] = offsetof(reply_item, cc),
+  [mailarg_index_bcc] = offsetof(reply_item, bcc),
+  [mailarg_index_from] = offsetof(reply_item, from),
+  [mailarg_index_reply_to] = offsetof(reply_item, reply_to),
+  [mailarg_index_subject] = offsetof(reply_item, subject),
+  [mailarg_index_headers] = offsetof(reply_item, headers),
+  [mailarg_index_text] = offsetof(reply_item, text),
+  [mailarg_index_file] = offsetof(reply_item, file),
+  [mailarg_index_log] = offsetof(reply_item, logfile),
+  [mailarg_index_once] = offsetof(reply_item, oncelog),
 };
 
 /* Condition identities and names, with negated versions for some
@@ -147,20 +147,48 @@ enum { cond_and, cond_or, cond_personal, cond_begins, cond_BEGINS,
        cond_manualthaw, cond_foranyaddress };
 
 static const char *cond_names[] = {
-  "and", "or", "personal",
-  "begins", "BEGINS", "ends", "ENDS",
-  "is", "IS", "matches", "MATCHES", "contains",
-  "CONTAINS", "delivered", "above", "below", "error_message",
-  "first_delivery", "manually_thawed", "foranyaddress" };
+  [cond_and] = "and",
+  [cond_or] = "or",
+  [cond_personal] = "personal",
+  [cond_begins] = "begins",
+  [cond_BEGINS] = "BEGINS",
+  [cond_ends] = "ends",
+  [cond_ENDS] = "ENDS",
+  [cond_is] = "is",
+  [cond_IS] = "IS",
+  [cond_matches] = "matches",
+  [cond_MATCHES] = "MATCHES",
+  [cond_contains] = "contains",
+  [cond_CONTAINS] = "CONTAINS",
+  [cond_delivered] = "delivered",
+  [cond_above] = "above",
+  [cond_below] = "below",
+  [cond_errormsg] = "error_message",
+  [cond_firsttime] = "first_delivery",
+  [cond_manualthaw] = "manually_thawed",
+  [cond_foranyaddress] = "foranyaddress" };
 
 static const char *cond_not_names[] = {
-  "", "", "not personal",
-  "does not begin", "does not BEGIN",
-  "does not end", "does not END",
-  "is not", "IS not", "does not match",
-  "does not MATCH", "does not contain", "does not CONTAIN",
-  "not delivered", "not above", "not below", "not error_message",
-  "not first_delivery", "not manually_thawed", "not foranyaddress" };
+  [cond_and] = "",
+  [cond_or] = "",
+  [cond_personal] = "not personal",
+  [cond_begins] = "does not begin",
+  [cond_BEGINS] = "does not BEGIN",
+  [cond_ends] = "does not end",
+  [cond_ENDS] = "does not END",
+  [cond_is] = "is not",
+  [cond_IS] = "IS not",
+  [cond_matches] = "does not match",
+  [cond_MATCHES] = "does not MATCH",
+  [cond_contains] = "does not contain",
+  [cond_CONTAINS] = "does not CONTAIN",
+  [cond_delivered] = "not delivered",
+  [cond_above] = "not above",
+  [cond_below] = "not below",
+  [cond_errormsg] = "not error_message",
+  [cond_firsttime] = "not first_delivery",
+  [cond_manualthaw] = "not manually_thawed",
+  [cond_foranyaddress] = "not foranyaddress" };
 
 /* Tables of binary condition words and their corresponding types. Not easy
 to amalgamate with the above because of the different variants. */
@@ -196,34 +224,34 @@ static int cond_types[] = { cond_BEGINS, cond_BEGINS, cond_CONTAINS,
 
 /* Command identities */
 
-enum { add_command, defer_command, deliver_command, elif_command, else_command,
-       endif_command, finish_command, fail_command, freeze_command,
-       headers_command, if_command, logfile_command, logwrite_command,
-       mail_command, noerror_command, pipe_command, save_command, seen_command,
-       testprint_command, unseen_command, vacation_command };
+enum { ADD_COMMAND, DEFER_COMMAND, DELIVER_COMMAND, ELIF_COMMAND, ELSE_COMMAND,
+       ENDIF_COMMAND, FINISH_COMMAND, FAIL_COMMAND, FREEZE_COMMAND,
+       HEADERS_COMMAND, IF_COMMAND, LOGFILE_COMMAND, LOGWRITE_COMMAND,
+       MAIL_COMMAND, NOERROR_COMMAND, PIPE_COMMAND, SAVE_COMMAND, SEEN_COMMAND,
+       TESTPRINT_COMMAND, UNSEEN_COMMAND, VACATION_COMMAND };
 
 static const char * command_list[] = {
-  [add_command] =      "add",
-  [defer_command] =    "defer",
-  [deliver_command] =  "deliver",
-  [elif_command] =     "elif",
-  [else_command] =     "else",
-  [endif_command] =    "endif",
-  [finish_command] =   "finish",
-  [fail_command] =     "fail",
-  [freeze_command] =   "freeze",
-  [headers_command] =  "headers",
-  [if_command] =       "if",
-  [logfile_command] =  "logfile",
-  [logwrite_command] = "logwrite",
-  [mail_command] =     "mail",
-  [noerror_command] =  "noerror",
-  [pipe_command] =     "pipe",
-  [save_command] =     "save",
-  [seen_command] =     "seen",
-  [testprint_command] =        "testprint",
-  [unseen_command] =   "unseen",
-  [vacation_command] = "vacation"
+  [ADD_COMMAND] =      "add",
+  [DEFER_COMMAND] =    "defer",
+  [DELIVER_COMMAND] =  "deliver",
+  [ELIF_COMMAND] =     "elif",
+  [ELSE_COMMAND] =     "else",
+  [ENDIF_COMMAND] =    "endif",
+  [FINISH_COMMAND] =   "finish",
+  [FAIL_COMMAND] =     "fail",
+  [FREEZE_COMMAND] =   "freeze",
+  [HEADERS_COMMAND] =  "headers",
+  [IF_COMMAND] =       "if",
+  [LOGFILE_COMMAND] =  "logfile",
+  [LOGWRITE_COMMAND] = "logwrite",
+  [MAIL_COMMAND] =     "mail",
+  [NOERROR_COMMAND] =  "noerror",
+  [PIPE_COMMAND] =     "pipe",
+  [SAVE_COMMAND] =     "save",
+  [SEEN_COMMAND] =     "seen",
+  [TESTPRINT_COMMAND] =        "testprint",
+  [UNSEEN_COMMAND] =   "unseen",
+  [VACATION_COMMAND] = "vacation"
 };
 
 static int command_list_count = nelem(command_list);
@@ -232,27 +260,27 @@ static int command_list_count = nelem(command_list);
 If the top bit is set, it means that the default for the command is "seen". */
 
 static uschar command_exparg_count[] = {
-  [add_command] =      2,
-  [defer_command] =    1,
-  [deliver_command] =  128+2,
-  [elif_command] =     0,
-  [else_command] =     0,
-  [endif_command] =    0,
-  [finish_command] =   0,
-  [fail_command] =     1,
-  [freeze_command] =   1,
-  [headers_command] =  1,
-  [if_command] =       0,
-  [logfile_command] =  1,
-  [logwrite_command] = 1,
-  [mail_command] =     MAILARGS_STRING_COUNT,
-  [noerror_command] =  0,
-  [pipe_command] =     128+0,
-  [save_command] =     128+1,
-  [seen_command] =     0,
-  [testprint_command] =        1,
-  [unseen_command] =   0,
-  [vacation_command] = MAILARGS_STRING_COUNT
+  [ADD_COMMAND] =      2,
+  [DEFER_COMMAND] =    1,
+  [DELIVER_COMMAND] =  128+2,
+  [ELIF_COMMAND] =     0,
+  [ELSE_COMMAND] =     0,
+  [ENDIF_COMMAND] =    0,
+  [FINISH_COMMAND] =   0,
+  [FAIL_COMMAND] =     1,
+  [FREEZE_COMMAND] =   1,
+  [HEADERS_COMMAND] =  1,
+  [IF_COMMAND] =       0,
+  [LOGFILE_COMMAND] =  1,
+  [LOGWRITE_COMMAND] = 1,
+  [MAIL_COMMAND] =     MAILARGS_STRING_COUNT,
+  [NOERROR_COMMAND] =  0,
+  [PIPE_COMMAND] =     128+0,
+  [SAVE_COMMAND] =     128+1,
+  [SEEN_COMMAND] =     0,
+  [TESTPRINT_COMMAND] =        1,
+  [UNSEEN_COMMAND] =   0,
+  [VACATION_COMMAND] = MAILARGS_STRING_COUNT
 };
 
 
@@ -795,8 +823,8 @@ switch(c->type)
   case cond_errormsg:
   case cond_firsttime:
   case cond_manualthaw:
-  debug_printf("%s", name);
-  break;
+    debug_printf("%s", name);
+    break;
 
   case cond_is:
   case cond_IS:
@@ -810,31 +838,31 @@ switch(c->type)
   case cond_ENDS:
   case cond_above:
   case cond_below:
-  debug_printf("%s %s %s", c->left.u, name, c->right.u);
-  break;
+    debug_printf("%s %s %s", c->left.u, name, c->right.u);
+    break;
 
   case cond_and:
-  if (!c->testfor) debug_printf("not (");
-  print_condition(c->left.c, FALSE);
-  debug_printf(" %s ", cond_names[c->type]);
-  print_condition(c->right.c, FALSE);
-  if (!c->testfor) debug_printf(")");
-  break;
+    if (!c->testfor) debug_printf("not (");
+    print_condition(c->left.c, FALSE);
+    debug_printf(" %s ", cond_names[c->type]);
+    print_condition(c->right.c, FALSE);
+    if (!c->testfor) debug_printf(")");
+    break;
 
   case cond_or:
-  if (!c->testfor) debug_printf("not (");
-  else if (!toplevel) debug_printf("(");
-  print_condition(c->left.c, FALSE);
-  debug_printf(" %s ", cond_names[c->type]);
-  print_condition(c->right.c, FALSE);
-  if (!toplevel || !c->testfor) debug_printf(")");
-  break;
+    if (!c->testfor) debug_printf("not (");
+    else if (!toplevel) debug_printf("(");
+    print_condition(c->left.c, FALSE);
+    debug_printf(" %s ", cond_names[c->type]);
+    print_condition(c->right.c, FALSE);
+    if (!toplevel || !c->testfor) debug_printf(")");
+    break;
 
   case cond_foranyaddress:
-  debug_printf("%s %s (", name, c->left.u);
-  print_condition(c->right.c, FALSE);
-  debug_printf(")");
-  break;
+    debug_printf("%s %s (", name, c->left.u);
+    print_condition(c->right.c, FALSE);
+    debug_printf(")");
+    break;
   }
 }
 
@@ -904,15 +932,15 @@ switch (command)
   stored in the second argument slot. Neither may be preceded by seen, unseen
   or noerror. */
 
-  case add_command:
-  case headers_command:
-  if (seen_force || noerror_force)
-    {
-    *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
-      "found before an \"%s\" command near line %d",
-        command_list[command], line_number);
-    yield = FALSE;
-    }
+  case ADD_COMMAND:
+  case HEADERS_COMMAND:
+    if (seen_force || noerror_force)
+      {
+      *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
+       "found before an \"%s\" command near line %d",
+         command_list[command], line_number);
+      yield = FALSE;
+      }
   /* Fall through */
 
   /* Logwrite, logfile, pipe, and testprint all take a single argument, save
@@ -920,303 +948,303 @@ switch (command)
   have "errors_to <address>" in a system filter, or in a user filter if the
   address is the current one. */
 
-  case deliver_command:
-  case logfile_command:
-  case logwrite_command:
-  case pipe_command:
-  case save_command:
-  case testprint_command:
+  case DELIVER_COMMAND:
+  case LOGFILE_COMMAND:
+  case LOGWRITE_COMMAND:
+  case PIPE_COMMAND:
+  case SAVE_COMMAND:
+  case TESTPRINT_COMMAND:
 
-  ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-  if (!*buffer)
-    *error_pointer = string_sprintf("\"%s\" requires an argument "
-      "near line %d of filter file", command_list[command], line_number);
+    ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+    if (!*buffer)
+      *error_pointer = string_sprintf("\"%s\" requires an argument "
+       "near line %d of filter file", command_list[command], line_number);
 
-  if (*error_pointer) yield = FALSE; else
-    {
-    union argtypes argument, second_argument;
+    if (*error_pointer) yield = FALSE; else
+      {
+      union argtypes argument, second_argument;
 
-    argument.u = second_argument.u = NULL;
+      argument.u = second_argument.u = NULL;
 
-    if (command == add_command)
-      {
-      argument.u = string_copy(buffer);
-      ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-      if (!*buffer || Ustrcmp(buffer, "to") != 0)
-        *error_pointer = string_sprintf("\"to\" expected in \"add\" command "
-          "near line %d of filter file", line_number);
-      else
-        {
-        ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-        if (!*buffer)
-          *error_pointer = string_sprintf("value missing after \"to\" "
-            "near line %d of filter file", line_number);
-        else second_argument.u = string_copy(buffer);
-        }
-      }
+      if (command == ADD_COMMAND)
+       {
+       argument.u = string_copy(buffer);
+       ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+       if (!*buffer || Ustrcmp(buffer, "to") != 0)
+         *error_pointer = string_sprintf("\"to\" expected in \"add\" command "
+           "near line %d of filter file", line_number);
+       else
+         {
+         ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+         if (!*buffer)
+           *error_pointer = string_sprintf("value missing after \"to\" "
+             "near line %d of filter file", line_number);
+         else second_argument.u = string_copy(buffer);
+         }
+       }
 
-    else if (command == headers_command)
-      {
-      if (Ustrcmp(buffer, "add") == 0)
-        second_argument.b = TRUE;
-      else
-        if (Ustrcmp(buffer, "remove") == 0) second_argument.b = FALSE;
-      else
-        if (Ustrcmp(buffer, "charset") == 0)
-          second_argument.b = TRUE_UNSET;
-      else
-        {
-        *error_pointer = string_sprintf("\"add\", \"remove\", or \"charset\" "
-          "expected after \"headers\" near line %d of filter file",
-            line_number);
-        yield = FALSE;
-        }
+      else if (command == HEADERS_COMMAND)
+       {
+       if (Ustrcmp(buffer, "add") == 0)
+         second_argument.b = TRUE;
+       else
+         if (Ustrcmp(buffer, "remove") == 0) second_argument.b = FALSE;
+       else
+         if (Ustrcmp(buffer, "charset") == 0)
+           second_argument.b = TRUE_UNSET;
+       else
+         {
+         *error_pointer = string_sprintf("\"add\", \"remove\", or \"charset\" "
+           "expected after \"headers\" near line %d of filter file",
+             line_number);
+         yield = FALSE;
+         }
 
-      if (!f.system_filtering && second_argument.b != TRUE_UNSET)
-        {
-        *error_pointer = string_sprintf("header addition and removal is "
-          "available only in system filters: near line %d of filter file",
-          line_number);
-        yield = FALSE;
-        break;
-        }
+       if (!f.system_filtering && second_argument.b != TRUE_UNSET)
+         {
+         *error_pointer = string_sprintf("header addition and removal is "
+           "available only in system filters: near line %d of filter file",
+           line_number);
+         yield = FALSE;
+         break;
+         }
 
-      if (yield)
-        {
-        ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-        if (!*buffer)
-          *error_pointer = string_sprintf("value missing after \"add\", "
-            "\"remove\", or \"charset\" near line %d of filter file",
-              line_number);
-        else argument.u = string_copy(buffer);
-        }
-      }
+       if (yield)
+         {
+         ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+         if (!*buffer)
+           *error_pointer = string_sprintf("value missing after \"add\", "
+             "\"remove\", or \"charset\" near line %d of filter file",
+               line_number);
+         else argument.u = string_copy(buffer);
+         }
+       }
 
-    /* The argument for the logwrite command must end in a newline, and the save
-    and logfile commands can have an optional mode argument. The deliver
-    command can have an optional "errors_to <address>" for a system filter,
-    or for a user filter if the address is the user's address. Accept the
-    syntax here - the check is later. */
+      /* The argument for the logwrite command must end in a newline, and the save
+      and logfile commands can have an optional mode argument. The deliver
+      command can have an optional "errors_to <address>" for a system filter,
+      or for a user filter if the address is the user's address. Accept the
+      syntax here - the check is later. */
 
-    else
-      {
-      if (command == logwrite_command)
-        {
-        int len = Ustrlen(buffer);
-        if (len == 0 || buffer[len-1] != '\n') Ustrcat(buffer, US"\n");
-        }
+      else
+       {
+       if (command == LOGWRITE_COMMAND)
+         {
+         int len = Ustrlen(buffer);
+         if (len == 0 || buffer[len-1] != '\n') Ustrcat(buffer, US"\n");
+         }
 
-      argument.u = string_copy(buffer);
+       argument.u = string_copy(buffer);
 
-      if (command == save_command || command == logfile_command)
-        {
-        if (isdigit(*ptr))
-          {
-          ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-          second_argument.i = (int)Ustrtol(buffer, NULL, 8);
-          }
-        else second_argument.i = -1;
-        }
+       if (command == SAVE_COMMAND || command == LOGFILE_COMMAND)
+         {
+         if (isdigit(*ptr))
+           {
+           ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
+           second_argument.i = (int)Ustrtol(buffer, NULL, 8);
+           }
+         else second_argument.i = -1;
+         }
 
-      else if (command == deliver_command)
-        {
-        const uschar *save_ptr = ptr;
-        ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-        if (Ustrcmp(buffer, "errors_to") == 0)
-          {
-          ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-          second_argument.u = string_copy(buffer);
-          }
-        else ptr = save_ptr;
-        }
-      }
+       else if (command == DELIVER_COMMAND)
+         {
+         const uschar *save_ptr = ptr;
+         ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
+         if (Ustrcmp(buffer, "errors_to") == 0)
+           {
+           ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
+           second_argument.u = string_copy(buffer);
+           }
+         else ptr = save_ptr;
+         }
+       }
 
-    /* Set up the command block. Seen defaults TRUE for delivery commands,
-    FALSE for logging commands, and it doesn't matter for testprint, as
-    that doesn't change the "delivered" status. */
+      /* Set up the command block. Seen defaults TRUE for delivery commands,
+      FALSE for logging commands, and it doesn't matter for testprint, as
+      that doesn't change the "delivered" status. */
 
-    if (*error_pointer) yield = FALSE;
-    else
-      {
-      new = store_get(sizeof(filter_cmd) + sizeof(union argtypes), GET_UNTAINTED);
-      new->next = NULL;
-      **lastcmdptr = new;
-      *lastcmdptr = &(new->next);
-      new->command = command;
-      new->seen = seen_force? seen_value : command_exparg_count[command] >= 128;
-      new->noerror = noerror_force;
-      new->args[0] = argument;
-      new->args[1] = second_argument;
+      if (*error_pointer) yield = FALSE;
+      else
+       {
+       new = store_get(sizeof(filter_cmd) + sizeof(union argtypes), GET_UNTAINTED);
+       new->next = NULL;
+       **lastcmdptr = new;
+       *lastcmdptr = &(new->next);
+       new->command = command;
+       new->seen = seen_force? seen_value : command_exparg_count[command] >= 128;
+       new->noerror = noerror_force;
+       new->args[0] = argument;
+       new->args[1] = second_argument;
+       }
       }
-    }
-  break;
+    break;
 
 
   /* Elif, else and endif just set a flag if expected. */
 
-  case elif_command:
-  case else_command:
-  case endif_command:
-  if (seen_force || noerror_force)
-    {
-    *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
-      "near line %d is not followed by a command", line_number);
-    yield = FALSE;
-    }
+  case ELIF_COMMAND:
+  case ELSE_COMMAND:
+  case ENDIF_COMMAND:
+    if (seen_force || noerror_force)
+      {
+      *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
+       "near line %d is not followed by a command", line_number);
+      yield = FALSE;
+      }
 
-  if (expect_endif > 0)
-    had_else_endif = (command == elif_command)? had_elif :
-                     (command == else_command)? had_else : had_endif;
-  else
-    {
-    *error_pointer = string_sprintf("unexpected \"%s\" command near "
-      "line %d of filter file", buffer, line_number);
-    yield = FALSE;
-    }
-  break;
+    if (expect_endif > 0)
+      had_else_endif = (command == ELIF_COMMAND)? had_elif :
+                      (command == ELSE_COMMAND)? had_else : had_endif;
+    else
+      {
+      *error_pointer = string_sprintf("unexpected \"%s\" command near "
+       "line %d of filter file", buffer, line_number);
+      yield = FALSE;
+      }
+    break;
 
 
   /* Defer, freeze, and fail are available only if permitted. */
 
-  case defer_command:
-  cmd_bit = RDO_DEFER;
-  goto DEFER_FREEZE_FAIL;
+  case DEFER_COMMAND:
+    cmd_bit = RDO_DEFER;
+    goto DEFER_FREEZE_FAIL;
 
-  case fail_command:
-  cmd_bit = RDO_FAIL;
-  goto DEFER_FREEZE_FAIL;
+  case FAIL_COMMAND:
+    cmd_bit = RDO_FAIL;
+    goto DEFER_FREEZE_FAIL;
 
-  case freeze_command:
-  cmd_bit = RDO_FREEZE;
+  case FREEZE_COMMAND:
+    cmd_bit = RDO_FREEZE;
 
   DEFER_FREEZE_FAIL:
-  if ((filter_options & cmd_bit) == 0)
-    {
-    *error_pointer = string_sprintf("filtering command \"%s\" is disabled: "
-      "near line %d of filter file", buffer, line_number);
-    yield = FALSE;
-    break;
-    }
+    if ((filter_options & cmd_bit) == 0)
+      {
+      *error_pointer = string_sprintf("filtering command \"%s\" is disabled: "
+       "near line %d of filter file", buffer, line_number);
+      yield = FALSE;
+      break;
+      }
 
-  /* A text message can be provided after the "text" keyword, or
-  as a string in quotes. */
+    /* A text message can be provided after the "text" keyword, or
+    as a string in quotes. */
 
-  saveptr = ptr;
-  ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-  if (*saveptr != '\"' && (!*buffer || Ustrcmp(buffer, "text") != 0))
-    {
-    ptr = saveptr;
-    fmsg = US"";
-    }
-  else
-    {
-    if (*saveptr != '\"')
-      ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-    fmsg = string_copy(buffer);
-    }
+    saveptr = ptr;
+    ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+    if (*saveptr != '\"' && (!*buffer || Ustrcmp(buffer, "text") != 0))
+      {
+      ptr = saveptr;
+      fmsg = US"";
+      }
+    else
+      {
+      if (*saveptr != '\"')
+       ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+      fmsg = string_copy(buffer);
+      }
 
-  /* Drop through and treat as "finish", but never set "seen". */
+    /* Drop through and treat as "finish", but never set "seen". */
 
-  seen_value = FALSE;
+    seen_value = FALSE;
 
-  /* Finish has no arguments; fmsg defaults to NULL */
+    /* Finish has no arguments; fmsg defaults to NULL */
 
-  case finish_command:
-  new = store_get(sizeof(filter_cmd), GET_UNTAINTED);
-  new->next = NULL;
-  **lastcmdptr = new;
-  *lastcmdptr = &(new->next);
-  new->command = command;
-  new->seen = seen_force ? seen_value : FALSE;
-  new->args[0].u = fmsg;
-  break;
+    case FINISH_COMMAND:
+    new = store_get(sizeof(filter_cmd), GET_UNTAINTED);
+    new->next = NULL;
+    **lastcmdptr = new;
+    *lastcmdptr = &(new->next);
+    new->command = command;
+    new->seen = seen_force ? seen_value : FALSE;
+    new->args[0].u = fmsg;
+    break;
 
 
   /* Seen, unseen, and noerror are not allowed before if, which takes a
   condition argument and then and else sub-commands. */
 
-  case if_command:
-  if (seen_force || noerror_force)
-    {
-    *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
-      "found before an \"if\" command near line %d",
-        line_number);
-    yield = FALSE;
-    }
+  case IF_COMMAND:
+    if (seen_force || noerror_force)
+      {
+      *error_pointer = string_sprintf("\"seen\", \"unseen\", or \"noerror\" "
+       "found before an \"if\" command near line %d",
+         line_number);
+      yield = FALSE;
+      }
 
-  /* Set up the command block for if */
+    /* Set up the command block for if */
 
-  new = store_get(sizeof(filter_cmd) + 4 * sizeof(union argtypes), GET_UNTAINTED);
-  new->next = NULL;
-  **lastcmdptr = new;
-  *lastcmdptr = &new->next;
-  new->command = command;
-  new->seen = FALSE;
-  new->args[0].u = NULL;
-  new->args[1].u = new->args[2].u = NULL;
-  new->args[3].u = ptr;
+    new = store_get(sizeof(filter_cmd) + 4 * sizeof(union argtypes), GET_UNTAINTED);
+    new->next = NULL;
+    **lastcmdptr = new;
+    *lastcmdptr = &new->next;
+    new->command = command;
+    new->seen = FALSE;
+    new->args[0].u = NULL;
+    new->args[1].u = new->args[2].u = NULL;
+    new->args[3].u = ptr;
 
-  /* Read the condition */
+    /* Read the condition */
 
-  ptr = read_condition(ptr, &new->args[0].c, TRUE);
-  if (*error_pointer) { yield = FALSE; break; }
+    ptr = read_condition(ptr, &new->args[0].c, TRUE);
+    if (*error_pointer) { yield = FALSE; break; }
 
-  /* Read the commands to be obeyed if the condition is true */
+    /* Read the commands to be obeyed if the condition is true */
 
-  newlastcmdptr = &(new->args[1].f);
-  if (!read_command_list(&ptr, &newlastcmdptr, TRUE)) yield = FALSE;
+    newlastcmdptr = &(new->args[1].f);
+    if (!read_command_list(&ptr, &newlastcmdptr, TRUE)) yield = FALSE;
 
-  /* If commands were successfully read, handle the various possible
-  terminators. There may be a number of successive "elif" sections. */
+    /* If commands were successfully read, handle the various possible
+    terminators. There may be a number of successive "elif" sections. */
 
-  else
-    {
-    while (had_else_endif == had_elif)
+    else
       {
-      filter_cmd *newnew =
-        store_get(sizeof(filter_cmd) + 4 * sizeof(union argtypes), GET_UNTAINTED);
-      new->args[2].f = newnew;
-      new = newnew;
-      new->next = NULL;
-      new->command = command;
-      new->seen = FALSE;
-      new->args[0].u = NULL;
-      new->args[1].u = new->args[2].u = NULL;
-      new->args[3].u = ptr;
-
-      ptr = read_condition(ptr, &new->args[0].c, TRUE);
-      if (*error_pointer) { yield = FALSE; break; }
-      newlastcmdptr = &(new->args[1].f);
-      if (!read_command_list(&ptr, &newlastcmdptr, TRUE))
-        yield = FALSE;
-      }
+      while (had_else_endif == had_elif)
+       {
+       filter_cmd *newnew =
+         store_get(sizeof(filter_cmd) + 4 * sizeof(union argtypes), GET_UNTAINTED);
+       new->args[2].f = newnew;
+       new = newnew;
+       new->next = NULL;
+       new->command = command;
+       new->seen = FALSE;
+       new->args[0].u = NULL;
+       new->args[1].u = new->args[2].u = NULL;
+       new->args[3].u = ptr;
+
+       ptr = read_condition(ptr, &new->args[0].c, TRUE);
+       if (*error_pointer) { yield = FALSE; break; }
+       newlastcmdptr = &(new->args[1].f);
+       if (!read_command_list(&ptr, &newlastcmdptr, TRUE))
+         yield = FALSE;
+       }
 
-    if (yield == FALSE) break;
+      if (yield == FALSE) break;
 
-    /* Handle termination by "else", possibly following one or more
-    "elsif" sections. */
+      /* Handle termination by "else", possibly following one or more
+      "elsif" sections. */
 
-    if (had_else_endif == had_else)
-      {
-      newlastcmdptr = &(new->args[2].f);
-      if (!read_command_list(&ptr, &newlastcmdptr, TRUE))
-        yield = FALSE;
-      else if (had_else_endif != had_endif)
-        {
-        *error_pointer = string_sprintf("\"endif\" missing near line %d of "
-          "filter file", line_number);
-        yield = FALSE;
-        }
-      }
+      if (had_else_endif == had_else)
+       {
+       newlastcmdptr = &(new->args[2].f);
+       if (!read_command_list(&ptr, &newlastcmdptr, TRUE))
+         yield = FALSE;
+       else if (had_else_endif != had_endif)
+         {
+         *error_pointer = string_sprintf("\"endif\" missing near line %d of "
+           "filter file", line_number);
+         yield = FALSE;
+         }
+       }
 
-    /* Otherwise the terminator was "endif" - this is checked by
-    read_command_list(). The pointer is already set to NULL. */
-    }
+      /* Otherwise the terminator was "endif" - this is checked by
+      read_command_list(). The pointer is already set to NULL. */
+      }
 
-  /* Reset the terminator flag. */
+    /* Reset the terminator flag. */
 
-  had_else_endif = had_neither;
-  break;
+    had_else_endif = had_neither;
+    break;
 
 
   /* The mail & vacation commands have a whole slew of keyworded arguments.
@@ -1225,150 +1253,150 @@ switch (command)
   are logically booleans, because they are stored in a uschar * value, we use
   NULL and not FALSE, to keep 64-bit compilers happy. */
 
-  case mail_command:
-  case vacation_command:
-  new = store_get(sizeof(filter_cmd) + mailargs_total * sizeof(union argtypes), GET_UNTAINTED);
-  new->next = NULL;
-  new->command = command;
-  new->seen = seen_force ? seen_value : FALSE;
-  new->noerror = noerror_force;
-  for (i = 0; i < mailargs_total; i++) new->args[i].u = NULL;
-
-  /* Read keyword/value pairs until we hit one that isn't. The data
-  must contain only printing chars plus tab, though the "text" value
-  can also contain newlines. The "file" keyword can be preceded by the
-  word "expand", and "return message" has no data. */
-
-  for (;;)
-    {
-    const uschar *saveptr = ptr;
-    ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-    if (*error_pointer)
-      { yield = FALSE; break; }
-
-    /* Ensure "return" is followed by "message"; that's a complete option */
-
-    if (Ustrcmp(buffer, "return") == 0)
+  case MAIL_COMMAND:
+  case VACATION_COMMAND:
+    new = store_get(sizeof(filter_cmd) + mailargs_total * sizeof(union argtypes), GET_UNTAINTED);
+    new->next = NULL;
+    new->command = command;
+    new->seen = seen_force ? seen_value : FALSE;
+    new->noerror = noerror_force;
+    for (i = 0; i < mailargs_total; i++) new->args[i].u = NULL;
+
+    /* Read keyword/value pairs until we hit one that isn't. The data
+    must contain only printing chars plus tab, though the "text" value
+    can also contain newlines. The "file" keyword can be preceded by the
+    word "expand", and "return message" has no data. */
+
+    for (;;)
       {
-      new->args[mailarg_index_return].u = US"";  /* not NULL => TRUE */
+      const uschar *saveptr = ptr;
       ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-      if (Ustrcmp(buffer, "message") != 0)
-        {
-        *error_pointer = string_sprintf("\"return\" not followed by \"message\" "
-          " near line %d of filter file", line_number);
-        yield = FALSE;
-        break;
-        }
-      continue;
-      }
+      if (*error_pointer)
+       { yield = FALSE; break; }
 
-    /* Ensure "expand" is followed by "file", then fall through to process the
-    file keyword. */
+      /* Ensure "return" is followed by "message"; that's a complete option */
 
-    if (Ustrcmp(buffer, "expand") == 0)
-      {
-      new->args[mailarg_index_expand].u = US"";  /* not NULL => TRUE */
-      ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
-      if (Ustrcmp(buffer, "file") != 0)
-        {
-        *error_pointer = string_sprintf("\"expand\" not followed by \"file\" "
-          " near line %d of filter file", line_number);
-        yield = FALSE;
-        break;
-        }
-      }
+      if (Ustrcmp(buffer, "return") == 0)
+       {
+       new->args[mailarg_index_return].u = US"";  /* not NULL => TRUE */
+       ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
+       if (Ustrcmp(buffer, "message") != 0)
+         {
+         *error_pointer = string_sprintf("\"return\" not followed by \"message\" "
+           " near line %d of filter file", line_number);
+         yield = FALSE;
+         break;
+         }
+       continue;
+       }
 
-    /* Scan for the keyword */
+      /* Ensure "expand" is followed by "file", then fall through to process the
+      file keyword. */
 
-    for (i = 0; i < MAILARGS_STRING_COUNT; i++)
-      if (Ustrcmp(buffer, mailargs[i]) == 0) break;
+      if (Ustrcmp(buffer, "expand") == 0)
+       {
+       new->args[mailarg_index_expand].u = US"";  /* not NULL => TRUE */
+       ptr = nextword(ptr, buffer, sizeof(buffer), FALSE);
+       if (Ustrcmp(buffer, "file") != 0)
+         {
+         *error_pointer = string_sprintf("\"expand\" not followed by \"file\" "
+           " near line %d of filter file", line_number);
+         yield = FALSE;
+         break;
+         }
+       }
 
-    /* Not found keyword; assume end of this command */
+      /* Scan for the keyword */
 
-    if (i >= MAILARGS_STRING_COUNT)
-      {
-      ptr = saveptr;
-      break;
-      }
+      for (i = 0; i < MAILARGS_STRING_COUNT; i++)
+       if (Ustrcmp(buffer, mailargs[i]) == 0) break;
 
-    /* Found keyword, read the data item */
+      /* Not found keyword; assume end of this command */
 
-    ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
-    if (*error_pointer)
-      { yield = FALSE; break; }
-    else new->args[i].u = string_copy(buffer);
-    }
+      if (i >= MAILARGS_STRING_COUNT)
+       {
+       ptr = saveptr;
+       break;
+       }
 
-  /* If this is the vacation command, apply some default settings to
-  some of the arguments. */
+      /* Found keyword, read the data item */
 
-  if (command == vacation_command)
-    {
-    if (!new->args[mailarg_index_file].u)
+      ptr = nextitem(ptr, buffer, sizeof(buffer), FALSE);
+      if (*error_pointer)
+       { yield = FALSE; break; }
+      else new->args[i].u = string_copy(buffer);
+      }
+
+    /* If this is the vacation command, apply some default settings to
+    some of the arguments. */
+
+    if (command == VACATION_COMMAND)
       {
-      new->args[mailarg_index_file].u = string_copy(US".vacation.msg");
-      new->args[mailarg_index_expand].u = US"";   /* not NULL => TRUE */
+      if (!new->args[mailarg_index_file].u)
+       {
+       new->args[mailarg_index_file].u = string_copy(US".vacation.msg");
+       new->args[mailarg_index_expand].u = US"";   /* not NULL => TRUE */
+       }
+      if (!new->args[mailarg_index_log].u)
+       new->args[mailarg_index_log].u = string_copy(US".vacation.log");
+      if (!new->args[mailarg_index_once].u)
+       new->args[mailarg_index_once].u = string_copy(US".vacation");
+      if (!new->args[mailarg_index_once_repeat].u)
+       new->args[mailarg_index_once_repeat].u = string_copy(US"7d");
+      if (!new->args[mailarg_index_subject].u)
+       new->args[mailarg_index_subject].u = string_copy(US"On vacation");
       }
-    if (!new->args[mailarg_index_log].u)
-      new->args[mailarg_index_log].u = string_copy(US".vacation.log");
-    if (!new->args[mailarg_index_once].u)
-      new->args[mailarg_index_once].u = string_copy(US".vacation");
-    if (!new->args[mailarg_index_once_repeat].u)
-      new->args[mailarg_index_once_repeat].u = string_copy(US"7d");
-    if (!new->args[mailarg_index_subject].u)
-      new->args[mailarg_index_subject].u = string_copy(US"On vacation");
-    }
 
-  /* Join the address on to the chain of generated addresses */
+    /* Join the address on to the chain of generated addresses */
 
-  **lastcmdptr = new;
-  *lastcmdptr = &(new->next);
-  break;
+    **lastcmdptr = new;
+    *lastcmdptr = &(new->next);
+    break;
 
 
   /* Seen and unseen just set flags */
 
-  case seen_command:
-  case unseen_command:
-  if (!*ptr)
-    {
-    *error_pointer = string_sprintf("\"seen\" or \"unseen\" "
-      "near line %d is not followed by a command", line_number);
-    yield = FALSE;
-    }
-  if (seen_force)
-    {
-    *error_pointer = string_sprintf("\"seen\" or \"unseen\" repeated "
-      "near line %d", line_number);
-    yield = FALSE;
-    }
-  seen_value = (command == seen_command);
-  seen_force = TRUE;
-  was_seen_or_unseen = TRUE;
-  break;
+  case SEEN_COMMAND:
+  case UNSEEN_COMMAND:
+    if (!*ptr)
+      {
+      *error_pointer = string_sprintf("\"seen\" or \"unseen\" "
+       "near line %d is not followed by a command", line_number);
+      yield = FALSE;
+      }
+    if (seen_force)
+      {
+      *error_pointer = string_sprintf("\"seen\" or \"unseen\" repeated "
+       "near line %d", line_number);
+      yield = FALSE;
+      }
+    seen_value = (command == SEEN_COMMAND);
+    seen_force = TRUE;
+    was_seen_or_unseen = TRUE;
+    break;
 
 
   /* So does noerror */
 
-  case noerror_command:
-  if (!*ptr)
-    {
-    *error_pointer = string_sprintf("\"noerror\" "
-      "near line %d is not followed by a command", line_number);
-    yield = FALSE;
-    }
-  noerror_force = TRUE;
-  was_noerror = TRUE;
-  break;
+  case NOERROR_COMMAND:
+    if (!*ptr)
+      {
+      *error_pointer = string_sprintf("\"noerror\" "
+       "near line %d is not followed by a command", line_number);
+      yield = FALSE;
+      }
+    noerror_force = TRUE;
+    was_noerror = TRUE;
+    break;
 
 
   /* Oops */
 
   default:
-  *error_pointer = string_sprintf("unknown filtering command \"%s\" "
-    "near line %d of filter file", buffer, line_number);
-  yield = FALSE;
-  break;
+    *error_pointer = string_sprintf("unknown filtering command \"%s\" "
+      "near line %d of filter file", buffer, line_number);
+    yield = FALSE;
+    break;
   }
 
 if (!was_seen_or_unseen && !was_noerror)
@@ -1712,7 +1740,7 @@ while (commands)
 
   switch(commands->command)
     {
-    case add_command:
+    case ADD_COMMAND:
       for (i = 0; i < 2; i++)
        {
        const uschar *ss = expargs[i];
@@ -1744,7 +1772,7 @@ while (commands)
       /* A deliver command's argument must be a valid address. Its optional
       second argument (system filter only) must also be a valid address. */
 
-    case deliver_command:
+    case DELIVER_COMMAND:
       for (i = 0; i < 2; i++)
        {
        s = expargs[i];
@@ -1820,7 +1848,7 @@ while (commands)
        }
       break;
 
-    case save_command:
+    case SAVE_COMMAND:
       s = expargs[0];
       mode = commands->args[1].i;
 
@@ -1863,7 +1891,7 @@ while (commands)
        }
       break;
 
-    case pipe_command:
+    case PIPE_COMMAND:
       s = string_copy(commands->args[0].u);
       if (filter_test != FTEST_NONE)
        {
@@ -1913,7 +1941,7 @@ while (commands)
       /* Set up the file name and mode, and close any previously open
       file. */
 
-    case logfile_command:
+    case LOGFILE_COMMAND:
       log_mode = commands->args[1].i;
       if (log_mode == -1) log_mode = 0600;
       if (log_fd >= 0)
@@ -1929,7 +1957,7 @@ while (commands)
        }
       break;
 
-    case logwrite_command:
+    case LOGWRITE_COMMAND:
       s = expargs[0];
 
       if (filter_test != FTEST_NONE)
@@ -1988,7 +2016,7 @@ while (commands)
       command is rejected at parse time otherwise. However "headers charset" is
       always permitted. */
 
-    case headers_command:
+    case HEADERS_COMMAND:
        {
        int subtype = commands->args[1].i;
        s = expargs[0];
@@ -2032,17 +2060,17 @@ while (commands)
       very long by the inclusion of message headers; truncate if it is, and also
       ensure printing characters so as not to mess up log files. */
 
-    case defer_command:
+    case DEFER_COMMAND:
       ff_name = US"defer";
       ff_ret = FF_DEFER;
       goto DEFERFREEZEFAIL;
 
-    case fail_command:
+    case FAIL_COMMAND:
       ff_name = US"fail";
       ff_ret = FF_FAIL;
       goto DEFERFREEZEFAIL;
 
-    case freeze_command:
+    case FREEZE_COMMAND:
       ff_name = US"freeze";
       ff_ret = FF_FREEZE;
 
@@ -2062,7 +2090,7 @@ while (commands)
         DEBUG(D_filter) debug_printf_indent("Filter: %s \"%s\"\n", ff_name, fmsg);
       return ff_ret;
 
-    case finish_command:
+    case FINISH_COMMAND:
       if (filter_test != FTEST_NONE)
        {
        indent();
@@ -2074,7 +2102,7 @@ while (commands)
       finish_obeyed = TRUE;
       return filter_delivered ? FF_DELIVERED : FF_NOTDELIVERED;
 
-    case if_command:
+    case IF_COMMAND:
        {
        uschar *save_address = filter_thisaddress;
        int ok = FF_DELIVERED;
@@ -2099,8 +2127,8 @@ while (commands)
       return path is unset or if a non-trusted user supplied -f <>
       as the return path. */
 
-    case mail_command:
-    case vacation_command:
+    case MAIL_COMMAND:
+    case VACATION_COMMAND:
        if (!return_path || !*return_path)
          {
          if (filter_test != FTEST_NONE)
@@ -2196,7 +2224,7 @@ while (commands)
          indent();
          printf("%sail to: %s%s%s\n", (commands->seen)? "Seen m" : "M",
            to ? to : US"<default>",
-           commands->command == vacation_command ? " (vacation)" : "",
+           commands->command == VACATION_COMMAND ? " (vacation)" : "",
            commands->noerror ? " (noerror)" : "");
          for (i = 1; i < MAILARGS_STRING_COUNT; i++)
            {
@@ -2238,7 +2266,7 @@ while (commands)
            debug_printf_indent("Filter: %smail to: %s%s%s\n",
              commands->seen ? "seen " : "",
              to,
-             commands->command == vacation_command ? " (vacation)" : "",
+             commands->command == VACATION_COMMAND ? " (vacation)" : "",
              commands->noerror ? " (noerror)" : "");
            for (i = 1; i < MAILARGS_STRING_COUNT; i++)
              {
@@ -2344,7 +2372,7 @@ while (commands)
          }
        break;
 
-    case testprint_command:
+    case TESTPRINT_COMMAND:
        if (filter_test != FTEST_NONE || (debug_selector & D_filter) != 0)
          {
          const uschar *s = string_printing(expargs[0]);
index 2af5f87c2a3210f56412fd67ad1d665d93d9f6c8..60a853dcffb670138b95cef4b99a8bd72aaa8472 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2022 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2009 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 9f6396a17dfbc41acef0f2510677c563fa85ec7d..cdf97f8bd1b6c25fb0d8846b5a569908aca39f7d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -253,7 +253,7 @@ extern BOOL    dscp_lookup(const uschar *, int, int *, int *, int *);
 extern void    enq_end(uschar *);
 extern BOOL    enq_start(uschar *, unsigned);
 #ifndef DISABLE_EVENT
-extern uschar *event_raise(uschar *, const uschar *, uschar *, int *);
+extern uschar *event_raise(const uschar *, const uschar *, const uschar *, int *);
 extern void    msg_event_raise(const uschar *, const address_item *);
 #endif
 
@@ -311,7 +311,7 @@ extern BOOL    host_is_tls_on_connect_port(int);
 extern int     host_item_get_port(host_item *);
 extern void    host_mask(int, int *, int);
 extern int     host_name_lookup(void);
-extern int     host_nmtoa(int, int *, int, uschar *, int);
+extern int     host_nmtoa(int, const int *, int, uschar *, int);
 extern uschar *host_ntoa(int, const void *, uschar *, int *);
 extern int     host_scan_for_local_hosts(host_item *, host_item **, BOOL *);
 
@@ -427,7 +427,7 @@ extern int     rda_is_filter(const uschar *);
 extern BOOL    readconf_depends(driver_instance *, uschar *);
 extern void    readconf_driver_init(uschar *, driver_instance **,
                  driver_info *, int, void *, int, optionlist *, int);
-extern uschar *readconf_find_option(void *);
+extern const uschar *readconf_find_option(void *);
 extern void    readconf_main(BOOL);
 extern void    readconf_options_from_list(optionlist *, unsigned, const uschar *, uschar *);
 extern BOOL    readconf_print(const uschar *, const uschar *, BOOL);
index 2885caa2309973f79e500ff926ba4dad70a91c49..d51644e05b235263b78eeb8fc2a573b8280e32a4 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -467,7 +467,7 @@ uschar *acl_smtp_quit          = NULL;
 uschar *acl_smtp_rcpt          = NULL;
 uschar *acl_smtp_starttls      = NULL;
 uschar *acl_smtp_vrfy          = NULL;
-#ifdef EXPERIMENTAL_WELLKNOWN
+#ifndef DISABLE_WELLKNOWN
 uschar *acl_smtp_wellknown     = NULL;
 #endif
 
@@ -500,6 +500,9 @@ uschar *acl_wherenames[]       = { [ACL_WHERE_RCPT] =               US"RCPT",
                                    [ACL_WHERE_QUIT] =          US"QUIT",
                                    [ACL_WHERE_STARTTLS] =      US"STARTTLS",
                                    [ACL_WHERE_VRFY] =          US"VRFY",
+#ifndef DISABLE_WELLKNOWN
+                                  [ACL_WHERE_WELLKNOWN] =      US"WELLKNOWN",
+#endif
                                   [ACL_WHERE_DELIVERY] =       US"delivery",
                                   [ACL_WHERE_UNKNOWN] =        US"unknown"
                                  };
@@ -519,6 +522,9 @@ uschar *acl_wherecodes[]       = { [ACL_WHERE_RCPT] =       US"550",
                                    [ACL_WHERE_EXPN] =  US"550",
                                    [ACL_WHERE_HELO] =  US"550",
                                    [ACL_WHERE_STARTTLS] = US"550",
+#ifndef DISABLE_WELLKNOWN
+                                   [ACL_WHERE_WELLKNOWN] =US"550",
+#endif
                                    [ACL_WHERE_VRFY] =  US"252",
                                  };
 
@@ -909,10 +915,10 @@ int     error_handling         = ERRORS_SENDER;
 uschar *errors_reply_to        = NULL;
 int     errors_sender_rc       = EXIT_FAILURE;
 #ifndef DISABLE_EVENT
-uschar *event_action             = NULL;       /* expansion for delivery events */
-uschar *event_data               = NULL;       /* auxiliary data variable for event */
-int     event_defer_errno        = 0;
-const uschar *event_name         = NULL;       /* event name variable */
+uschar *event_action           = NULL; /* expansion for delivery events */
+const uschar *event_data       = NULL; /* auxiliary data variable for event */
+int     event_defer_errno      = 0;
+const uschar *event_name       = NULL; /* event name variable */
 #endif
 
 
@@ -999,9 +1005,6 @@ uschar *hosts_proxy            = NULL;
 #endif
 uschar *hosts_treat_as_local   = NULL;
 uschar *hosts_require_helo     = US"*";
-#ifdef EXPERIMENTAL_WELLKNOWN
-uschar *hosts_wellknown               = NULL;
-#endif
 #ifdef EXPERIMENTAL_XCLIENT
 uschar *hosts_xclient         = NULL;
 #endif
@@ -1669,6 +1672,11 @@ int     warning_count          = 0;
 const uschar *warnmsg_delay    = NULL;
 const uschar *warnmsg_recipients = NULL;
 
+#ifndef DISABLE_WELLKNOWN
+uschar *wellknown_advertise_hosts = NULL;
+uschar *wellknown_response     = NULL;
+#endif
+
 /*  End of globals.c */
 /* vi: aw ai sw=2
 */
index 427590050c19b8cf46b304429762615d2e63d578..dc9d384dbf0e94c3ebba262cc87bb8d567214e58 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -342,6 +342,9 @@ extern uschar *acl_smtp_quit;          /* ACL run for QUIT */
 extern uschar *acl_smtp_rcpt;          /* ACL run for RCPT */
 extern uschar *acl_smtp_starttls;      /* ACL run for STARTTLS */
 extern uschar *acl_smtp_vrfy;          /* ACL run for VRFY */
+#ifndef DISABLE_WELLKNOWN
+extern uschar *acl_smtp_wellknown;     /* ACL run for WELLKNOWN */
+#endif
 extern tree_node *acl_var_c;           /* ACL connection variables */
 extern tree_node *acl_var_m;           /* ACL message variables */
 extern uschar *acl_verify_message;     /* User message for verify failure */
@@ -602,7 +605,7 @@ extern int     errors_sender_rc;       /* Return after message to sender*/
 
 #ifndef DISABLE_EVENT
 extern uschar *event_action;           /* expansion for delivery events */
-extern uschar *event_data;            /* event data */
+extern const uschar *event_data;       /* event data */
 extern int     event_defer_errno;      /* error number set when a remote delivery is deferred with a host error */
 extern const uschar *event_name;       /* event classification */
 #endif
@@ -1134,4 +1137,9 @@ extern uschar *version_string;         /* Version string */
 
 extern int     warning_count;          /* Delay warnings sent for this msg */
 
+#ifndef DISABLE_WELLKNOWN
+extern uschar *wellknown_advertise_hosts;/* Allow WELLKNOWN command for specified hosts */
+extern uschar *wellknown_response;     /* SMTP response for WELLKNOWN verb */
+#endif
+
 /* End of globals.h */
index 2d7199edab4d44d76259413e1a233b1d025ce1d6..c5a856abc97bdb8783fae93e7fa02145a927e139 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -16,13 +16,362 @@ from Pierre A. Humblet, so Exim could be made to work with Cygwin.
 
 For convenience, the definitions of the structures used in the various hints
 databases are also kept in this file, which is used by the maintenance
-utilities as well as the main Exim binary. */
+utilities as well as the main Exim binary.
+
+A key/value store is supported (only).  Keys are strings; values arbitrary
+binary blobs.
+
+The API is:
+  Functions:
+    exim_lockfile_needed       API semantics predicate
+    exim_dbopen
+    exim_dbclose
+    exim_dbget
+    exim_dbput
+    exim_dbputb                        non-overwriting put
+    exim_dbdel
+    exim_dbcreate_cursor
+    exim_dbscan                        get, and bump cursor
+    exim_dbdelete_cursor
+    exim_datum_init
+    exim_datum_size_get/set
+    exim_datum_data_get/set
+    exim_datum_free
+  Defines:
+    EXIM_DB            access handle
+    EXIM_CURSOR                datatype for cursor
+    EXIM_DATUM         datatype for "value"
+    EXIM_DBTYPE                text for logging & debuug
+
+Selection of the shim layer implementation, and backend, is by #defines.
+
+The users of this API are:
+  hintsdb interface    dbfn.c
+  hintsdb utilities    exim_dbutil.c and exim_dbmvuild.c
+  dbmdb lookup         lookups/dbmdb,c
+  autoreply transport  transports/autoreply.c
+
+Note that the dbmdb lookup use, bypassing the dbfn.c layer,
+means that no file-locking is done.
+XXX This feels like a layering violation; I don't see it commented on
+anywhere.
+
+Future: consider re-architecting to support caching of the open-handle
+for hintsdb uses (the dbmdb use gets that already).  This would need APIs
+for transaction locks.  Perhaps merge the implementation with the lookups
+layer, in some way, for the open-handle caching (since that manages closes
+required by Exim's process transisitions)?
+*/
 
 #ifndef HINTSDB_H
 #define HINTSDB_H
 
 
-#if defined(USE_TDB)
+#ifdef USE_SQLITE
+# if defined(USE_DB) || defined(USE_GDBM) || defined(USE_TDB)
+#  error USE_SQLITE conflict with alternate definition
+# endif
+
+/* ********************* sqlite3 interface ************************ */
+
+# include <sqlite3.h>
+
+/* Basic DB type */
+# define EXIM_DB sqlite3
+
+# define EXIM_CURSOR int
+
+# /* The datum type used for queries */
+# define EXIM_DATUM blob
+
+/* Some text for messages */
+# define EXIM_DBTYPE "sqlite3"
+
+# /* Access functions */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return FALSE;  /* We do transaction; no extra locking needed */
+}
+
+/* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
+static inline EXIM_DB *
+exim_dbopen__(const uschar * name, const uschar * dirname, int flags,
+  unsigned mode)
+{
+EXIM_DB * dbp;
+int ret, sflags = flags & O_RDWR ? SQLITE_OPEN_READWRITE : SQLITE_OPEN_READONLY;
+if (flags & O_CREAT) sflags |= SQLITE_OPEN_CREATE;
+if ((ret = sqlite3_open_v2(CCS name, &dbp, sflags, NULL)) == SQLITE_OK)
+  {
+  sqlite3_busy_timeout(dbp, 5000);
+  ret = sqlite3_exec(dbp, "BEGIN TRANSACTION;", NULL, NULL, NULL);
+  if (ret == SQLITE_OK && flags & O_CREAT)
+    ret = sqlite3_exec(dbp,
+           "CREATE TABLE IF NOT EXISTS tbl (ky TEXT PRIMARY KEY, dat BLOB);",
+           NULL, NULL, NULL);
+  if (ret != SQLITE_OK)
+    sqlite3_close(dbp);
+  }
+//else
+//  fprintf(stderr, "sqlite3_open_v2: %s\n", sqlite3_errmsg(dbp));
+return ret == SQLITE_OK ? dbp : NULL;
+}
+
+/* EXIM_DBGET - returns TRUE if successful, FALSE otherwise */
+/* note we alloc'n'copy - the caller need not do so */
+/* result has a NUL appended, but the length is as per the DB */
+
+static inline BOOL
+exim_dbget__(EXIM_DB * dbp, const uschar * s, EXIM_DATUM * res)
+{
+sqlite3_stmt * statement;
+int ret;
+
+res->len = (size_t) -1;
+/* fprintf(stderr, "exim_dbget__(%s)\n", s); */
+if ((ret = sqlite3_prepare_v2(dbp, CCS s, -1, &statement, NULL)) != SQLITE_OK)
+  {
+/* fprintf(stderr, "prepare fail: %s\n", sqlite3_errmsg(dbp)); */
+  return FALSE;
+  }
+if (sqlite3_step(statement) != SQLITE_ROW)
+  {
+/* fprintf(stderr, "step fail: %s\n", sqlite3_errmsg(dbp)); */
+  sqlite3_finalize(statement);
+  return FALSE;
+  }
+
+res->len = sqlite3_column_bytes(statement, 0);
+# ifdef COMPILE_UTILITY
+res->data = malloc(res->len);
+# else
+res->data = store_get(res->len, GET_TAINTED);
+# endif
+memcpy(res->data, sqlite3_column_blob(statement, 0), res->len);
+res->data[res->len] = '\0';
+/* fprintf(stderr, "res %d bytes: '%.*s'\n", (int)res->len, (int)res->len, res->data); */
+sqlite3_finalize(statement);
+return TRUE;
+}
+
+static inline BOOL
+exim_dbget(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * res)
+{
+# define FMT "SELECT dat FROM tbl WHERE ky = '%.*s';"
+uschar * qry;
+int i;
+BOOL ret;
+
+# ifdef COMPILE_UTILITY
+/* fprintf(stderr, "exim_dbget(k len %d '%.*s')\n", (int)key->len, (int)key->len, key->data); */
+qry = malloc(i = snprintf(NULL, 0, FMT, (int) key->len, key->data));
+snprintf(CS qry, i, FMT, (int) key->len, key->data);
+ret = exim_dbget__(dbp, qry, res);
+free(qry);
+# else
+/* fprintf(stderr, "exim_dbget(k len %d '%.*s')\n", (int)key->len, (int)key->len, key->data); */
+qry = string_sprintf(FMT, (int) key->len, key->data);
+ret = exim_dbget__(dbp, qry, res);
+# endif
+
+return ret;
+# undef FMT
+}
+
+/**/
+# define EXIM_DBPUTB_OK  0
+# define EXIM_DBPUTB_DUP (-1)
+
+static inline int
+exim_s_dbp(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * data, const uschar * alt)
+{
+int hlen = data->len * 2, off = 0, res;
+# define FMT "INSERT OR %s INTO tbl (ky,dat) VALUES ('%.*s', X'%.*s');"
+# ifdef COMPILE_UTILITY
+uschar * hex = malloc(hlen+1);
+# else
+uschar * hex = store_get(hlen+1, data->data);
+# endif
+uschar * qry;
+
+for (const uschar * s = data->data, * t = s + data->len; s < t; s++, off += 2)
+  sprintf(CS hex + off, "%02X", *s);
+
+# ifdef COMPILE_UTILITY
+res = snprintf(CS hex, 0, FMT, alt, (int) key->len, key->data, hlen, hex);
+qry = malloc(res);
+snprintf(CS qry, res, FMT, alt, (int) key->len, key->data, hlen, hex);
+/* fprintf(stderr, "exim_s_dbp(%s)\n", qry); */
+res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
+free(qry);
+free(hex);
+# else
+qry = string_sprintf(FMT, alt, (int) key->len, key->data, hlen, hex);
+/* fprintf(stderr, "exim_s_dbp(%s)\n", qry); */
+res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
+/* fprintf(stderr, "exim_s_dbp res %d\n", res); */
+# endif
+
+if (res != SQLITE_OK)
+  fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(dbp));
+
+return res == SQLITE_OK ? EXIM_DBPUTB_OK : EXIM_DBPUTB_DUP;
+# undef FMT
+}
+
+/* EXIM_DBPUT - returns nothing useful, assumes replace mode */
+
+static inline int
+exim_dbput(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * data)
+{
+/* fprintf(stderr, "exim_dbput()\n"); */
+(void) exim_s_dbp(dbp, key, data, US"REPLACE");
+return 0;
+}
+
+/* EXIM_DBPUTB - non-overwriting for use by dbmbuild */
+
+/* Returns from EXIM_DBPUTB */
+
+static inline int
+exim_dbputb(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * data)
+{
+return exim_s_dbp(dbp, key, data, US"ABORT");
+}
+
+/* EXIM_DBDEL */
+static inline int
+exim_dbdel(EXIM_DB * dbp, EXIM_DATUM * key)
+{
+# define FMT "DELETE FROM tbl WHERE ky = '%.*s';"
+uschar * qry;
+int res;
+
+# ifdef COMPILE_UTILITY
+res = snprintf(NULL, 0, FMT, (int) key->len, key->data); /* res excludes nul */
+qry = malloc(res);
+snprintf(CS qry, res, FMT, (int) key->len, key->data);
+res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
+free(qry);
+# else
+qry = string_sprintf(FMT, (int) key->len, key->data);
+res = sqlite3_exec(dbp, CS qry, NULL, NULL, NULL);
+# endif
+
+return res;
+# undef FMT
+}
+
+
+/* EXIM_DBCREATE_CURSOR - initialize for scanning operation */
+/* Cursors are inefficiently emulated by repeating searches */
+
+static inline EXIM_CURSOR *
+exim_dbcreate_cursor(EXIM_DB * dbp)
+{
+# ifdef COMPILE_UTILITY
+EXIM_CURSOR * c = malloc(sizeof(int));
+# else
+EXIM_CURSOR * c = store_malloc(sizeof(int));
+# endif
+*c = 0;
+return c;
+}
+
+/* EXIM_DBSCAN */
+/* Note that we return the (next) key, not the record value */
+static inline BOOL
+exim_dbscan(EXIM_DB * dbp, EXIM_DATUM * key, EXIM_DATUM * res, BOOL first,
+  EXIM_CURSOR * cursor)
+{
+# define FMT "SELECT ky FROM tbl ORDER BY ky LIMIT 1 OFFSET %d;"
+uschar * qry;
+int i;
+BOOL ret;
+
+# ifdef COMPILE_UTILITY
+qry = malloc((i = snprintf(NULL, 0, FMT, *cursor)));
+snprintf(CS qry, i-1, FMT, *cursor);
+/* fprintf(stderr, "exim_dbscan(%s)\n", qry); */
+ret = exim_dbget__(dbp, qry, key);
+free(qry);
+/* fprintf(stderr, "exim_dbscan ret %c\n", ret ? 'T':'F'); */
+# else
+qry = string_sprintf(FMT, *cursor);
+/* fprintf(stderr, "exim_dbscan(%s)\n", qry); */
+ret = exim_dbget__(dbp, qry, key);
+/* fprintf(stderr, "exim_dbscan ret %c\n", ret ? 'T':'F'); */
+# endif
+if (ret) *cursor = *cursor + 1;
+return ret;
+# undef FMT
+}
+
+/* EXIM_DBDELETE_CURSOR - terminate scanning operation. */
+static inline void
+exim_dbdelete_cursor(EXIM_CURSOR * cursor)
+{
+# ifdef COMPILE_UTILITY
+free(cursor);
+# else
+store_free(cursor);
+# endif
+}
+
+
+/* EXIM_DBCLOSE */
+static void
+exim_dbclose__(EXIM_DB * dbp)
+{
+(void) sqlite3_exec(dbp, "COMMIT TRANSACTION;", NULL, NULL, NULL);
+sqlite3_close(dbp);
+}
+
+
+/* Datum access */
+
+static uschar *
+exim_datum_data_get(EXIM_DATUM * dp)
+{ return US dp->data; }
+static void
+exim_datum_data_set(EXIM_DATUM * dp, void * s)
+{ dp->data = s; }
+static unsigned
+exim_datum_size_get(EXIM_DATUM * dp)
+{ return dp->len; }
+static void
+exim_datum_size_set(EXIM_DATUM * dp, unsigned n)
+{ dp->len = n; }
+
+
+
+static inline void
+exim_datum_init(EXIM_DATUM * dp)
+{ dp->data = NULL; }                   /* compiler quietening */
+
+/* No free needed for a datum */
+
+static inline void
+exim_datum_free(EXIM_DATUM * dp)
+{ }
+
+/* size limit */
+
+# define EXIM_DB_RLIMIT        150
+
+
+
+
+
+
+#elif defined(USE_TDB)
+
+# if defined(USE_DB) || defined(USE_GDBM) || defined(USE_SQLITE)
+#  error USE_TDB conflict with alternate definition
+# endif
 
 /* ************************* tdb interface ************************ */
 /*XXX https://manpages.org/tdb/3 mentions concurrent writes.
@@ -45,6 +394,12 @@ tdb_traverse to be called) */
 
 /* Access functions */
 
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
+
 /* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
 static inline EXIM_DB *
 exim_dbopen__(const uschar * name, const uschar * dirname, int flags,
@@ -85,7 +440,11 @@ exim_dbdel(EXIM_DB * dbp, EXIM_DATUM * key)
 static inline EXIM_CURSOR *
 exim_dbcreate_cursor(EXIM_DB * dbp)
 {
+# ifdef COMPILE_UTILITY
+EXIM_CURSOR * c = malloc(sizeof(TDB_DATA));
+# else
 EXIM_CURSOR * c = store_malloc(sizeof(TDB_DATA));
+# endif
 c->dptr = NULL;
 return c;
 }
@@ -157,6 +516,10 @@ d->dptr = NULL;
 
 #elif defined USE_DB
 
+# if defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
+#  error USE_DB conflict with alternate definition
+# endif
+
 # include <db.h>
 
 /* 1.x did no locking
@@ -212,7 +575,13 @@ log_write(0, LOG_MAIN, "Berkeley DB error: %s", msg);
 
 
 
-/* Access functions */
+/* Access functions (BDB 4.1+) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
 
 /* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
 /* The API changed for DB 4.1. - and we also starting using the "env" with a
@@ -235,8 +604,9 @@ if (db_create(&b, dbp, 0) == 0)
   {
   dbp->app_private = b;
   if (b->open(b, NULL, CS name, NULL,
-             flags == O_RDONLY ? DB_UNKNOWN : DB_HASH,
-             flags == O_RDONLY ? DB_RDONLY : DB_CREATE,
+             flags & O_CREAT ? DB_HASH : DB_UNKNOWN,
+             flags & O_CREAT ? DB_CREATE
+             : flags & (O_WRONLY|O_RDWR) ? 0 : DB_RDONLY,
              mode) == 0
          )
     return dbp;
@@ -358,7 +728,13 @@ exim_datum_free(EXIM_DATUM * d)
 /* Some text for messages */
 #   define EXIM_DBTYPE   "db (v3/4)"
 
-/* Access functions */
+/* Access functions (BDB 3/4) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
 
 /* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
 static inline EXIM_DB *
@@ -369,8 +745,9 @@ EXIM_DB * dbp;
 return db_create(&dbp, NULL, 0) == 0
   && (  dbp->set_errcall(dbp, dbfn_bdb_error_callback),
        dbp->open(dbp, CS name, NULL,
-         flags == O_RDONLY ? DB_UNKNOWN : DB_HASH,
-         flags == O_RDONLY ? DB_RDONLY : DB_CREATE,
+         flags & O_CREAT ? DB_HASH : DB_UNKNOWN,
+         flags & O_CREAT ? DB_CREATE
+         : flags & (O_WRONLY|O_RDWR) ? 0 : DB_RDONLY,
          mode)
      ) == 0
   ? dbp : NULL;
@@ -480,7 +857,11 @@ exim_datum_free(EXIM_DATUM * d)
 /********************* gdbm interface definitions **********************/
 
 #elif defined USE_GDBM
-/*XXX TODO: exim's locfile not needed */
+/*XXX TODO: exim's lockfile not needed? */
+
+# if defined(USE_TDB) || defined(USE_DB) || defined(USE_SQLITE)
+#  error USE_GDBM conflict with alternate definition
+# endif
 
 # include <gdbm.h>
 
@@ -500,7 +881,13 @@ typedef struct {
 
 # define EXIM_DBTYPE "gdbm"
 
-/* Access functions */
+/* Access functions (gdbm) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
 
 /* EXIM_DBOPEN - return pointer to an EXIM_DB, NULL if failed */
 static inline EXIM_DB *
@@ -513,8 +900,7 @@ if (dbp)
   dbp->lkey.dptr = NULL;
   dbp->gdbm = gdbm_open(CS name, 0,
     flags & O_CREAT ? GDBM_WRCREAT
-    : flags & (O_RDWR|O_WRONLY) ? GDBM_WRITER
-    : GDBM_READER,
+    : flags & (O_RDWR|O_WRONLY) ? GDBM_WRITER : GDBM_READER,
     mode, 0);
   if (dbp->gdbm) return dbp;
   free(dbp);
@@ -609,7 +995,7 @@ static inline void
 exim_datum_free(EXIM_DATUM * d)
 { free(d->dptr); }
 
-/* size limit */
+/* size limit. GDBM is int-max limited, but we want to be less silly */
 
 # define EXIM_DB_RLIMIT        150
 
@@ -620,8 +1006,8 @@ exim_datum_free(EXIM_DATUM * d)
 
 
 
-/* If none of USE_DB, USG_GDBM, or USE_TDB are set, the default is the NDBM
-interface */
+/* If none of USE_DB, USG_GDBM, USE_SQLITE or USE_TDB are set,
+the default is the NDBM interface (which seems to be a wrapper for GDBM) */
 
 
 /********************* ndbm interface definitions **********************/
@@ -641,7 +1027,13 @@ interface */
 
 # define EXIM_DBTYPE "ndbm"
 
-/* Access functions */
+/* Access functions (ndbm) */
+
+static inline BOOL
+exim_lockfile_needed(void)
+{
+return TRUE;
+}
 
 /* EXIM_DBOPEN - returns a EXIM_DB *, NULL if failed */
 /* Check that the name given is not present. This catches
@@ -745,7 +1137,7 @@ exim_datum_free(EXIM_DATUM * d)
 
 # define EXIM_DB_RLIMIT        150
 
-#endif /* USE_GDBM */
+#endif /* !USE_GDBM */
 
 
 
@@ -809,3 +1201,5 @@ exim_dbclose__(dbp);
 
 #endif /* whole file */
 /* End of hintsdb.h */
+/* vi: aw ai sw=2
+*/
index 5da311c2be9e36a358dc9d1ffac3568fcc8ed54e..5f50dfd5f38342a0d2d82eaadc5a7ab93599ed5c 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index 08e946548c10d1f00161f8a79c16f4965441bb60..5979718148813926a9c097215d2e98bc1fd77324 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1061,19 +1061,15 @@ Returns:      the number of characters placed in buffer, not counting
 */
 
 int
-host_nmtoa(int count, int *binary, int mask, uschar *buffer, int sep)
+host_nmtoa(int count, const int * binary, int mask, uschar * buffer, int sep)
 {
-int j;
-uschar *tt = buffer;
+uschar * tt = buffer;
 
 if (count == 1)
-  {
-  j = binary[0];
-  for (int i = 24; i >= 0; i -= 8)
+  for (int j = binary[0], i = 24; i >= 0; i -= 8)
     tt += sprintf(CS tt, "%d.", (j >> i) & 255);
-  }
 else
-  for (int i = 0; i < 4; i++)
+  for (int j, i = 0; i < 4; i++)
     {
     j = binary[i];
     tt += sprintf(CS tt, "%04x%c%04x%c", (j >> 16) & 0xffff, sep, j & 0xffff, sep);
@@ -1302,30 +1298,30 @@ host_item *last = *lastptr;
 host_item *prev = NULL;
 host_item *h;
 
-if (removed != NULL) *removed = FALSE;
+if (removed) *removed = FALSE;
 
-if (local_interface_data == NULL) local_interface_data = host_find_interfaces();
+if (!local_interface_data) local_interface_data = host_find_interfaces();
 
 for (h = host; h != last->next; h = h->next)
   {
-  #ifndef STAND_ALONE
-  if (hosts_treat_as_local != NULL)
+#ifndef STAND_ALONE
+  if (hosts_treat_as_local)
     {
     int rc;
-    const uschar *save = deliver_domain;
+    const uschar * save = deliver_domain;
     deliver_domain = h->name;   /* set $domain */
     rc = match_isinlist(string_copylc(h->name), CUSS &hosts_treat_as_local, 0,
       &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL);
     deliver_domain = save;
     if (rc == OK) goto FOUND_LOCAL;
     }
-  #endif
+#endif
 
   /* It seems that on many operating systems, 0.0.0.0 is treated as a synonym
   for 127.0.0.1 and refers to the local host. We therefore force it always to
   be treated as local. */
 
-  if (h->address != NULL)
+  if (h->address)
     {
     if (Ustrcmp(h->address, "0.0.0.0") == 0) goto FOUND_LOCAL;
     for (ip_address_item * ip = local_interface_data; ip; ip = ip->next)
@@ -1336,7 +1332,8 @@ for (h = host; h != last->next; h = h->next)
   /* Update prev to point to the last host item before any that have
   the same MX value as the one we have just considered. */
 
-  if (h->next == NULL || h->next->mx != h->mx) prev = h;
+  if (!h->next || h->next->mx != h->mx)
+    prev = h;
   }
 
 return yield;  /* No local hosts found: return HOST_FOUND or HOST_FIND_FAILED */
@@ -1346,7 +1343,7 @@ something in hosts_treat_as_local has been found. */
 
 FOUND_LOCAL:
 
-if (prev == NULL)
+if (!prev)
   {
   HDEBUG(D_host_lookup) debug_printf((h->mx >= 0)?
     "local host has lowest MX\n" :
@@ -1361,7 +1358,7 @@ HDEBUG(D_host_lookup)
     debug_printf("  %s %s %d\n", h->name, h->address, h->mx);
   }
 
-if (removed != NULL) *removed = TRUE;
+if (removed) *removed = TRUE;
 prev->next = last->next;
 *lastptr = prev;
 return yield;
@@ -1572,8 +1569,7 @@ connection. */
 int
 host_name_lookup(void)
 {
-int old_pool, rc;
-int sep = 0;
+int sep = 0, old_pool, rc, yield;
 uschar *save_hostname;
 uschar **aliases;
 uschar *ordername;
@@ -1585,6 +1581,7 @@ sender_host_dnssec = host_lookup_deferred = host_lookup_failed = FALSE;
 
 HDEBUG(D_host_lookup)
   debug_printf("looking up host name for %s\n", sender_host_address);
+expand_level++;
 
 /* For testing the case when a lookup does not complete, we have a special
 reserved IP address. */
@@ -1595,7 +1592,8 @@ if (f.running_in_test_harness &&
   HDEBUG(D_host_lookup)
     debug_printf("Test harness: host name lookup returns DEFER\n");
   host_lookup_deferred = TRUE;
-  return DEFER;
+  yield = DEFER;
+  goto out;
   }
 
 /* Do lookups directly in the DNS or via gethostbyaddr() (or equivalent), in
@@ -1653,7 +1651,7 @@ while ((ordername = string_nextinlist(&list, &sep, NULL, 0)))
         truncated and dn_expand may fail. */
 
         if (dn_expand(dnsa->answer, dnsa->answer + dnsa->answerlen,
-             US (rr->data), (DN_EXPAND_ARG4_TYPE)(s), ssize) < 0)
+             US rr->data, (DN_EXPAND_ARG4_TYPE)(s), ssize) < 0)
           {
           log_write(0, LOG_MAIN, "host name alias list truncated for %s",
             sender_host_address);
@@ -1693,7 +1691,8 @@ while ((ordername = string_nextinlist(&list, &sep, NULL, 0)))
       HDEBUG(D_host_lookup)
         debug_printf("IP address PTR lookup gave temporary error\n");
       host_lookup_deferred = TRUE;
-      return DEFER;
+      yield = DEFER;
+      goto out;
       }
     }
 
@@ -1707,7 +1706,8 @@ while ((ordername = string_nextinlist(&list, &sep, NULL, 0)))
     if (rc == DEFER)
       {
       host_lookup_deferred = TRUE;
-      return rc;                       /* Can't carry on */
+      yield = rc;                       /* Can't carry on */
+      goto out;
       }
     if (rc == OK) break;               /* Found a name */
     }
@@ -1723,7 +1723,8 @@ if (!sender_host_name)
       "address %s", sender_host_address);
   host_lookup_msg = US" (failed to find host name from IP address)";
   host_lookup_failed = TRUE;
-  return FAIL;
+  yield = FAIL;
+  goto out;
   }
 
 HDEBUG(D_host_lookup)
@@ -1788,7 +1789,8 @@ for (uschar * hname = sender_host_name; hname; hname = *aliases++)
     HDEBUG(D_host_lookup) debug_printf("temporary error for host name lookup\n");
     host_lookup_deferred = TRUE;
     sender_host_name = NULL;
-    return DEFER;
+    yield = DEFER;
+    goto out;
     }
   else
     HDEBUG(D_host_lookup) debug_printf("no IP addresses found for %s\n", hname);
@@ -1810,12 +1812,12 @@ for (uschar * hname = sender_host_name; hname; hname = *aliases++)
 /* If sender_host_name == NULL, it means we didn't like the name. Replace
 it with the first alias, if there is one. */
 
-if (sender_host_name == NULL && *sender_host_aliases != NULL)
+if (!sender_host_name && *sender_host_aliases)
   sender_host_name = *sender_host_aliases++;
 
 /* If we now have a main name, all is well. */
 
-if (sender_host_name != NULL) return OK;
+if (sender_host_name) { yield = OK; goto out; }
 
 /* We have failed to find an address that matches. */
 
@@ -1831,7 +1833,11 @@ host_lookup_msg = string_sprintf(" (%s does not match any IP address for %s)",
   sender_host_address, save_hostname);
 store_pool = old_pool;
 host_lookup_failed = TRUE;
-return FAIL;
+yield = FAIL;
+
+out:
+  expand_level--;
+  return yield;
 }
 
 
@@ -2198,7 +2204,7 @@ set_address_from_dns(host_item *host, host_item **lastptr,
   const uschar **fully_qualified_name,
   BOOL dnssec_request, BOOL dnssec_require, int whichrrs)
 {
-host_item *thishostlast = NULL;    /* Indicates not yet filled in anything */
+host_item * thishostlast = NULL;    /* Indicates not yet filled in anything */
 BOOL v6_find_again = FALSE;
 BOOL dnssec_fail = FALSE;
 int i;
@@ -2217,12 +2223,12 @@ those sites that feel they have to flaunt the RFC rules. */
 
 if (allow_ip && string_is_ip_address(host->name, NULL) != 0)
   {
-  #ifndef STAND_ALONE
+#ifndef STAND_ALONE
   if (  ignore_target_hosts
      && verify_check_this_host(&ignore_target_hosts, NULL, host->name,
         host->name, NULL) == OK)
     return HOST_IGNORED;
-  #endif
+#endif
 
   host->address = host->name;
   return HOST_FOUND;
@@ -2236,7 +2242,7 @@ testing, we force an IPv4 lookup if the domain matches dns_ipv4_lookup global.
 On an IPv4 system, go round the loop once only, looking only for A records. */
 
 #if HAVE_IPV6
-  #ifndef STAND_ALONE
+ifndef STAND_ALONE
     if (  disable_ipv6
        || !(whichrrs & HOST_FIND_BY_AAAA)
        ||    dns_ipv4_lookup
@@ -2245,7 +2251,7 @@ On an IPv4 system, go round the loop once only, looking only for A records. */
        )
       i = 0;    /* look up A records only */
     else
-  #endif        /* STAND_ALONE */
+endif        /* STAND_ALONE */
 
   i = 1;        /* look up AAAA and A records */
 
@@ -2493,31 +2499,46 @@ Returns:                HOST_FIND_FAILED  Failed to find the host or domain;
 */
 
 int
-host_find_bydns(host_item *host, const uschar *ignore_target_hosts, int whichrrs,
-  uschar *srv_service, uschar *srv_fail_domains, uschar *mx_fail_domains,
-  const dnssec_domains *dnssec_d,
-  const uschar **fully_qualified_name, BOOL *removed)
+host_find_bydns(host_item * host, const uschar * ignore_target_hosts,
+  int whichrrs,
+  uschar * srv_service, uschar * srv_fail_domains, uschar * mx_fail_domains,
+  const dnssec_domains * dnssec_d,
+  const uschar ** fully_qualified_name, BOOL * removed)
 {
-host_item *h, *last;
-int rc = DNS_FAIL;
-int ind_type = 0;
-int yield;
+host_item * h, * last;
+int rc = DNS_FAIL, ind_type = 0, yield;
 dns_answer * dnsa = store_get_dns_answer();
 dns_scan dnss;
-BOOL dnssec_require = dnssec_d
+BOOL dnssec_require, dnssec_request;
+dnssec_status_t dnssec;
+
+HDEBUG(D_host_lookup)
+  {
+  debug_printf_indent("check dnssec require list\n");
+  expand_level++;
+  }
+dnssec_require = dnssec_d
   && match_isinlist(host->name, CUSS &dnssec_d->require,
                  0, &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL) == OK;
-BOOL dnssec_request = dnssec_require
+
+HDEBUG(D_host_lookup)
+  {
+  expand_level--;
+  debug_printf_indent("check dnssec request list\n");
+  expand_level++;
+  }
+dnssec_request = dnssec_require
     || (  dnssec_d
        && match_isinlist(host->name, CUSS &dnssec_d->request,
                    0, &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL) == OK);
-dnssec_status_t dnssec;
+HDEBUG(D_host_lookup)
+  expand_level--;
 
 /* Set the default fully qualified name to the incoming name, initialize the
 resolver if necessary, set up the relevant options, and initialize the flag
 that gets set for DNS syntax check errors. */
 
-if (fully_qualified_name != NULL) *fully_qualified_name = host->name;
+if (fully_qualified_name) *fully_qualified_name = host->name;
 dns_init((whichrrs & HOST_FIND_QUALIFY_SINGLE) != 0,
          (whichrrs & HOST_FIND_SEARCH_PARENTS) != 0,
         dnssec_request);
@@ -2529,13 +2550,12 @@ characters, so the code below should be safe. */
 
 if (whichrrs & HOST_FIND_BY_SRV)
   {
-  gstring * g;
-  uschar * temp_fully_qualified_name;
+  uschar * s, * temp_fully_qualified_name;
   int prefix_length;
 
-  g = string_fmt_append(NULL, "_%s._tcp.%n%.256s",
+  s = string_sprintf("_%s._tcp.%n%.256s",
        srv_service, &prefix_length, host->name);
-  temp_fully_qualified_name = string_from_gstring(g);
+  temp_fully_qualified_name = s;
   ind_type = T_SRV;
 
   /* Search for SRV records. If the fully qualified name is different to
@@ -2551,7 +2571,7 @@ if (whichrrs & HOST_FIND_BY_SRV)
     if ((dnssec_request || dnssec_require)
        && !dns_is_secure(dnsa)
        && dns_is_aa(dnsa))
-      debug_printf("DNS lookup of %.256s (SRV) requested AD, but got AA\n", host->name);
+      debug_printf_indent("DNS lookup of %.256s (SRV) requested AD, but got AA\n", host->name);
 
   if (dnssec_request)
     {
@@ -2561,7 +2581,7 @@ if (whichrrs & HOST_FIND_BY_SRV)
       { dnssec = DS_NO; lookup_dnssec_authenticated = US"no"; }
     }
 
-  if (temp_fully_qualified_name != g->s && fully_qualified_name != NULL)
+  if (temp_fully_qualified_name != s && fully_qualified_name)
     *fully_qualified_name = temp_fully_qualified_name + prefix_length;
 
   /* On DNS failures, we give the "try again" error unless the domain is
@@ -2580,7 +2600,7 @@ if (whichrrs & HOST_FIND_BY_SRV)
        &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL) != OK)
 #endif
       { yield = HOST_FIND_AGAIN; goto out; }
-    DEBUG(D_host_lookup) debug_printf("DNS_%s treated as DNS_NODATA "
+    DEBUG(D_host_lookup) debug_printf_indent("DNS_%s treated as DNS_NODATA "
       "(domain in srv_fail_domains)\n", rc == DNS_FAIL ? "FAIL":"AGAIN");
     }
   }
@@ -2603,12 +2623,13 @@ if (rc != DNS_SUCCEED  &&  whichrrs & HOST_FIND_BY_MX)
     if (  (dnssec_request || dnssec_require)
        && !dns_is_secure(dnsa)
        && dns_is_aa(dnsa))
-      debug_printf("DNS lookup of %.256s (MX) requested AD, but got AA\n", host->name);
+      debug_printf_indent("DNS lookup of %.256s (MX) requested AD, but got AA\n", host->name);
 
   if (dnssec_request)
     if (dns_is_secure(dnsa))
       {
-      DEBUG(D_host_lookup) debug_printf("%s (MX resp) DNSSEC\n", host->name);
+      DEBUG(D_host_lookup)
+       debug_printf_indent("%s (MX resp) DNSSEC\n", host->name);
       dnssec = DS_YES; lookup_dnssec_authenticated = US"yes";
       }
     else
@@ -2619,13 +2640,14 @@ if (rc != DNS_SUCCEED  &&  whichrrs & HOST_FIND_BY_MX)
   switch (rc)
     {
     case DNS_NOMATCH:
-      yield = HOST_FIND_FAILED; goto out;
+      yield = HOST_FIND_FAILED;
+      goto out;
 
     case DNS_SUCCEED:
       if (!dnssec_require || dns_is_secure(dnsa))
        break;
       DEBUG(D_host_lookup)
-       debug_printf("dnssec fail on MX for %.256s", host->name);
+       debug_printf_indent("dnssec fail on MX for %.256s\n", host->name);
 #ifndef STAND_ALONE
       if (match_isinlist(host->name, CUSS &mx_fail_domains, 0,
          &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL) != OK)
@@ -2641,7 +2663,7 @@ if (rc != DNS_SUCCEED  &&  whichrrs & HOST_FIND_BY_MX)
          &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL) != OK)
 #endif
        { yield = HOST_FIND_AGAIN; goto out; }
-      DEBUG(D_host_lookup) debug_printf("DNS_%s treated as DNS_NODATA "
+      DEBUG(D_host_lookup) debug_printf_indent("DNS_%s treated as DNS_NODATA "
        "(domain in mx_fail_domains)\n", (rc == DNS_FAIL)? "FAIL":"AGAIN");
       break;
     }
@@ -2655,7 +2677,7 @@ if (rc != DNS_SUCCEED)
   {
   if (!(whichrrs & (HOST_FIND_BY_A | HOST_FIND_BY_AAAA)))
     {
-    DEBUG(D_host_lookup) debug_printf("Address records are not being sought\n");
+    DEBUG(D_host_lookup) debug_printf_indent("Address records are not being sought\n");
     yield = HOST_FIND_FAILED;
     goto out;
     }
@@ -2676,16 +2698,16 @@ if (rc != DNS_SUCCEED)
 
   if (rc == HOST_FOUND)
     rc = host_scan_for_local_hosts(host, &last, removed);
-  else
-    if (rc == HOST_IGNORED) rc = HOST_FIND_FAILED;  /* No special action */
+  else if (rc == HOST_IGNORED)
+    rc = HOST_FIND_FAILED;                     /* No special action */
 
   DEBUG(D_host_lookup)
     if (host->address)
       {
       if (fully_qualified_name)
-        debug_printf("fully qualified name = %s\n", *fully_qualified_name);
+        debug_printf_indent("fully qualified name = %s\n", *fully_qualified_name);
       for (host_item * h = host; h != last->next; h = h->next)
-        debug_printf("%s %s mx=%d sort=%d %s\n", h->name,
+        debug_printf_indent("%s %s mx=%d sort=%d %s\n", h->name,
           h->address ? h->address : US"<null>", h->mx, h->sort_key,
           h->status >= hstatus_unusable ? US"*" : US"");
       }
@@ -2762,7 +2784,7 @@ for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_ANSWERS);
       if (strcmpic(h->name, data) == 0)
         {
         DEBUG(D_host_lookup)
-          debug_printf("discarded duplicate host %s (MX=%d)\n", data,
+          debug_printf_indent("discarded duplicate host %s (MX=%d)\n", data,
             precedence > h->mx ? precedence : h->mx);
         if (precedence >= h->mx) goto NEXT_MX_RR; /* Skip greater precedence */
         if (h == host)                            /* Override first item */
@@ -2872,16 +2894,16 @@ if (ind_type == T_SRV)
 
   if (host == last && host->name[0] == 0)
     {
-    DEBUG(D_host_lookup) debug_printf("the single SRV record is \".\"\n");
+    DEBUG(D_host_lookup) debug_printf_indent("the single SRV record is \".\"\n");
     yield = HOST_FIND_FAILED;
     goto out;
     }
 
   DEBUG(D_host_lookup)
     {
-    debug_printf("original ordering of hosts from SRV records:\n");
+    debug_printf_indent("original ordering of hosts from SRV records:\n");
     for (h = host; h != last->next; h = h->next)
-      debug_printf("  %s P=%d W=%d\n", h->name, h->mx, h->sort_key % 1000);
+      debug_printf_indent("  %s P=%d W=%d\n", h->name, h->mx, h->sort_key % 1000);
     }
 
   for (pptr = &host, h = host; h != last; pptr = &h->next, h = h->next)
@@ -3074,7 +3096,7 @@ if (h != last && !disable_ipv6) for (h = host; h != last; h = h->next)
   h->next = next;
   *next = temp;
   }
-#endif
+#endif /*HAVE_IPV6*/
 
 /* Remove any duplicate IP addresses and then scan the list of hosts for any
 whose IP addresses are on the local host. If any are found, all hosts with the
@@ -3092,8 +3114,8 @@ if (rc != HOST_FIND_FAILED) yield = rc;
 DEBUG(D_host_lookup)
   {
   if (fully_qualified_name)
-    debug_printf("fully qualified name = %s\n", *fully_qualified_name);
-  debug_printf("host_find_bydns yield = %s (%d); returned hosts:\n",
+    debug_printf_indent("fully qualified name = %s\n", *fully_qualified_name);
+  debug_printf_indent("host_find_bydns yield = %s (%d); returned hosts:\n",
     yield == HOST_FOUND                ? "HOST_FOUND" :
     yield == HOST_FOUND_LOCAL  ? "HOST_FOUND_LOCAL" :
     yield == HOST_FIND_SECURITY        ? "HOST_FIND_SECURITY" :
@@ -3102,7 +3124,7 @@ DEBUG(D_host_lookup)
     yield);
   for (h = host; h != last->next; h = h->next)
     {
-    debug_printf("  %s %s MX=%d %s", h->name,
+    debug_printf_indent("  %s %s MX=%d %s", h->name,
       !h->address ? US"<null>" : h->address, h->mx,
       h->dnssec == DS_YES ? US"DNSSEC " : US"");
     if (h->port != PORT_NONE) debug_printf("port=%d ", h->port);
index ed9f26d625545458bf9c4e28d7c2229a556f2d44..11f271d1bfff15100577f412265753c792362b73 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 1a77f2cdbb5d7081f5bd1ba619426535518d84b4..f12721cf5da3f6563abb03761b756197ee0797f3 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1464,7 +1464,7 @@ if (Ustrcmp(which, "debug") == 0)
     return;
     }
   fprintf(stderr, "exim: %s\n", errmsg);
-  exit(EXIT_FAILURE);
+  exim_exit(EXIT_FAILURE);
   }
 else log_write(0, LOG_CONFIG|LOG_PANIC_DIE, "%s", errmsg);
 }
index 96665b6e4e68d7204b29db0e1fb16409a1b8623a..d68110b126dd21cb4b835aa119113bcc319e43e2 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -49,7 +49,7 @@ dbmdb_check(void *handle, const uschar *filename, int modemask, uid_t *owners,
 {
 int rc;
 
-#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM)
+#if defined(USE_DB) || defined(USE_TDB) || defined(USE_GDBM) || defined(USE_SQLITE)
 rc = lf_check_file(-1, filename, S_IFREG, modemask, owners, owngroups,
   "dbm", errmsg);
 #else
index af1ad9dab5ee2604a9fe756dae2f021b179fb020..5d441de431fef2cde96de4062838ef8922d23785 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 74439bfc874aaf86945822145ce188058563fbdc..1229368baea66a4fe0a1d61fb8ae873553ac2cc7 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -70,6 +70,7 @@ return FALSE;
 #define FILTER_FILE    BIT(2)
 #define FILTER_DIR     BIT(3)
 #define FILTER_SUBDIR  BIT(4)
+#define ALLOW_PATH     BIT(5)
 
 /* See local README for interface description. We use lstat() instead of
 scanning the directory, as it is hopefully faster to let the OS do the scanning
@@ -85,13 +86,6 @@ int save_errno;
 uschar * filename;
 unsigned flags = 0;
 
-if (Ustrchr(keystring, '/') != 0)
-  {
-  *errmsg = string_sprintf("key for dsearch lookup contains a slash: %s",
-    keystring);
-  return DEFER;
-  }
-
 if (opts)
   {
   int sep = ',';
@@ -110,6 +104,24 @@ if (opts)
       else if (Ustrcmp(ele, "subdir") == 0)
        flags |= FILTER_TYPE | FILTER_SUBDIR;   /* like dir but not "." or ".." */
       }
+    else if (Ustrcmp(ele, "key=path") == 0)
+      flags |= ALLOW_PATH;
+  }
+
+if (flags & ALLOW_PATH)
+  {
+  if (Ustrstr(keystring, "/../") != NULL || Ustrstr(keystring, "/./"))
+    {
+    *errmsg = string_sprintf(
+      "key for dsearch lookup contains bad component: %s", keystring);
+    return DEFER;
+    }
+  }
+else if (Ustrchr(keystring, '/') != NULL)
+  {
+  *errmsg = string_sprintf("key for dsearch lookup contains a slash: %s",
+    keystring);
+  return DEFER;
   }
 
 filename = string_sprintf("%s/%s", dirname, keystring);
@@ -120,7 +132,7 @@ if (  Ulstat(filename, &statbuf) >= 0
                 && S_ISDIR(statbuf.st_mode)
         && (  flags & FILTER_DIR
            || keystring[0] != '.'
-           || keystring[1] && keystring[1] != '.'
+           || keystring[1] && (keystring[1] != '.' || keystring[2])
    )  )  )  )
   {
   /* Since the filename exists in the filesystem, we can return a
@@ -189,3 +201,5 @@ static lookup_info *_lookup_list[] = { &_lookup_info };
 lookup_module_info dsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 };
 
 /* End of lookups/dsearch.c */
+/* vi: aw ai sw=2
+*/
index 90cde6c86292863be20cc363142d7b1ea64a8309..0c29b6c9a737a791e3decb230ba05d5a01b31396 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 7b78de916971b74dd357ff9e10376e233cc113cf..6728fecc71205fdd912ec17c8ba9e34c7532bae6 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index c25b7c0ee639384ff14e7ffda907285bee720f0d..9eb936b25da466350210a72eea713af62387538f 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 53b479142668ebceec2497cc7726e6c4f6c275f3..a97496ba66db937100d41fb77eb3fe1333b9e9e8 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 6c7af4225eac0bd71c0209dc438ee2140166fd5c..9f6c9e5aa1ae5fd07eafd89f0a00e4d132de095b 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -34,7 +34,7 @@ if (!filename || *filename != '/')
   *errmsg = US"absolute file name expected for \"sqlite\" lookup";
 else if ((ret = sqlite3_open(CCS filename, &db)) != 0)
   {
-  *errmsg = (void *)sqlite3_errmsg(db);
+  *errmsg = string_copy(US sqlite3_errmsg(db));
   sqlite3_close(db);
   db = NULL;
   DEBUG(D_lookup) debug_printf_indent("Error opening database: %s\n", *errmsg);
index 9b354d345f57e34d81654548775f5775407d3b01..29ecfdcc8de24520bca59b138dc64c513117c90d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) Jeremy Harris 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -214,10 +214,25 @@ due to conflicts with other common macros. */
 #ifndef DISABLE_TLS_RESUME
   builtin_macro_create(US"_HAVE_TLS_RESUME");
 #endif
+#ifndef DISABLE_WELLKNOWN
+  builtin_macro_create(US"_HAVE_WELLKNOWN");
+#endif
 #ifdef EXPERIMENTAL_XCLIENT
   builtin_macro_create(US"_HAVE_XCLIENT");
 #endif
 
+#ifdef USE_SQLITE
+  builtin_macro_create(US"_HAVE_HINTS_SQLITE");
+#elif defined(USE_TDB)
+  builtin_macro_create(US"_HAVE_HINTS_TDB");
+#elif defined(USE_DB)
+  builtin_macro_create(US"_HAVE_HINTS_BDB");
+#elif defined(USE_GDBM)
+  builtin_macro_create(US"_HAVE_HINTS_GDBM");
+#else
+  builtin_macro_create(US"_HAVE_HINTS_NDBM");
+#endif
+
 #ifdef LOOKUP_LSEARCH
   builtin_macro_create(US"_HAVE_LOOKUP_LSEARCH");
 #endif
index 3341f5f412c52b332e5aacb527dc3e4d3963c7c9..1a619b951eff4c8e72b648fcca52d8a1224f97cd 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -828,6 +828,9 @@ enum { SCH_NONE, SCH_AUTH, SCH_DATA, SCH_BDAT,
        SCH_EHLO, SCH_ETRN, SCH_EXPN, SCH_HELO,
        SCH_HELP, SCH_MAIL, SCH_NOOP, SCH_QUIT, SCH_RCPT, SCH_RSET, SCH_STARTTLS,
        SCH_VRFY,
+#ifndef DISABLE_WELLKNOWN
+       SCH_WELLKNOWN,
+#endif
 #ifdef EXPERIMENTAL_XCLIENT
        SCH_XCLIENT,
 #endif
@@ -972,6 +975,9 @@ enum { ACL_WHERE_RCPT,       /* Some controls are for RCPT only */
        ACL_WHERE_NOTQUIT,
        ACL_WHERE_QUIT,
        ACL_WHERE_STARTTLS,
+#ifndef DISABLE_WELLKNOWN
+       ACL_WHERE_WELLKNOWN,
+#endif
        ACL_WHERE_VRFY,
 
        ACL_WHERE_DELIVERY,
@@ -1001,6 +1007,9 @@ enum { ACL_WHERE_RCPT,       /* Some controls are for RCPT only */
 #define ACL_BIT_QUIT           BIT(ACL_WHERE_QUIT)
 #define ACL_BIT_STARTTLS       BIT(ACL_WHERE_STARTTLS)
 #define ACL_BIT_VRFY           BIT(ACL_WHERE_VRFY)
+#ifndef DISABLE_WELLKNOWN
+# define ACL_BIT_WELLKNOWN     BIT(ACL_WHERE_WELLKNOWN)
+#endif
 #define ACL_BIT_DELIVERY       BIT(ACL_WHERE_DELIVERY)
 #define ACL_BIT_UNKNOWN                BIT(ACL_WHERE_UNKNOWN)
 
@@ -1195,8 +1204,11 @@ When doing en extended loop of matching, release store periodically. */
 
 #define        REGEX_LOOPCOUNT_STORE_RESET     1000
 
-/* Debug an option access. Use for non-list ones about to be expanded. */
+/* Debug an option access. Use for non-list ones about to be expanded
+(lists have their own debugging, under D_list). */
 #define GET_OPTION(name) \
   DEBUG(D_expand) debug_printf("try option " name "\n");
 
 /* End of macros.h */
+/* vi: aw ai sw=2
+*/
index 760278079c71342e5ef8efe4d8981ab17baa5389..408e2299bece65e21c02d73dce12ac45bb290274 100644 (file)
@@ -3,7 +3,7 @@
 *************************************************/
 
 /*
- * Copyright (c) The Exim Maintainers 2015 - 2023
+ * Copyright (c) The Exim Maintainers 2015 - 2024
  * Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003 - 2015
  * License: GPL
  * SPDX-License-Identifier: GPL-2.0-or-later
index 2cb4993599188aa1a5349199e2bae27218d534e4..4f4f2c777bb940c0eeb052645be53c97d233953d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -194,27 +194,23 @@ if (cb->flags & MCS_AT_SPECIAL && pattern[0] == '@')
     {
     int rc;
     host_item h;
-    BOOL prim = FALSE;
-    BOOL secy = FALSE;
-    BOOL removed = FALSE;
+    BOOL prim = FALSE, secy = FALSE, removed = FALSE;
     const uschar *ss = pattern + 4;
     const uschar *ignore_target_hosts = NULL;
 
-    if (strncmpic(ss, US"any", 3) == 0) ss += 3;
+    if (strncmpic(ss, US"any", 3) == 0)
+      ss += 3;
     else if (strncmpic(ss, US"primary", 7) == 0)
-      {
-      ss += 7;
-      prim = TRUE;
-      }
+      { ss += 7; prim = TRUE; }
     else if (strncmpic(ss, US"secondary", 9) == 0)
-      {
-      ss += 9;
-      secy = TRUE;
-      }
-    else goto NOT_AT_SPECIAL;
+      { ss += 9; secy = TRUE; }
+    else
+      goto NOT_AT_SPECIAL;
 
-    if (strncmpic(ss, US"/ignore=", 8) == 0) ignore_target_hosts = ss + 8;
-    else if (*ss) goto NOT_AT_SPECIAL;
+    if (strncmpic(ss, US"/ignore=", 8) == 0)
+      ignore_target_hosts = ss + 8;
+    else if (*ss)
+      goto NOT_AT_SPECIAL;
 
     h.next = NULL;
     h.name = s;
@@ -431,24 +427,24 @@ unsigned int * original_cache_bits = *cache_ptr;
 BOOL include_unknown = FALSE, ignore_unknown = FALSE,
       include_defer = FALSE, ignore_defer = FALSE;
 const uschar * list;
-uschar * sss;
-uschar * ot = NULL;
+uschar * ot = NULL, * sss;
 BOOL textonly_re;
 
 /* Save time by not scanning for the option name when we don't need it. */
 
 HDEBUG(D_any)
   {
-  uschar * listname = readconf_find_option(listptr);
+  const uschar * listname = readconf_find_option(listptr);
   if (*listname) ot = string_sprintf("%s in %s?", name, listname);
   }
 
-/* If the list is empty, the answer is no. Skip the debugging output for
-an unnamed list. */
+/* If the list is empty, the answer is no. */
 
 if (!*listptr)
   {
-  HDEBUG(D_lists) if (ot) debug_printf_indent("%s no (option unset)\n", ot);
+  HDEBUG(D_lists)
+    if (ot) debug_printf_indent("%s no (option unset)\n", ot);
+    else    debug_printf_indent("%s not in empty list (option unset? cannot trace name)\n", name);
   return FAIL;
   }
 
@@ -505,7 +501,7 @@ if (textonly_re) switch (type)
 #define LIST_LIMIT_PR 2048
 
 HDEBUG(D_any) if (!ot)
-  {
+  {    /* We failed to identify an option name, so give the list text */
   int n, m;
   gstring * g = string_fmt_append(NULL, "%s in \"%n%.*s%n\"",
     name, &n, LIST_LIMIT_PR, list, &m);
@@ -527,7 +523,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
   {
   uschar * ss = sss;
 
-  HDEBUG(D_lists) debug_printf_indent("list element: %s\n", ss);
+  HDEBUG(D_lists) debug_printf_indent("list element: %W\n", ss);
 
   /* Address lists may contain +caseful, to restore caseful matching of the
   local part. We have to know the layout of the control block, unfortunately.
@@ -618,7 +614,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
       namedlist_block * nb;
       tree_node * t;
 
-      DEBUG(D_lists)
+      HDEBUG(D_lists)
        { debug_printf_indent(" start sublist %s\n", ss+1); expand_level += 2; }
 
       if (!(t = tree_search(*anchorptr, ss+1)))
@@ -655,7 +651,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
         {
         int res = match_check_list(&(nb->string), 0, anchorptr, &use_cache_bits,
                 func, arg, type, name, valueptr);
-       DEBUG(D_lists)
+       HDEBUG(D_lists)
          { expand_level -= 2; debug_printf_indent(" end sublist %s\n", ss+1); }
 
         switch (res)
@@ -695,7 +691,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
             p->next = nb->cache_data;
             nb->cache_data = p;
             if (*valueptr)
-              DEBUG(D_lists) debug_printf_indent("data from lookup saved for "
+              HDEBUG(D_lists) debug_printf_indent("data from lookup saved for "
                 "cache for %s: key '%s' value '%s'\n", ss, p->key, *valueptr);
             }
           }
@@ -707,7 +703,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
 
       else
         {
-        DEBUG(D_lists)
+        HDEBUG(D_lists)
          {
          expand_level -= 2;
          debug_printf_indent("cached %s match for %s\n",
@@ -725,7 +721,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
               *valueptr = p->data;
               break;
               }
-          DEBUG(D_lists) debug_printf_indent("cached lookup data = %s\n", *valueptr);
+          HDEBUG(D_lists) debug_printf_indent("cached lookup data = %s\n", *valueptr);
           }
         }
 
@@ -749,7 +745,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
         {
         case OK:
          HDEBUG(D_lists) debug_printf_indent("%s %s (matched \"%s\")\n", ot,
-           (yield == OK)? "yes" : "no", sss);
+           yield == OK ? "yes" : "no", sss);
          goto YIELD_RETURN;
 
         case DEFER:
@@ -757,8 +753,8 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
            error = string_sprintf("DNS lookup of \"%s\" deferred", ss);
          if (ignore_defer)
            {
-           HDEBUG(D_lists) debug_printf_indent("%s: item ignored by +ignore_defer\n",
-             error);
+           HDEBUG(D_lists)
+             debug_printf_indent("%s: item ignored by +ignore_defer\n", error);
            break;
            }
          if (include_defer)
@@ -777,8 +773,8 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
         case ERROR:
          if (ignore_unknown)
            {
-           HDEBUG(D_lists) debug_printf_indent("%s: item ignored by +ignore_unknown\n",
-             error);
+           HDEBUG(D_lists) debug_printf_indent(
+             "%s: item ignored by +ignore_unknown\n", error);
            }
          else
            {
@@ -812,8 +808,8 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
 
     if (!f)
       {
-      uschar * listname = readconf_find_option(listptr);
-      if (listname[0] == 0)
+      const uschar * listname = readconf_find_option(listptr);
+      if (!*listname)
         listname = string_sprintf("\"%s\"", *listptr);
       log_write(0, LOG_MAIN|LOG_PANIC_DIE, "%s",
         string_open_failed("%s when checking %s", sss, listname));
@@ -859,8 +855,8 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
         {
         case OK:
          (void)fclose(f);
-         HDEBUG(D_lists) debug_printf_indent("%s %s (matched \"%s\" in %s)\n", ot,
-           yield == OK ? "yes" : "no", sss, filename);
+         HDEBUG(D_lists) debug_printf_indent("%s %s (matched \"%s\" in %s)\n",
+           ot, yield == OK ? "yes" : "no", sss, filename);
 
          /* The "pattern" being matched came from the file; we use a stack-local.
          Copy it to allocated memory now we know it matched. */
@@ -874,8 +870,8 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
            error = string_sprintf("DNS lookup of %s deferred", ss);
          if (ignore_defer)
            {
-           HDEBUG(D_lists) debug_printf_indent("%s: item ignored by +ignore_defer\n",
-             error);
+           HDEBUG(D_lists)
+             debug_printf_indent("%s: item ignored by +ignore_defer\n", error);
            break;
            }
          (void)fclose(f);
@@ -892,13 +888,13 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
         case ERROR:
          if (ignore_unknown)
            {
-           HDEBUG(D_lists) debug_printf_indent("%s: item ignored by +ignore_unknown\n",
-             error);
+           HDEBUG(D_lists) debug_printf_indent(
+             "%s: item ignored by +ignore_unknown\n", error);
            }
          else
            {
            HDEBUG(D_lists) debug_printf_indent("%s %s (%s)\n", ot,
-             include_unknown? "yes":"no", error);
+             include_unknown ? "yes":"no", error);
            (void)fclose(f);
            if (!include_unknown)
              {
@@ -922,20 +918,19 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
 
 /* End of list reached: if the last item was negated yield OK, else FAIL. */
 
-HDEBUG(D_lists)
-  HDEBUG(D_lists)
-    {
-    expand_level--;
-    debug_printf_indent("%s %s (end of list)\n", ot, yield == OK ? "no":"yes");
-    }
-  return yield == OK ? FAIL : OK;
-
+HDEBUG(D_any)
+  {
+  HDEBUG(D_lists) expand_level--;
+  debug_printf_indent("%s %s (end of list)\n", ot, yield == OK ? "no":"yes");
+  }
+return yield == OK ? FAIL : OK;
 /* Something deferred */
 
 DEFER_RETURN:
-  HDEBUG(D_lists)
+  HDEBUG(D_any)
     {
-    expand_level--;
+    HDEBUG(D_lists) expand_level--;
     debug_printf_indent("%s list match deferred for %s\n", ot, sss);
     }
   return DEFER;
@@ -1390,3 +1385,5 @@ return match_address_list(address, TRUE, TRUE, listptr, NULL, -1, sep, NULL);
 }
 
 /* End of match.c */
+/* vi: aw ai sw=2
+*/
index 641540839d866924f49badbd4e59c3dd24c2f980..19d29190bff5222f2664e32136153b21a082db98 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 3b49e4b9e980755b418e45e534f79229b1d9fcbc..dce5fca3df10f61d00949082a8bebd5bc3da23a3 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2023 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -878,9 +878,7 @@ os_getcwd(unsigned char * buffer, size_t size)
 return US  getcwd(CS buffer, size);
 }
 #else
-#ifndef PATH_MAX
-# define PATH_MAX 4096
-#endif
+# include "path_max.h"
 unsigned char *
 os_getcwd(unsigned char * buffer, size_t size)
 {
index 4a75d229e8bd5011f8fe1bd0661da1123eba93ae..e86dc4130007de58402af6dd9780af8f460e21b6 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
diff --git a/src/src/path_max.h b/src/src/path_max.h
new file mode 100644 (file)
index 0000000..d8df2c7
--- /dev/null
@@ -0,0 +1,19 @@
+/*************************************************
+*     Exim - an Internet mail transport agent    *
+*************************************************/
+
+/* Copyright (c) The Exim Maintainers 2024 */
+/* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+/* This was in exim.h - but not all files needing it can include all of that. */
+/* Needed by macros.h */
+/* Some systems have PATH_MAX and some have MAX_PATH_LEN. */
+#ifndef PATH_MAX
+# ifdef MAX_PATH_LEN
+#  define PATH_MAX MAX_PATH_LEN
+# else
+#  define PATH_MAX 4096
+# endif
+#endif
+
index 565ee068eaec42e5458522c407b464a3e47dafea..4fb22a1133557e83c51895ec232f68fb6e9448b6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  PDKIM - a RFC4871 (DKIM) implementation
  *
- *  Copyright (c) The Exim Maintainers 2021 - 2023
+ *  Copyright (c) The Exim Maintainers 2021 - 2024
  *  Copyright (C) 2016 - 2020  Jeremy Harris <jgh@exim.org>
  *  Copyright (C) 2009 - 2016  Tom Kistner <tom@duncanthrax.net>
  *  SPDX-License-Identifier: GPL-2.0-or-later
index e72d4b53edefd8f10f098b3d452db6e36b303a55..b4754c1a1022fdb9bed69b1d8bbb37835af269af 100644 (file)
@@ -308,7 +308,7 @@ makes sure that important subsystems are initialized. */
 if (!gcry_check_version (GCRYPT_VERSION))
   {
   fputs ("libgcrypt version mismatch\n", stderr);
-  exi(2);
+  exim_exit(2);
   }
 
 /* We don't want to see any warnings, e.g. because we have not yet
index e2d3bace0c9621e9a38f62c5fcf04ca9aa15e8e4..46c98c8d006320f9a665ba1c021fea991bec717d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 2c3d014f5638405404e06bacd0f2d7f73fcb4129..a4afdcc98e4db0564055186768f8bc17f2ca0f59 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -394,20 +394,19 @@ f.queue_running = TRUE;
 
 if (!recurse)
   {
-  uschar extras[8];
-  uschar *p = extras;
+  uschar extras[8], * p = extras;
 
   if (q->queue_2stage)         *p++ = 'q';
   if (q->queue_run_first_delivery) *p++ = 'i';
   if (q->queue_run_force)      *p++ = 'f';
   if (q->deliver_force_thaw)   *p++ = 'f';
   if (q->queue_run_local)      *p++ = 'l';
-  *p = 0;
+  *p = '\0';
 
   p = big_buffer;
   p += sprintf(CS p, "pid=%d", (int)queue_run_pid);
 
-  if (extras[0] != 0)
+  if (*extras)
     p += sprintf(CS p, " -q%s", extras);
 
   if (deliver_selectstring)
@@ -444,6 +443,15 @@ if (deliver_selectstring_sender && f.deliver_selectstring_sender_regex)
   selectstring_regex_sender =
     regex_must_compile(deliver_selectstring_sender, MCS_CASELESS, FALSE);
 
+#ifndef DISABLE_TLS
+if (!queue_tls_init)
+  {
+  queue_tls_init = TRUE;
+  /* Preload TLS library info for smtp transports. */
+  tls_client_creds_reload(FALSE);
+  }
+#endif
+
 /* If the spool is split into subdirectories, we want to process it one
 directory at a time, so as to spread out the directory scanning and the
 delivering when there are lots of messages involved, except when
@@ -669,16 +677,6 @@ for (int i = queue_run_in_order ? -1 : 0;
     report_time_since(&timestamp_startup, US"queue msg selected");
 #endif
 
-#ifndef DISABLE_TLS
-    if (!queue_tls_init)
-      {
-      queue_tls_init = TRUE;
-      /* Preload TLS library info for smtp transports.  Once, and only if we
-      have a delivery to do. */
-      tls_client_creds_reload(FALSE);
-      }
-#endif
-
 single_item_retry:
     if ((pid = exim_fork(US"qrun-delivery")) == 0)
       {
@@ -1619,3 +1617,5 @@ else DEBUG(D_queue_run) debug_printf(" socket: %s\n", strerror(errno));
 #endif /*!COMPILE_UTILITY*/
 
 /* End of queue.c */
+/* vi: aw ai sw=2
+*/
index 7d329c5807df8eb0761a07042adcacb20f95673a..776805ca4435dd698fc73c9383fce9790362e9b4 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim maintainers 2020 - 2022 */
+/* Copyright (c) The Exim maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 3db3bdd69b687e759b6c2032c665ac4320bb9429..940c5d4d3734e3dec15d26803c17287384884872 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -66,6 +66,9 @@ static optionlist optionlist_config[] = {
   { "acl_smtp_starttls",        opt_stringptr,   {&acl_smtp_starttls} },
 #endif
   { "acl_smtp_vrfy",            opt_stringptr,   {&acl_smtp_vrfy} },
+#ifndef DISABLE_WELLKNOWN
+  { "acl_smtp_wellknown",       opt_stringptr,   {&acl_smtp_wellknown} },
+#endif
   { "add_environment",          opt_stringptr,   {&add_environment} },
   { "admin_groups",             opt_gidlist,     {&admin_groups} },
   { "allow_domain_literals",    opt_bool,        {&allow_domain_literals} },
@@ -402,6 +405,9 @@ static optionlist optionlist_config[] = {
   { "uucp_from_pattern",        opt_stringptr,   {&uucp_from_pattern} },
   { "uucp_from_sender",         opt_stringptr,   {&uucp_from_sender} },
   { "warn_message_file",        opt_stringptr,   {&warn_message_file} },
+#ifndef DISABLE_WELLKNOWN
+  { "wellknown_advertise_hosts",opt_stringptr,  {&wellknown_advertise_hosts} },
+#endif
   { "write_rejectlog",          opt_bool,        {&write_rejectlog} },
 };
 
@@ -592,46 +598,104 @@ static int syslog_list_size = sizeof(syslog_list)/sizeof(syslog_fac_item);
 pointer variables in the options table or in option tables for various drivers.
 For debugging output, it is useful to be able to find the name of the option
 which is currently being processed. This function finds it, if it exists, by
-searching the table(s).
+searching the table(s) for a value with the given content.
 
 Arguments:   a value that is presumed to be in the table above
 Returns:     the option name, or an empty string
 */
 
-uschar *
-readconf_find_option(void *p)
+const uschar *
+readconf_find_option(void * listptr)
 {
-for (int i = 0; i < nelem(optionlist_config); i++)
-  if (p == optionlist_config[i].v.value) return US optionlist_config[i].name;
+uschar * list = * USS listptr;
+const uschar * name = NULL, * drname = NULL;
+
+for (optionlist * o = optionlist_config;              /* main-config options */
+     o < optionlist_config + optionlist_config_size; o++)
+  if (listptr == o->v.value)
+    return US o->name;
 
 for (router_instance * r = routers; r; r = r->next)
+  if (router_name && Ustrcmp(r->name, router_name) == 0)
   {
-  router_info *ri = r->info;
-  for (int i = 0; i < *ri->options_count; i++)
-    {
-    if ((ri->options[i].type & opt_mask) != opt_stringptr) continue;
-    if (p == CS (r->options_block) + ri->options[i].v.offset)
-      return US ri->options[i].name;
-    }
+  const router_info * ri = r->info;
+
+  /* Check for a listptr match first */
+
+  for (optionlist * o = optionlist_routers;            /* generic options */
+      o < optionlist_routers + optionlist_routers_size; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && listptr == CS r + o->v.offset)
+      return US o->name;
+
+  for (optionlist * o = ri->options;                   /* private options */
+      o < ri->options + *ri->options_count; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && listptr == CS (r->options_block) + o->v.offset)
+      return US o->name;
+
+  /* Check for a list addr match, unless null */
+
+  if (!list) continue;
+
+  for (optionlist * o = optionlist_routers;            /* generic options */
+      o < optionlist_routers + optionlist_routers_size; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && list == * USS(CS r + o->v.offset))
+      if (name) return string_sprintf("DUP: %s %s vs. %s %s",
+       drname, name, r->name, o->name);
+      else { name = US o->name; drname = r->name; }
+
+  for (optionlist * o = ri->options;                   /* private options */
+      o < ri->options + *ri->options_count; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && list == * USS(CS (r->options_block) + o->v.offset))
+      if (name) return string_sprintf("DUP: %s %s vs. %s %s",
+       drname, name, r->name, o->name);
+      else { name = US o->name; drname = r->name; }
   }
 
 for (transport_instance * t = transports; t; t = t->next)
+  if (transport_name && Ustrcmp(t->name, transport_name) == 0)
   {
-  transport_info *ti = t->info;
-  for (int i = 0; i < *ti->options_count; i++)
-    {
-    optionlist * op = &ti->options[i];
-    if ((op->type & opt_mask) != opt_stringptr) continue;
-    if (p == (  op->type & opt_public
-            ? CS t
-            : CS t->options_block
-            )
-            + op->v.offset)
-       return US op->name;
-    }
+  const transport_info * ti = t->info;
+
+  /* Check for a listptr match first */
+
+  for (optionlist * o = optionlist_transports;         /* generic options */
+      o < optionlist_transports + optionlist_transports_size; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && listptr == CS t + o->v.offset)
+      return US o->name;
+
+  for (optionlist * o = ti->options;                   /* private options */
+      o < ti->options + *ti->options_count; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && listptr == CS t->options_block + o->v.offset)
+      return US o->name;
+
+  /* Check for a list addr match, unless null */
+
+  if (!list) continue;
+
+  for (optionlist * o = optionlist_transports;         /* generic options */
+      o < optionlist_transports + optionlist_transports_size; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && list == * USS(CS t + o->v.offset))
+      if (name) return string_sprintf("DUP: %s %s vs. %s %s",
+       drname, name, t->name, o->name);
+      else { name = US o->name; drname = t->name; }
+
+  for (optionlist * o = ti->options;                   /* private options */
+      o < ti->options + *ti->options_count; o++)
+    if (  (o->type & opt_mask) == opt_stringptr
+       && list == * USS(CS t->options_block + o->v.offset))
+      if (name) return string_sprintf("DUP: %s %s vs. %s %s",
+       drname, name, t->name, o->name);
+      else { name = US o->name; drname = t->name; }
   }
 
-return US"";
+return name ? name : US"";
 }
 
 
@@ -3207,7 +3271,7 @@ if (config_file)
     if (os_getcwd(buf, PATH_MAX) == NULL)
       {
       perror("exim: getcwd");
-      exit(EXIT_FAILURE);
+      exim_exit(EXIT_FAILURE);
       }
     g = string_cat(NULL, buf);
 
@@ -3237,7 +3301,7 @@ to a safe place. Later we change to $spool_directory. */
 if (Uchdir("/") < 0)
   {
   perror("exim: chdir `/': ");
-  exit(EXIT_FAILURE);
+  exim_exit(EXIT_FAILURE);
   }
 
 /* Check the status of the file we have opened, if we have retained root
index 285ab8dbd2582a3416f91a8cf0a0337a295b7be4..94e2928b9abf388101c5f8b0293ea4aa3789614c 100644 (file)
@@ -3,7 +3,7 @@
 *************************************************/
 
 /*
- * Copyright (c) The Exim Maintainers 2016 - 2023
+ * Copyright (c) The Exim Maintainers 2016 - 2024
  * Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-2015
  * License: GPL
  * SPDX-License-Identifier: GPL-2.0-or-later
index 6b977dd58ba122d64c5d6dcfb71ffcf890833be3..9dfe1d587778cf86268646cfc4649c6dcb32ade1 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -678,7 +678,13 @@ for (int i = 0; i < 3; i++)
          ? US string_printing(rti->message)
          : US"unknown error";
         message_length = Ustrlen(message);
-        if (message_length > EXIM_DB_RLIMIT) message_length = EXIM_DB_RLIMIT;
+        if (message_length > EXIM_DB_RLIMIT)
+         {
+         DEBUG(D_retry)
+           debug_printf_indent("truncating message from %u to %u bytes\n",
+                               message_length, EXIM_DB_RLIMIT);
+         message_length = EXIM_DB_RLIMIT;
+         }
 
         /* Read a retry record from the database or construct a new one.
         Ignore an old one if it is too old since it was last updated. */
@@ -851,7 +857,7 @@ for (int i = 0; i < 3; i++)
         retry_record->basic_errno = rti->basic_errno;
         retry_record->more_errno = rti->more_errno;
         Ustrncpy(retry_record->text, message, message_length);
-        retry_record->text[message_length] = 0;
+        retry_record->text[message_length] = 0;        /* nul-term string in db */
 
         DEBUG(D_retry)
           {
index ce35c43655dd43fe8ed6f24e4a306d8fade3c12b..dd3b4fa743a13b03664adfa06720de71f6c353f5 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2023 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 1ab25150acece45082d3df6f06564e3a9100c9c6..94178af73bdbee784d411aa5456e7438dd56d442 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index afd43d8664e9bf6c4f68dfd464a217fe39cbd441..f42afd2efb885b4ee42ced44b0b5f12aec26ab58 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1869,7 +1869,7 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr)
 
   if (yield == PASS)
     {
-    if (r->pass_router != NULL) nextr = r->pass_router;
+    if (r->pass_router) nextr = r->pass_router;
     }
   else
     {
@@ -2016,7 +2016,6 @@ if (r->translate_ip_address)
 /* See if this is an unseen routing; first expand the option if necessary.
 DEFER can be given if the expansion fails */
 
-GET_OPTION("unseen");
 yield = exp_bool(addr, US"router", r->name, D_route,
                US"unseen", r->unseen, r->expand_unseen, &unseen);
 if (yield != OK) goto ROUTE_EXIT;
index 9766e5e103140c05ab0b83d47e886ce0c1ea3595..c747a8ba31792c86bdafcec8be4eeedde9813c85 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
@@ -115,8 +115,8 @@ DEBUG(D_route) debug_printf("%s router called for %s\n  domain = %s\n",
 
 /* Set up the errors address, if any. */
 
-rc = rf_get_errors_address(addr, rblock, verify, &errors_to);
-if (rc != OK) return rc;
+if ((rc = rf_get_errors_address(addr, rblock, verify, &errors_to)) != OK)
+  return rc;
 
 /* Set up the additional and removable headers for the address. */
 
@@ -135,9 +135,12 @@ addr->prop.errors_address = errors_to;
 addr->prop.extra_headers = extra_headers;
 addr->prop.remove_headers = remove_headers;
 
-return rf_queue_add(addr, addr_local, addr_remote, rblock, pw)? OK : DEFER;
+return rf_queue_add(addr, addr_local, addr_remote, rblock, pw) ? OK : DEFER;
 }
 
 #endif /*!MACRO_PREDEF*/
 #endif /*ROUTER_ACCEPT*/
+
 /* End of routers/accept.c */
+/* vi: aw ai sw=2
+*/
index 80b12cba20eeb2f6311a54c0e69515e4137e0c67..ef82438183124026d69ef74df0b266308d25687b 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -286,10 +286,15 @@ for (;;)
     if (ob->search_parents) flags |= HOST_FIND_SEARCH_PARENTS;
     }
 
-  rc = host_find_bydns(&h, CUS rblock->ignore_target_hosts, flags,
-    srv_service, ob->srv_fail_domains, ob->mx_fail_domains,
-    &rblock->dnssec,
-    &fully_qualified_name, &removed);
+  DEBUG(D_route) debug_printf_indent("main lookup for domain\n");
+   {
+    expand_level++;
+    rc = host_find_bydns(&h, CUS rblock->ignore_target_hosts, flags,
+      srv_service, ob->srv_fail_domains, ob->mx_fail_domains,
+      &rblock->dnssec,
+      &fully_qualified_name, &removed);
+    expand_level--;
+   }
 
   if (removed) setflag(addr, af_local_host_removed);
 
@@ -362,7 +367,7 @@ for (;;)
   As a common cause of this problem is MX records with IP addresses on the
   RHS, give a special message in this case. */
 
-  if (h.mx >= 0 && h.address == NULL)
+  if (h.mx >= 0 && !h.address)
     {
     setflag(addr, af_pass_message);   /* This is not a security risk */
     if (h.name[0] == 0)
index 16e096b406c5a010663c9f84d1d98a271039df9c..27c7fe6b34dde99993918c414655f369a7cb3b1f 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index b88212e5c557b97e839b79f1062462b070a2e3dd..5078fdc00962cf1820d0eefb74871230cb956b81 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index ffd6eeaca817b9eb5636cc75d19f2b0b8c297b97..d07ea3490f1cf7eb71a547f80a33419b99747317 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 39645cd2306d3759d73b087f3067a84f83cc7515..267a8ec5f2475ac3cbd30c1af2351c9942ac0bed 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 37b5f5e2440929f7147b70c011d8a0cb03911f8e..e1ee8bc334e255f81a089ea1e8121abe9b595d11 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -731,7 +731,7 @@ if (eblock != NULL)
         ob->syntax_errors_text))                 /* Custom message */
     return DEFER;
 
-  if (filtertype != FILTER_FORWARD || generated == NULL)
+  if (filtertype != FILTER_FORWARD || !generated)
     {
     addr->message = US"syntax error in redirection data";
     return DECLINE;
@@ -744,7 +744,7 @@ calling sort_errors_and_headers() in case this router declines - that function
 may modify the errors_address field in the current address, and we don't want
 to do that for a decline. */
 
-if (generated != NULL)
+if (generated)
   {
   if ((xrc = sort_errors_and_headers(rblock, addr, verify, &addr_prop)) != OK)
     return xrc;
index 6ba613215e9026a5a2bf5a5f2b36a76d18458cc2..a3074f807c919071d44ce495227e81706c73cbdf 100644 (file)
@@ -2,6 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2009 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 40d4cde1c69c84635461998ca41c237faa11a2e7..597745f96ed463b241403276fbc86ce60771d523 100644 (file)
@@ -2,6 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 792b9b5f30e8fcdadd23a917ae407f9f1fc3e93b..6f8f7c7c30865c70d1173f5427612b95954fc540 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index d379668655e9a16e44c719e243c6f71eb8b1e590..e6acca1b8e30c1ecffe35586a8f245e6078bed49 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2022 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2009 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -58,7 +58,7 @@ if (!tpname)
   }
 
 expandable = Ustrchr(tpname, '$') != NULL;
-if (*tpptr != NULL && !expandable) return TRUE;
+if (*tpptr && !expandable) return TRUE;
 
 if (expandable)
   {
index d0eb84b3bcc66c617cecd416665e4b1657a347b7..6c28b390eb424d5331d5d2101cc01da9431cefb2 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index f65ab6603a0a9cd08232c3b8cfb3eeca9cb856c9..c52d3f4d64da3ee3679d53182783bff8bc284452 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -86,6 +86,9 @@ enum {
   /* These commands need not be synchronized when pipelining */
 
   MAIL_CMD, RCPT_CMD, RSET_CMD,
+#ifndef DISABLE_WELLKNOWN
+  WELLKNOWN_CMD,
+#endif
 
   /* This is a dummy to identify the non-sync commands when not pipelining */
 
@@ -121,7 +124,8 @@ enum {
   /* These are specials that don't correspond to actual commands */
 
   EOF_CMD, OTHER_CMD, BADARG_CMD, BADCHAR_CMD, BADSYN_CMD,
-  TOO_MANY_NONMAIL_CMD };
+  TOO_MANY_NONMAIL_CMD
+};
 
 
 /* This is a convenience macro for adding the identity of an SMTP command
@@ -230,7 +234,10 @@ static smtp_cmd_list cmd_list[] = {
   { "etrn",       sizeof("etrn")-1,       ETRN_CMD, TRUE,  FALSE },
   { "vrfy",       sizeof("vrfy")-1,       VRFY_CMD, TRUE,  FALSE },
   { "expn",       sizeof("expn")-1,       EXPN_CMD, TRUE,  FALSE },
-  { "help",       sizeof("help")-1,       HELP_CMD, TRUE,  FALSE }
+  { "help",       sizeof("help")-1,       HELP_CMD, TRUE,  FALSE },
+#ifndef DISABLE_WELLKNOWN
+  { "wellknown",  sizeof("wellknown")-1,  WELLKNOWN_CMD, TRUE,  FALSE },
+#endif
 };
 
 /* This list of names is used for performing the smtp_no_mail logging action. */
@@ -253,6 +260,9 @@ uschar * smtp_names[] =
   [SCH_RSET] = US"RSET",
   [SCH_STARTTLS] = US"STARTTLS",
   [SCH_VRFY] = US"VRFY",
+#ifndef DISABLE_WELLKNOWN
+  [SCH_WELLKNOWN] = US"WELLKNOWN",
+#endif
 #ifdef EXPERIMENTAL_XCLIENT
   [SCH_XCLIENT] = US"XCLIENT",
 #endif
@@ -1946,7 +1956,7 @@ while (done <= 0)
     case HELP_CMD:
     case NOOP_CMD:
     case ETRN_CMD:
-#ifdef EXPERIMENTAL_WELLKNOWN
+#ifndef DISABLE_WELLKNOWN
     case WELLKNOWN_CMD:
 #endif
       bsmtp_transaction_linecount = receive_linecount;
@@ -2057,9 +2067,12 @@ log_connect_tls_drop(const uschar * what, const uschar * log_msg)
 {
 if (log_reject_target)
   {
+#ifdef DISABLE_TLS
+  uschar * tls = NULL;
+#else
   gstring * g = s_tlslog(NULL);
   uschar * tls = string_from_gstring(g);
-
+#endif
   log_write(L_connection_reject,
     log_reject_target, "%s%s%s dropped by %s%s%s",
     LOGGING(dnssec) && sender_host_dnssec ? US" DS" : US"",
@@ -2832,10 +2845,8 @@ if (fl.rcpt_in_progress)
 We only handle pipelining these responses as far as nonfinal/final groups,
 not the whole MAIL/RCPT/DATA response set. */
 
-for (;;)
-  {
-  uschar *nl = Ustrchr(msg, '\n');
-  if (!nl)
+for (uschar * nl;;)
+  if (!(nl = Ustrchr(msg, '\n')))
     {
     smtp_printf("%.3s%c%.*s%s\r\n", !final, code, final ? ' ':'-', esclen, esc, msg);
     return;
@@ -2852,7 +2863,6 @@ for (;;)
     msg = nl + 1;
     Uskip_whitespace(&msg);
     }
-  }
 }
 
 
@@ -2971,7 +2981,8 @@ smtp_code = rc == FAIL ? acl_wherecodes[where] : US"451";
 smtp_message_code(&smtp_code, &codelen, &user_msg, &log_msg,
   where != ACL_WHERE_VRFY);
 
-/* We used to have sender_address here; however, there was a bug that was not
+/* Get info for logging.
+We used to have sender_address here; however, there was a bug that was not
 updating sender_address after a rewrite during a verify. When this bug was
 fixed, sender_address at this point became the rewritten address. I'm not sure
 this is what should be logged, so I've changed to logging the unrewritten
@@ -2996,7 +3007,7 @@ switch (where)
       {
       uschar * s = smtp_cmd_data;
       Uskip_nonwhite(&s);
-      lim = s - smtp_cmd_data; /* atop after method */
+      lim = s - smtp_cmd_data; /* stop after method */
       }
     what = string_sprintf("%s %.*s", acl_wherenames[where], lim, place);
     }
@@ -3375,7 +3386,7 @@ Returns:       nothing
 */
 
 static void
-smtp_user_msg(uschar *code, uschar *user_msg)
+smtp_user_msg(uschar * code, uschar * user_msg)
 {
 int len = 3;
 smtp_message_code(&code, &len, &user_msg, NULL, TRUE);
@@ -3581,6 +3592,36 @@ if (chunking_state > CHUNKING_OFFERED)
 }
 
 
+#ifndef DISABLE_WELLKNOWN
+static int
+smtp_wellknown_handler(void)
+{
+if (verify_check_host(&wellknown_advertise_hosts) != FAIL)
+  {
+  GET_OPTION("acl_smtp_wellknown");
+  if (acl_smtp_wellknown)
+    {
+    uschar * user_msg = NULL, * log_msg;
+    int rc;
+
+    if ((rc = acl_check(ACL_WHERE_WELLKNOWN, NULL, acl_smtp_wellknown,
+               &user_msg, &log_msg)) != OK)
+      return smtp_handle_acl_fail(ACL_WHERE_WELLKNOWN, rc, user_msg, log_msg);
+    else if (!wellknown_response)
+      return smtp_handle_acl_fail(ACL_WHERE_WELLKNOWN, ERROR, user_msg, log_msg);
+    smtp_user_msg(US"250", wellknown_response);
+    return 0;
+    }
+  }
+
+smtp_printf("554 not permitted\r\n", SP_NO_MORE);
+log_write(0, LOG_MAIN|LOG_REJECT, "rejected \"%s\" from %s",
+             smtp_cmd_buffer, sender_helo_name, host_and_ident(FALSE));
+return 0;
+}
+#endif
+
+
 static int
 expand_mailmax(const uschar * s)
 {
@@ -3686,9 +3727,8 @@ while (done <= 0)
   void (*oldsignal)(int);
   pid_t pid;
   int start, end, sender_domain, recipient_domain;
-  int rc;
-  int c;
-  uschar *orcpt = NULL;
+  int rc, c;
+  uschar * orcpt = NULL;
   int dsn_flags;
   gstring * g;
 
@@ -4213,12 +4253,12 @@ while (done <= 0)
          chunking_state = CHUNKING_OFFERED;
          }
 
+#ifndef DISABLE_TLS
        /* Advertise TLS (Transport Level Security) aka SSL (Secure Socket Layer)
        if it has been included in the binary, and the host matches
        tls_advertise_hosts. We must *not* advertise if we are already in a
        secure connection. */
 
-#ifndef DISABLE_TLS
        if (tls_in.active.sock < 0 &&
            verify_check_host(&tls_advertise_hosts) != FAIL)
          {
@@ -4252,6 +4292,13 @@ while (done <= 0)
          fl.smtputf8_advertised = TRUE;
          }
 #endif
+#ifndef DISABLE_WELLKNOWN
+       if (verify_check_host(&wellknown_advertise_hosts) != FAIL)
+         {
+         g = string_catn(g, smtp_code, 3);
+         g = string_catn(g, US"-WELLKNOWN\r\n", 12);
+         }
+#endif
 
        /* Finish off the multiline reply with one that is always available. */
 
@@ -4299,6 +4346,14 @@ while (done <= 0)
       toomany = FALSE;
       break;   /* HELO/EHLO */
 
+#ifndef DISABLE_WELLKNOWN
+    case WELLKNOWN_CMD:
+      HAD(SCH_WELLKNOWN);
+      smtp_mailcmd_count++;
+      smtp_wellknown_handler();
+      break;
+#endif
+
 #ifdef EXPERIMENTAL_XCLIENT
     case XCLIENT_CMD:
       {
@@ -4352,9 +4407,10 @@ while (done <= 0)
        if (  fl.helo_verify_required
           || verify_check_host(&hosts_require_helo) == OK)
          {
-         smtp_printf("503 HELO or EHLO required\r\n", SP_NO_MORE);
          log_write(0, LOG_MAIN|LOG_REJECT, "rejected MAIL from %s: no "
            "HELO/EHLO given", host_and_ident(FALSE));
+         done = synprot_error(L_smtp_protocol_error, 503, NULL,
+                     US"HELO or EHLO required");
          break;
          }
        else if (smtp_mailcmd_max < 0)
@@ -5454,6 +5510,10 @@ while (done <= 0)
       if (acl_smtp_etrn) smtp_printf(" ETRN", SP_MORE);
       if (acl_smtp_expn) smtp_printf(" EXPN", SP_MORE);
       if (acl_smtp_vrfy) smtp_printf(" VRFY", SP_MORE);
+#ifndef DISABLE_WELLKNOWN
+      if (verify_check_host(&wellknown_advertise_hosts) != FAIL)
+       smtp_printf(" WELLKNOWN", SP_MORE);
+#endif
 #ifdef EXPERIMENTAL_XCLIENT
       if (proxy_session || verify_check_host(&hosts_xclient) != FAIL)
        smtp_printf(" XCLIENT", SP_MORE);
index a78b15fbd1f719ba81efe2a5a89ddb215de27484..cfc96c13c22bc8901eaee8f521fd21567f695b6a 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -365,6 +365,7 @@ if (!save_errno)
   {
 #ifdef TCP_FASTOPEN
   /* See if TCP Fast Open usable.  Default is a traditional 3WHS connect */
+  expand_level++;
   if (verify_check_given_host(CUSS &ob->hosts_try_fastopen, sc->host) == OK)
     {
     if (!early_data)
@@ -380,6 +381,7 @@ if (!save_errno)
       }
 # endif
     }
+  expand_level--;
 #endif
 
   if (ip_connect(sock, sc->host_af, sc->host->address, sc->host->port, timeout, fastopen_blob) < 0)
@@ -412,7 +414,7 @@ if (!save_errno)
 
   /* Both bind() and connect() succeeded, and any early-data */
 
-  HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" connected\n");
+  HDEBUG(D_transport|D_acl|D_v) debug_printf_indent("connected\n");
   if (getsockname(sock, (struct sockaddr *)(&interface_sock), &size) == 0)
     sending_ip_address = host_ntoa(-1, &interface_sock, NULL, &sending_port);
   else
@@ -496,7 +498,7 @@ HDEBUG(D_transport|D_acl|D_v)
 #ifdef SUPPORT_SOCKS
   if (ob->socks_proxy) s = string_sprintf("%svia proxy ", s);
 #endif
-  debug_printf_indent("Connecting to %s %s%s... ", sc->host->name, callout_address, s);
+  debug_printf_indent("Connecting to %s %s%s...\n", sc->host->name, callout_address, s);
   }
 
 /* Create and connect the socket */
index cc36463e44bb1d513f90972d1e8838a22a26c9fd..9abe18fc3d555ee358ce1e79ca91175a93558d1e 100644 (file)
@@ -3,7 +3,7 @@
 *************************************************/
 
 /* SPF support.
-   Copyright (c) The Exim Maintainers 2015 - 2023
+   Copyright (c) The Exim Maintainers 2015 - 2024
    Copyright (c) Tom Kistner <tom@duncanthrax.net> 2004 - 2014
    License: GPL
    SPDX-License-Identifier: GPL-2.0-or-later
index afee742ed984baf594b06198a820d9cd2b02f8b0..7e9a6ca2abbd74d015378d76e74576447f22e62e 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Experimental SPF support.
-   Copyright (c) The Exim Maintainers 2016 - 2022
+/* SPF support.
+   Copyright (c) The Exim Maintainers 2016 - 2024
    Copyright (c) Tom Kistner <tom@duncanthrax.net> 2004
    License: GPL
    SPDX-License-Identifier: GPL-2.0-or-later
index 3e3b246abd2161fedbb3552726efd3342a614b91..c788fd8f810bb3bf03fbe977d46eac0f686931f0 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index f3373faedb878dcaa1b25684c439021d2363a2e2..574aa167fc4b1b4cfa5135ea818c8770b1f75727 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 03322a097ae89c8513a5a4446bf15e024bea4750..181e7fd6751296c8e2e9e8f2759608a13d188f28 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim maintainers 2019 - 2023 */
+/* Copyright (c) The Exim maintainers 2019 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index a627611afa32b424d843875937df253a1dc565ab..113c05754ba8f39aba7b658fdb7559b7c9113af6 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1623,7 +1623,7 @@ while (*fp)
       goto INSERT_GSTRING;
       }
 
-    case 'W':                  /* Maybe mark up spaces & newlines */
+    case 'W':                  /* Maybe mark up ctrls, spaces & newlines */
       s = va_arg(ap, char *);
       if (Ustrpbrk(s, " \n") && !IS_DEBUG(D_noutf8))
        {
@@ -1646,7 +1646,15 @@ while (*fp)
              if (precision >= 0) precision += 3;
              break;
            default:
-             zg = string_catn(zg, CUS s, 1);
+             if (*s <= ' ')
+               {       /* base of UTF8 symbols for ASCII control chars */
+               uschar ctrl_symbol[3] = {[0]=0xe2, [1]=0x90, [2]=0x80};
+               ctrl_symbol[2] |= *s;
+               zg = string_catn(zg, ctrl_symbol, 3);
+               if (precision >= 0) precision += 2;
+               }
+             else
+               zg = string_catn(zg, CUS s, 1);
              break;
            }
          }
index 8aab540559f24ea0ec1b5c064ce41eaa89463a78..3c85f6ae597b3b573fa6bac56c076a5743612c5d 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 3e8ec6d847b8f0d88353231c795def00cdc29cc5..f443a6e274eebb1db07d11f05a757dd1ff5a91d0 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* Copyright (c) Phil Pennock 2012 */
 /* See the file NOTICE for conditions of use and distribution. */
index 34612adea0974bf7117a057931285f388cf5f8a9..c97106fe031674dc1fc3de014dbf6e2411995c50 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2019 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1999,16 +1999,6 @@ SSL_CTX_free(ob->tls_preload.lib_ctx);
 ob->tls_preload = null_tls_preload;
 }
 
-#else
-
-static void
-tls_server_creds_invalidate(void)
-{ return; }
-
-static void
-tls_client_creds_invalidate(transport_instance * t)
-{ return; }
-
 #endif /*EXIM_HAVE_INOTIFY*/
 
 
index e6203b7688afe70a842e2ae87cdfb545ea5c4850..a1ae1abd1063d13c06c6bdfa0606cb39150b6ede 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -40,13 +40,16 @@ functions from the OpenSSL or GNU TLS libraries. */
 static void tls_per_lib_daemon_init(void);
 static void tls_per_lib_daemon_tick(void);
 static unsigned  tls_server_creds_init(void);
-static void tls_server_creds_invalidate(void);
 static void tls_client_creds_init(transport_instance *, BOOL);
-static void tls_client_creds_invalidate(transport_instance *);
 static void tls_daemon_creds_reload(void);
 static BOOL opt_set_and_noexpand(const uschar *);
 static BOOL opt_unset_or_noexpand(const uschar *);
 
+#if defined(EXIM_HAVE_INOTIFY) || defined(EXIM_HAVE_KEVENT)
+static void tls_server_creds_invalidate(void);
+static void tls_client_creds_invalidate(transport_instance *);
+#endif
+
 
 
 /* This module is compiled only when it is specifically requested in the
@@ -324,7 +327,9 @@ tls_client_creds_reload(BOOL watch)
 for(transport_instance * t = transports; t; t = t->next)
   if (Ustrcmp(t->driver_name, "smtp") == 0)
     {
+#if defined(EXIM_HAVE_INOTIFY) || defined(EXIM_HAVE_KEVENT)
     tls_client_creds_invalidate(t);
+#endif
     tls_client_creds_init(t, watch);
     }
 }
@@ -360,7 +365,9 @@ unsigned lifetime;
 tls_watch_invalidate();
 #endif
 
+#if defined(EXIM_HAVE_INOTIFY) || defined(EXIM_HAVE_KEVENT)
 tls_server_creds_invalidate();
+#endif
 
 /* _expire is for a time-limited selfsign server cert */
 tls_creds_expire = (lifetime = tls_server_creds_init())
index 3609b78bb4287594881197c6a58e986f541deb7d..658fc62353e32574f6214b786ab6164bd0367418 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1702,7 +1702,7 @@ DEBUG(D_transport)
   acl_level++;
   }
 
-/* Do nothing if we have hit the maximum number that can be send down one
+/* Do nothing if we have hit the maximum number that can be sent down one
 connection. */
 
 if (connection_max_messages >= 0) local_message_max = connection_max_messages;
@@ -1739,7 +1739,7 @@ if (host_record->count > WAIT_NAME_MAX)
   goto retfalse;
   }
 
-/* Scan the message ids in the record from the end towards the beginning,
+/* Scan the message ids in the record in order
 until one is found for which a spool file actually exists. If the record gets
 emptied, delete it and continue with any continuation records that may exist.
 */
@@ -1752,17 +1752,14 @@ host_length = host_record->count * MESSAGE_ID_LENGTH;
 
 while (1)
   {
-  msgq_t      *msgq;
-  int         msgq_count = 0;
-  int         msgq_actual = 0;
-  BOOL        bFound = FALSE;
-  BOOL        bContinuation = FALSE;
+  msgq_t * msgq;
+  int msgq_count = 0, msgq_actual = 0;
+  BOOL bFound = FALSE, bContinuation = FALSE;
 
   /* create an array to read entire message queue into memory for processing  */
 
   msgq = store_get(sizeof(msgq_t) * host_record->count, GET_UNTAINTED);
-  msgq_count = host_record->count;
-  msgq_actual = msgq_count;
+  msgq_actual = msgq_count = host_record->count;
 
   for (i = 0; i < host_record->count; ++i)
     {
@@ -1776,10 +1773,9 @@ while (1)
        debug_printf_indent("NOTE: old or corrupt message-id found in wait=%.200s"
          " hints DB; deleting records for %s\n", transport_name, hostname);
       (void) dbfn_delete(dbm_file, hostname);
-      for (int i = host_record->sequence - 1; i >= 0; i--)
+      for (int j = host_record->sequence - 1; j >= 0; j--)
        (void) dbfn_delete(dbm_file,
-                   (sprintf(CS buffer, "%.200s:%d", hostname, i), buffer));
-      dbfn_close(dbm_file);
+                   (sprintf(CS buffer, "%.200s:%d", hostname, j), buffer));
       goto retfalse;
       }
     msgq[i].bKeep = TRUE;
@@ -1801,7 +1797,7 @@ while (1)
 
   /* now find the next acceptable message_id */
 
-  for (i = msgq_count - 1; i >= 0; --i) if (msgq[i].bKeep)
+  for (i = 0; i < msgq_count; i++) if (msgq[i].bKeep)
     {
     uschar subdir[2];
     uschar * mid = msgq[i].message_id;
@@ -1895,8 +1891,8 @@ while (1)
     }
 
   /* we were not able to find an acceptable message, nor was there a
-   * continuation record.  So bug out, outer logic will clean this up.
-   */
+  continuation record.  So bug out, outer logic will clean this up.
+  */
 
   if (!bContinuation)
     {
@@ -1918,7 +1914,11 @@ if (host_length > 0)
   }
 
 dbfn_close(dbm_file);
-DEBUG(D_transport) {acl_level--; debug_printf("transport_check_waiting: TRUE\n"); }
+DEBUG(D_transport)
+  {
+  acl_level--;
+  debug_printf("transport_check_waiting: TRUE (found %s)\n", new_message_id);
+  }
 return TRUE;
 
 retfalse:
index 0279659f255663a471fa7a06736bedb843ceda08..eeb726ae14f84641964a2ddd7dfef1333447a341 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim maintainers 2020 - 2023 */
+/* Copyright (c) The Exim maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -1368,7 +1368,7 @@ if (!isdirectory)
      && ob->create_file == create_belowhome)
     if (is_tainted(path))
       {
-      DEBUG(D_transport) debug_printf("de-tainting path '%s'\n", path);
+      DEBUG(D_transport) debug_printf("below-home: de-tainting path '%s'\n", path);
       path = string_copy_taint(path, GET_UNTAINTED);
       }
 
@@ -2207,7 +2207,7 @@ else
   if (is_tainted(path))
     if (ob->create_file == create_belowhome)
       {
-      DEBUG(D_transport) debug_printf("de-tainting path '%s'\n", path);
+      DEBUG(D_transport) debug_printf("below-home: de-tainting path '%s'\n", path);
       path = string_copy_taint(path, GET_UNTAINTED);
       }
     else
index 67d48a1cb50884599b25291cb120c43c40d15975..5ffc072152c314449ac94b3863caa58ea4fed492 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -475,10 +475,9 @@ if (oncelog && *oncelog && to)
   else
     {
     EXIM_DATUM key_datum, result_datum;
-    uschar * dirname, * s;
+    uschar * s = Ustrrchr(oncelog, '/');
+    uschar * dirname = s ? string_copyn(oncelog, s - oncelog) : NULL;
 
-    dirname = (s = Ustrrchr(oncelog, '/'))
-      ? string_copyn(oncelog, s - oncelog) : NULL;
     if (!(dbm_file = exim_dbopen(oncelog, dirname, O_RDWR|O_CREAT, ob->mode)))
       {
       addr->transport_return = DEFER;
@@ -811,3 +810,5 @@ return FALSE;
 #endif /*!MACRO_PREDEF*/
 #endif /*TRANSPORT_AUTOREPOL*/
 /* End of transport/autoreply.c */
+/* vi: aw ai sw=2
+*/
index eff0dc79d905a177844f21e7e8e8d4242f8ff029..7f82ef708587b4f01343def4f9c960d404c72312 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index f8a1427b93b789080570454ebbbb2be7f31d7096..faed1d00fb58df91b763c6b5dd04dac79487e3cb 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim maintainers 2020 - 2023 */
+/* Copyright (c) The Exim maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 21c98eeef8be28c21a0cc1a6683d36af28738d9b..79020217bc33f3e0cb79027165b0e328de0c956c 100644 (file)
@@ -2,9 +2,9 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 1995 - 2024 */
 /* Copyright (c) Andrew Colin Kissa <andrew@topdog.za.net> 2016 */
 /* Copyright (c) University of Cambridge 2016 */
-/* Copyright (c) The Exim Maintainers 1995 - 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
index ddd6ad7e13e0d0aef2e516bee623e0f4767bc7a2..a5caf3de67017010f986e52563d3dc52eb0d9c40 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -668,12 +668,15 @@ deferred_event_raise(address_item * addr, host_item * host, uschar * evstr)
 {
 uschar * action = addr->transport->event_action;
 const uschar * save_domain, * save_local;
+uschar * save_rn, * save_tn;
 
 if (!action)
   return;
 
 save_domain = deliver_domain;
 save_local = deliver_localpart;
+save_rn = router_name;
+save_tn = transport_name;
 
 /*XXX would ip & port already be set up? */
 deliver_host_address = string_copy(host->address);
@@ -697,7 +700,8 @@ deliver_localpart = addr->local_part;
 
 deliver_localpart = save_local;
 deliver_domain =    save_domain;
-router_name = transport_name = NULL;
+router_name = save_rn;
+router_name = save_tn;
 }
 #endif
 
@@ -1087,7 +1091,7 @@ if (pending_BANNER)
     }
   /*XXX EXPERIMENTAL_ESMTP_LIMITS ? */
 
-# ifndef DISABLE_TLS_RESUME
+# if !defined(DISABLE_TLS) && !defined(DISABLE_TLS_RESUME)
   GET_OPTION("host_name_extract");
   s = ((smtp_transport_options_block *)sx->conn_args.ob)->host_name_extract;
   if (!s) s = HNE_DEFAULT;
@@ -2631,7 +2635,7 @@ goto SEND_QUIT;
          }
        }
 #endif
-#ifndef DISABLE_TLS_RESUME
+#if !defined(DISABLE_TLS) && !defined(DISABLE_TLS_RESUME)
       GET_OPTION("host_name_extract");
       if (!(s = ob->host_name_extract)) s = HNE_DEFAULT;
       ehlo_response_lbserver(sx, s);
index fc8a6b12687b00259b6dd17b6a2530e9fafa4876..1d892d5675d15c9b8acc41ee8320d57497384a26 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index ac8d0f2da69b2c442163e282b2ef08b917d7d6a2..8848dd7a557c61b610ef90ca72086e2b3d62cd58 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2022 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) Jeremy Harris 2015 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 2c703583e1d9a4347edac8ddd3e54871c9a651a4..8f73a46aa65394037f0dc6f5a120a8fae4f70bf0 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2021 - 2023 */
+/* Copyright (c) The Exim Maintainers 2021 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2015 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
index 065deec41512ee1784ce78bd93f39e73278bfc2e..b1e5d68021f5e5ffec9f88c856e61f0a719df852 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2023 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -294,7 +294,7 @@ implying some kind of I/O error. We don't want to write the cache in that case.
 Otherwise the value is ccache_accept, ccache_reject, or ccache_reject_mfnull. */
 
 if (dom_rec->result != ccache_unknown)
-  if (!(dbm_file = dbfn_open(US"callout", O_RDWR|O_CREAT, &dbblock, FALSE, TRUE)))
+  if (!(dbm_file = dbfn_open(US"callout", O_RDWR, &dbblock, FALSE, TRUE)))
     {
     HDEBUG(D_verify) debug_printf_indent("callout cache: not available\n");
     }
@@ -316,7 +316,7 @@ is disabled. */
 if (done  &&  addr_rec->result != ccache_unknown)
   {
   if (!dbm_file)
-    dbm_file = dbfn_open(US"callout", O_RDWR|O_CREAT, &dbblock, FALSE, TRUE);
+    dbm_file = dbfn_open(US"callout", O_RDWR, &dbblock, FALSE, TRUE);
   if (!dbm_file)
     {
     HDEBUG(D_verify) debug_printf_indent("no callout cache available\n");
@@ -3523,7 +3523,7 @@ dbdata_callout_cache_address cache_address_record;
 
 if (!pos_cache && !neg_cache)
   return;
-if (!(dbm_file = dbfn_open(US"callout", O_RDWR|O_CREAT, &dbblock, FALSE, TRUE)))
+if (!(dbm_file = dbfn_open(US"callout", O_RDWR, &dbblock, FALSE, TRUE)))
   {
   HDEBUG(D_verify) debug_printf_indent("quota cache: not available\n");
   return;
index fb9d95c5e2260d722356e7798a4b69695cdcd3cf..cca5dd88776dbc2c9da85ecaca82681b77fc531f 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2023 */
+/* Copyright (c) The Exim Maintainers 2023 - 2024 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
diff --git a/src/util/mailtest b/src/util/mailtest
new file mode 100755 (executable)
index 0000000..0c50d93
--- /dev/null
@@ -0,0 +1,486 @@
+#!/usr/bin/perl
+#
+###############################################################
+###############################################################
+
+use strict;
+
+use Net::SMTP;
+#use IO::Socket::SSL qw( SSL_ERROR );
+use Net::Domain qw(hostfqdn);
+use Getopt::Long qw(:config default bundling no_ignore_case auto_version);
+use Pod::Usage;
+use Net::Cmd;
+use Data::Dumper;
+
+our @ISA = qw(Net::Cmd);
+
+###############################################################
+###############################################################
+
+my ($smtp,$optsin,$opt,$mess,$rcpt,@headers,$finished_header,$ofh);
+$main::VERSION = '1.2.2';
+
+$optsin = {
+    'body|b'                    => \&optset,
+    'debug|d'                   => \&optset,
+    'ehlo|helo|m=s'             => \&optset,
+    'rcptto|recipient|r=s'      => \&optset,
+    'host|h=s'                  => \&optset,
+    'from822|u=s'               => \&optset,
+    'vrfy|v'                    => \&optset,
+    'expn|e'                    => \&optset,
+    'mailfrom|from821|from|f=s' => \&optset,
+    'port|p=i'                  => \&optset,
+    'wellknown|w=s'             => \&optset,
+    'output|W=s'                => \&optset,
+    'include_options|O'         => \&optset,
+    'include_headers|H'         => \&optset,
+    'bounce|B'                  => \&optset,
+    'tls|S'                     => \&optset,
+    'nostarttls|s'              => \&optset,
+    'stricttls|strict_tls'      => \&optset,
+    'sslargs|tlsargs=s'         => \&optset,
+    'verbose'                   => \&optset,
+    'help'                      => \&optset,
+    'man'                       => \&optset,
+};
+map { my $t = $_; $t =~ s/\|.*//; $opt->{$t} = undef; } keys %$optsin;
+GetOptions( %$optsin ) or pod2usage(2);
+pod2usage(1) if $opt->{'help'};
+pod2usage(-exitval => 0, -verbose => 2) if $opt->{'man'};
+
+print _Dumper($opt, 'Options')
+    if $opt->{'debug'};
+
+###############################################################
+###############################################################
+##
+## parameter checking
+##
+###############################################################
+###############################################################
+
+bail( 1, "Host(--host) must be provided" )
+    if !$opt->{'host'};
+
+$opt->{'port'} = $opt->{'tls'} ? 465 : 25
+    if ! $opt->{'port'};
+
+if (!$opt->{'ehlo'})
+{
+    $opt->{'ehlo'} = hostfqdn();
+    fret( "Machine set to $opt->{'ehlo'}" ) if $opt->{'debug'};
+}
+if (!$opt->{'mailfrom'} && !$opt->{'bounce'})
+{
+    $opt->{'mailfrom'} = $ENV{USER}. "@". $opt->{'ehlo'};
+    fret( "MAIL FROM set to $opt->{'mailfrom'}" ) if $opt->{'debug'};
+}
+if (!$opt->{'from822'})
+{
+    $opt->{'from822'} = $opt->{'mailfrom'};
+    fret( "From: set to $opt->{'from822'}" ) if $opt->{'debug'};
+}
+if ($opt->{'bounce'})
+{
+    $opt->{'mailfrom'} = "";
+    $opt->{'from822'} = 'mailer-daemon@'. hostfqdn();
+    fret( "MAIL FROM set to $opt->{'mailfrom'}", "From: set to $opt->{'from822'}" ) if $opt->{'debug'};
+}
+
+bail( 1, "EXPN or VRFY cannot be used without a recipient" )
+    if ($opt->{'expn'} || $opt->{'vrfy'}) && ! $opt->{'rcptto'};
+
+bail( 1, "Either a recipient or well-known resource must be specified" )
+    if ! $opt->{'wellknown'} && ! $opt->{'rcptto'};
+
+bail( 1, "Only one of recipient or well-known resource can be specified" )
+    if $opt->{'wellknown'} && $opt->{'rcptto'};
+
+if ( $opt->{'sslargs'} )
+{
+    my @p = split /[=,]/, $opt->{'sslargs'};
+    $opt->{'sslparams'} = \@p;
+}
+else
+{
+    $opt->{'sslparams'} = [ 'SSL_verify_mode', $opt->{'stricttls'} ? 1 : 0 ];
+}
+fret( _Dumper( $opt->{'sslparams'}, 'sslparams' ) )
+    if $opt->{'debug'} && ( $opt->{'tls'} || ! $opt->{'nostarttls'} );
+
+###############################################################
+###############################################################
+##
+## parameter checking complete. now onto operations
+##
+##
+###############################################################
+###############################################################
+
+
+
+$smtp= Net::SMTP->new(  $opt->{'host'},
+                        Hello   => $opt->{'ehlo'},
+                        Debug   => $opt->{'debug'},
+                        ( $opt->{'tls'} ? ( 'SSL' => $opt->{'sslargs'} || 1 ) : () ),
+                        Port    => $opt->{'port'},
+                        );
+bail( 1, "Connection Failed: $@" )
+    if !$smtp;
+
+if (!$opt->{'nostarttls'})
+{
+    bail( $smtp, 1, "Failed to STARTTLS - $@" )
+        if ! $smtp->starttls( @{$opt->{'sslparams'}} );
+
+    fret( $smtp->message() )
+        if $opt->{'verbose'};
+}
+
+if ($opt->{'wellknown'})
+{
+    bail( $smtp, 1, "Server does not support WELLKNOWN" )
+        if ! $smtp->supports('WELLKNOWN');
+
+    my $e_wk = encode_xtext( $opt->{'wellknown'} );
+
+    bail( $smtp, 1, "Failed to WELLKNOWN - $e_wk", $smtp->message() )
+        if ! ( $smtp->command( 'WELLKNOWN', $e_wk )->response() == CMD_OK );
+
+    fret( "Protocol violation. Code was OK, but not 250",   $smtp->code. " - ". $smtp->message )
+        if $smtp->code ne '250';
+
+    $mess = $smtp->message;
+    my ($info,$size);
+    ($info,$mess) = split( /\n/, $mess, 2 );
+    $info =~ /size=(\d+)/i;
+    $size = $1 + 0;
+    $mess = decode_xtext( $mess );
+    fret( "Size mismatch on wellknown fetch", "Expected: ". $size, "Received: ". length($mess) )
+        if length($mess) != $size;
+
+    if ( $opt->{'output'} )
+    {
+        # Output to named file
+        #
+        bail( $smtp, 1, "Unable to open file $opt->{'output'} for WELLKNOWN output - $!" )
+            if ! ( $ofh = IO::File->new("> $opt->{'output'}") );
+
+        print $ofh $mess;
+        $ofh->close;
+    }
+    else
+    {
+        # might be hazardous, output via pager
+        print STDERR "$mess\n";
+    }
+}
+
+if ($opt->{'vrfy'})
+{
+    $smtp->verify($opt->{'vrfy'});
+    fret( $smtp->message() );
+}
+
+if ($opt->{'expn'})
+{
+    $smtp->expand($opt->{'expn'});
+    fret( $smtp->message() );
+}
+
+if ($opt->{'rcptto'})
+{
+    bail( $smtp, 1, "MAIL FROM $opt->{'mailfrom'} failed", $@ )
+        if ! $smtp->mail($opt->{'mailfrom'});
+
+    bail( $smtp, 1, "RCPT TO $opt->{'rcptto'} failed", $@ )
+        if ! $smtp->to($opt->{'rcptto'});
+
+    # handle any recipients on command line
+    while( $rcpt = shift @ARGV )
+    {
+        last if $rcpt eq '--';
+        fret( "RCPT TO $rcpt failed", $@ )
+            if ! $smtp->to($rcpt);
+    }
+
+    bail( $smtp, 1, "Unable to set data mode", @_ )
+        if ! $smtp->data();
+
+    if ($opt->{'body'})
+    {
+        push @headers, "Subject: Test Message\n";
+        $smtp->datasend("From: $opt->{'from822'}\n");
+        $smtp->datasend("To: $opt->{'rcptto'}\n");
+        $smtp->datasend("Subject: Test Message\n");
+        $smtp->datasend("\n");
+        $smtp->datasend("This is a test message\n");
+        $smtp->datasend("generated with mailtest\n");
+    }else
+    {
+        while(<>)
+        {
+            if($finished_header==0)
+            {
+                if (length($_)<=1)
+                {
+                    $finished_header = 1;
+                }else
+                {
+                    push @headers,"    ".$_;
+                }
+            }
+            $smtp->datasend("$_");
+        }
+    }
+    if($opt->{'include_headers'} && @headers)
+    {
+        $smtp->datasend("\n Copy of headers follow....\n");
+        foreach(@headers)
+        {
+            $smtp->datasend("$_");
+        }
+        $smtp->datasend("\n");
+    }
+    if($opt->{'include_options'})
+    {
+        $smtp->datasend("\n Copy of options follow....\n");
+        $smtp->datasend("    SMTP HOST $opt->{'host'}\n");
+        $smtp->datasend("    HELO $opt->{'ehlo'}\n");
+        $smtp->datasend("    MAIL FROM: $opt->{'mailfrom'}\n");
+        $smtp->datasend("    RCPT TO: $opt->{'rcptto'}\n\n");
+    }
+    fret( "dataend failed", $@ )
+        if ! $smtp->dataend();
+}
+$smtp->quit();
+
+exit;
+
+##############################################################
+##############################################################
+
+sub
+optset
+{
+    my $n = shift;
+    my $v = shift;
+    #print STDERR "Setting $n to $v\n";
+    $opt->{$n->{'name'}} = $v;
+}
+
+sub
+decode_xtext
+{
+    my $mess = shift;
+    $mess =~ s/[\n\r]//g;
+    $mess =~ s/\+([0-9a-fA-F]{2})/chr(hex($1))/ge;
+    return $mess;
+}
+
+sub
+encode_xtext
+{
+    my $mess = shift;
+    $mess =~ s/([^!-*,-<>-~])/'+'.uc(unpack('H*', $1))/eg;
+    return $mess;
+}
+
+sub
+_Dumper
+{
+    return Data::Dumper->Dump( [$_[0]], [$_[1] || 'VAR1'] );
+}
+
+sub
+fret
+{
+    map { print STDERR $_,"\n"; } @_;
+}
+
+sub
+bail
+{
+    shift->quit
+        if ref($_[0]);
+    my $rc = shift;
+    fret( @_ );
+    exit $rc;
+}
+
+##############################################################
+##############################################################
+
+__END__
+
+=head1 NAME
+
+mailtest - Simple SMTP sending for diagnostics
+
+=head1 SYNOPSIS
+
+mailtest --host host.example.com --rcptto recipient@example.com [ send_options ... ] [ additional recipients ...]
+
+
+Options:
+  --help
+                brief help message
+  --debug
+                enable debugging
+
+  --host host
+                host to connect to
+  --rcptto recipient
+                recipient for message
+
+  --helo machine
+                machine name for EHLO
+
+  --vrfy        request VRFY of recipient
+  --expn        request EXPN of recipient
+
+  --mailfrom from
+                use as MAIL FROM value
+  --from822 from
+                content From:
+
+  --port port
+                port to connect to
+
+  --body            generate body
+  --include_options
+                include Options in body
+  --include_headers
+                include generated headers in body
+
+  --tls         perform TLS on connect
+  --nostarttls  do no attempt STARTTLS
+  --stricttls   Enable strict verification on TLS connection
+
+  --tlsargs arg=value[,arg=value]
+                Explicitly define TLS options.
+
+  --bounce      sending as bounce (<>)
+
+  --wellknown path
+                well-known path
+  --output file
+                Output file to receive well-known data
+
+=head1 OPTIONS
+
+=over 8
+
+
+=item B<--help>
+
+Print a brief help message and exits.
+
+=item B<-d, --debug>
+
+Enables debugging, outpus additional information whilst processing requests.
+
+=item B<-h, --host>=I<host>
+
+Specifies the host to connect to. Must be specified and must be IP-resolvable.
+
+=item B<-m, --ehlo>=I<machine>
+
+Specified the machine name to use as the B<EHLO> value. Defaults to the fully-qualified name of the host running the command.
+
+=item B<-r, --rcptto>=I<recipient>
+
+Specifies the recipient of message. This is used as the B<RCPT TO> value.
+
+=item B<-v, --vrfy>
+
+Uses the I<recipient> parameter for the value in a B<VRFY> request. This disables the sending of an email.
+
+=item B<-e, --expn>
+
+Uses the I<recipient> parameter for the value in an B<EXPN> request. This disables the sending of an email.
+
+=item B<-f, --mailfrom>=I<from_address>
+
+Specified the value to use in the B<MAIL FROM> command. Defaults to the current username at the FQDN of the machine B<-m> unless the B<-B> option is used.
+
+=item B<-u, --from822>=I<from_user>
+
+Specified the value to use in the message headers. Defaults to the B<-f> I<from_address> value unless the B<-B> option is used.
+
+=item B<-B, --bounce>
+
+Replace the B<--mailfrom> I<from_address> with B<\<\>> and the B<--from833> I<from_user> with B<mailer-daemon@host> where the host is the value of B<--ehlo> I<machine>
+
+=item B<-p, --port>=I<port>
+
+Specified the port to connect to on the specified host. Defaults to port 25 unless B<-S> is given in which case it defaults to 465.
+
+=item B<-S, --tls>
+
+Specifies that TLS be used directly on the connection prior to any SMTP commands. Changes the connection port to 465 unless it has been explicitly provided. Disables any attempts at B<STARTTLS>.
+
+=item B<-s, --nostarttls>
+
+Disables attempting STARTTLS if offered. Disabled by use of B<-S>.
+
+=item B<--stricttls>
+
+Enables strict verification of the TLS connection. Sets the underlying SSL option B<SSL_verify_mode> to 1/SSL_VERIFY_PEER rather than 0/SSL_VERIFY_NONE. Since the aim of this tool is to test the SMTP protocol behaviour and not the TLS behaviour the decision was made to default the B<SSL_verify_mode> to 0/SSL_VERIFY_NONE.
+
+=item B<--sslargs>=argname=argvalue[,argname=argvalue...]
+
+Allow full control over underlying SSL options. Overrides B<--stricttls>. See the documentation for B<IO::Socket::SSL> for further details.
+
+    --sslargs SSL_verifycn_name=certname.example.com
+
+=item B<-b, --body>
+
+Generate a body for the message being sent.
+
+=item B<-O, --include-options>
+
+Include details of options used in the message body.
+
+=item B<-H, --include-headers>
+
+Include a copy of the generated headers in the message body.
+
+=item B<-w, --wellknown>=I<well-known-path>
+
+Provides the path value for a B<WELLKNOWN> command.
+
+=item B<-W, --output>=I<output_file>
+
+Provides the output file where the B<WELLKNOWN> data should be stored.
+
+=back
+
+=head1 DESCRIPTION
+
+B<mailtest> is a simple utility for testing SMTP connections.
+It is designed to debug endpoints and not for full email generation.
+
+It support a number of basic operations, SEND, VRFY, EXPN, WELLKNOWN.
+
+=head1 COMPATIBILITY
+
+C<mailtest> only requires modules that should be in all normal distributions.
+
+=head1 AUTHOR
+
+Bernard Quatermass <bernardq@exim.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2008,2020,2024 by Bernard Quatermass.
+
+
+=cut
+
+###############################################################
+# vi: sw=4 et
+# End of File
+###############################################################
diff --git a/test/aux-fixed/2500.dir/..subdir/regfile b/test/aux-fixed/2500.dir/..subdir/regfile
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/aux-fixed/4040/acme-response b/test/aux-fixed/4040/acme-response
new file mode 100644 (file)
index 0000000..d3f618d
--- /dev/null
@@ -0,0 +1,3 @@
+line 1
+line 2
+last line
diff --git a/test/aux-fixed/4040/sub/acme-response b/test/aux-fixed/4040/sub/acme-response
new file mode 100644 (file)
index 0000000..d3f618d
--- /dev/null
@@ -0,0 +1,3 @@
+line 1
+line 2
+last line
index 786b2e58eac82d6d608f70945c26049044c3db6e..f4f4272461e52be4f404d01d74ab226a1f4356d1 100644 (file)
@@ -24,14 +24,18 @@ queue_only
 queue_run_in_order
 
 
+.ifdef _HAVE_EVENT
 event_action = ${acl {ev_log}}
+.endif
 
 #
 
 begin acl
 
+.ifdef _HAVE_EVENT
 ev_log:
   accept logwrite = event $event_name
+.endif
 
 rcpt:
   accept       hosts = HOSTIPV4
@@ -76,20 +80,26 @@ begin transports
 
 smtp:
   driver =     smtp
+.ifdef _HAVE_EVENT
   event_action = ${acl {ev_log}}
+.endif
   hosts_try_fastopen = :
 
 bad_tpt:
   driver =     smtp
   connect_timeout = 1s
+.ifdef _HAVE_EVENT
   event_action = ${acl {ev_log}}
+.endif
 
 tofile:
   driver = appendfile
   file = DIR/test-mail/$local_part
   create_file = DIR/test-mail
   user = CALLER
+.ifdef _HAVE_EVENT
   event_action = ${acl {ev_log}}
+.endif
 
 begin retry
 
index a1aae2acd0e858f1ba62165649d4c7f59ea7de83..902e097ac7b60374c6af4ed5d512ed065420d23a 100644 (file)
@@ -43,7 +43,7 @@ send_to_server:
   hosts = 127.0.0.1
   port = PORT_D
   hosts_try_fastopen = :
-  # assumes that HOSTIPV4 can sent to 127.0.0.1
+  # assumes that HOSTIPV4 can send to 127.0.0.1
   interface = ${if eq {$sender_address_domain}{dustybelt.tld} {127.0.0.1}{HOSTIPV4}}
 
 # ----- Retry -----
diff --git a/test/confs/0637 b/test/confs/0637
new file mode 100644 (file)
index 0000000..a47d7d1
--- /dev/null
@@ -0,0 +1,13 @@
+# Exim test configuration 0637
+
+HVH=
+
+.include DIR/aux-var/std_conf_prefix
+
+primary_hostname = myhost.test.ex
+
+# ----- Main settings -----
+
+# ----- ACL -----
+
+# End
index dc0db460e9b7a48d5333942b544ef2f5de2f29e4..6702dcd6895e8a41f1ac02a62faa12c9e5b9fd43 100644 (file)
@@ -46,7 +46,9 @@ my_smtp:
   hide socks_proxy =   HOSTIPV4 port=PORT_D OPT
   hosts_try_fastopen = ${if eq {$local_part}{user_tfo} {*}}
   debug_print =                transport_name <$transport_name>
+.ifdef _HAVE_EVENT
   event_action =       ${if eq {smtp:connect}{$event_name} {${acl {logger}}} {}}
+.endif
 
 
 # End
diff --git a/test/confs/4040 b/test/confs/4040
new file mode 100644 (file)
index 0000000..c5c6c3c
--- /dev/null
@@ -0,0 +1,29 @@
+# Exim test configuration 4040
+
+SERVER=
+OPT=
+
+.include DIR/aux-var/std_conf_prefix
+
+primary_hostname = myhost.test.ex
+
+# ----- Main settings -----
+
+wellknown_advertise_hosts = 127.0.0.1
+acl_smtp_wellknown = check_wellknown
+
+# ----- ACL -----
+
+begin acl
+
+check_wellknown:
+  accept
+    logwrite =          [$sender_host_address] $smtp_command
+    condition =                ${if == {${received_port}}{PORT_D}}
+    set acl_c_wellknown = ${lookup {${xtextd:$smtp_command_argument}} \
+                               dsearch,ret=full,filter=fileOPT \
+                               {DIR/aux-fixed/TESTNUM}}
+    logwrite =          [$sender_host_address] -> '$acl_c_wellknown'
+    control =           wellknown/$acl_c_wellknown
+
+# End
diff --git a/test/confs/5708 b/test/confs/5708
new file mode 100644 (file)
index 0000000..4fc0e9b
--- /dev/null
@@ -0,0 +1,32 @@
+# Exim test configuration 5708
+# Check for event on dns lookup fail
+
+.include DIR/aux-var/std_conf_prefix
+
+primary_hostname = myhost.test.ex
+
+# ----- Main settings -----
+
+acl_smtp_rcpt = accept verify = helo
+
+event_action = ${acl {accept logwrite = M <$event_name> <$event_data>}}
+
+# ----- Routers -----
+begin routers
+all:
+  driver = accept
+  transport = all
+  errors_to = ""
+
+# ----- Transports -----
+begin transports
+all:
+  driver = smtp
+  hosts = ${if inlist {$domain} {nonexistent.test.ex} {$value}}
+  event_action = ${acl {accept logwrite = T <$event_name> <$event_data>}}
+
+# ------ Retries ----
+begin retry
+* * F,10m,2d
+
+# End
diff --git a/test/confs/5709 b/test/confs/5709
new file mode 100644 (file)
index 0000000..5539cdd
--- /dev/null
@@ -0,0 +1,10 @@
+# Exim test configuration 5709
+# Check for event on dnsdb lookup fail
+
+.include DIR/aux-var/std_conf_prefix
+primary_hostname = myhost.test.ex
+event_action = ${acl {accept logwrite = <$event_name> <$event_data>}}
+
+acl_smtp_helo = accept continue = ${lookup dnsdb{defer_never,a=$sender_helo_name}{$value}}
+
+# End
index ff5adb90f32c41652adb67d6e9c876de406deb02..c81cd92f32a0c6bb78deabfe1a2b25a3312f128a 100644 (file)
@@ -103,7 +103,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver =                     smtp
@@ -113,7 +115,9 @@ send_to_server2:
   hosts_try_fastopen =         :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index 89ee8fd53f439aefa414821584729a3324cde866..ff50b2b2ec667ae3a62d03b8b75dcf09e1ff1420 100644 (file)
@@ -93,7 +93,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver = smtp
@@ -103,7 +105,9 @@ send_to_server2:
   hosts_try_fastopen = :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index 571cb8e7e1b36e41ce84802328e26fdc3b551139..77b5c9052f8b079d9789b76fcc4ccda3a256f938 100644 (file)
@@ -108,7 +108,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver =                     smtp
@@ -118,7 +120,9 @@ send_to_server2:
   hosts_try_fastopen =         :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index a7f73a98cb218b687b365c2d88e1c897eb70484c..5d569d7084c6eb4b41846dd401d290dc520f0ae1 100644 (file)
@@ -97,7 +97,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver = smtp
@@ -107,7 +109,9 @@ send_to_server2:
   hosts_try_fastopen = :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index 4b34c75aeb44eea2622f784982f8424624f82240..d823290aa7916cc9bc54e92030755ff353a47048 100644 (file)
@@ -99,7 +99,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver =                     smtp
@@ -109,7 +111,9 @@ send_to_server2:
   hosts_try_fastopen =         :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index d279b1e3ee01046fdb10d7bd0750269b37a2662b..c83c70926962e3de1229dfa66bac544187d343d7 100644 (file)
@@ -92,7 +92,9 @@ send_to_server1:
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  ${if match {$local_part}{^noverify} {*}{:}}
   tls_try_verify_hosts =       *
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 send_to_server2:
   driver = smtp
@@ -102,7 +104,9 @@ send_to_server2:
   hosts_try_fastopen = :
   tls_verify_certificates =    CDIR/CA/CA.pem
   tls_verify_cert_hostnames =  :
+.ifdef _HAVE_EVENT
   event_action =               ${acl {log_resumption}}
+.endif
 
 
 # ----- Retry -----
index 528c25e5e70dc71a28b2717eecc398dca2edc6df..bfc366ac09271e76ef0b4037f3a09f64b80e60f4 100644 (file)
@@ -5,10 +5,10 @@
 1999-03-02 09:44:33 Start queue run: pid=p1234 -qqf
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
-1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234 -qqf
index 129b25d3d949336f893eb3ceee171805cc5ec819..a4e1e58627a2082652aeb12257378178c515b7b5 100644 (file)
@@ -7,8 +7,8 @@
 1999-03-02 09:44:33 Start queue run: pid=p1234
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => x1@y1 R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => x3@y3 R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 => x2@y2 R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => x3@y3 R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234
index 00dbbf85c00a8a9feb67a27910fc48f47d328e52..2d80afdcf7692f411a71623ce0f207d35f8dbbf4 100644 (file)
@@ -7,12 +7,12 @@
 1999-03-02 09:44:33 Start queue run: pid=p1234 -qq
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbD-000000005vi-0000"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbE-000000005vi-0000"
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbE-000000005vi-0000"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbF-000000005vi-0000"
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbG-000000005vi-0000"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbG-000000005vi-0000"
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 => bob@anotherone.tld F=<peter@dustybelt.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbH-000000005vi-0000"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 => bob@anotherone.tld F=<peter@dustybelt.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbI-000000005vi-0000"
@@ -22,8 +22,8 @@
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=p1235, no queue runs, listening for SMTP on port PORT_D
 1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaX-000000005vi-0000@the.local.host.name
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbC-000000005vi-0000@the.local.host.name
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaZ-000000005vi-0000@the.local.host.name
 1999-03-02 09:44:33 10HmbF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbB-000000005vi-0000@the.local.host.name
-1999-03-02 09:44:33 10HmbG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaZ-000000005vi-0000@the.local.host.name
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbC-000000005vi-0000@the.local.host.name
 1999-03-02 09:44:33 10HmbH-000000005vi-0000 <= peter@dustybelt.tld H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaY-000000005vi-0000@the.local.host.name
 1999-03-02 09:44:33 10HmbI-000000005vi-0000 <= peter@dustybelt.tld H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmbA-000000005vi-0000@the.local.host.name
index 0fbdd1b8c0b9c9b4a9f7e98c1ce6fc3a9c51dc96..1c2e817fc6dc0782476d37c4283f859ec307677d 100644 (file)
 2017-07-30 18:51:05.712 Start queue run: pid=p1234 -qq
 2017-07-30 18:51:05.712 10HmaX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmeA-000000005vi-0000"
 2017-07-30 18:51:05.712 10HmaX-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeB-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdZ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeC-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdY-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeD-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdX-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdW-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeE-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdW-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeF-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdV-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeG-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdU-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeH-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdT-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeI-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdS-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeJ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdR-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeK-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdQ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeL-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdP-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeM-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdO-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeN-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdN-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeO-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdM-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeP-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdL-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeB-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcV-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcW-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeC-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcW-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeD-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcX-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeE-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcY-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeF-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcZ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeG-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdA-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeH-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdB-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeI-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdC-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeJ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdD-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeK-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdE-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeL-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdF-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeM-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdG-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeN-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdH-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeO-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdI-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeP-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdJ-000000005vi-0000 Completed
 2017-07-30 18:51:05.712 10HmdK-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeQ-000000005vi-0000"
 2017-07-30 18:51:05.712 10HmdK-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeR-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdJ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeS-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdI-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeT-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdH-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeU-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdG-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeV-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdF-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeW-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdE-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeX-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdD-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeY-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdC-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeZ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdB-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmdA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfA-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmdA-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfB-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcZ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfC-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcY-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfD-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcX-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcW-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfE-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcW-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfF-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcV-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfG-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcU-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfH-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcT-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfI-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcS-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfJ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcR-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfK-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcQ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfL-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcP-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfM-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcO-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfN-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcN-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfO-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcM-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfP-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcL-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcK-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfQ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcK-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfR-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcJ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfS-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcI-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfT-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcH-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfU-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcG-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfV-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcF-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfW-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcE-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfX-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcD-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfY-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcC-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfZ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcB-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmcA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgA-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmcA-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgB-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbZ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgC-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbY-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgD-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbX-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeR-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdL-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeS-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdM-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeT-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdN-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeU-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdO-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeV-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdP-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeW-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdQ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeX-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdR-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeY-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdS-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeZ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdT-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfA-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdU-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfB-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdV-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdW-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfC-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdW-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfD-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdX-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfE-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdY-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmdZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfF-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmdZ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmaY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfG-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmaY-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmaZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfH-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmaZ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfI-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbA-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfJ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbB-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfK-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbC-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfL-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbD-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfM-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbE-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfN-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbF-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfO-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbG-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfP-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbH-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfQ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbI-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfR-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbJ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbK-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfS-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbK-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfT-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbL-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfU-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbM-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfV-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbN-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfW-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbO-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfX-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbP-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfY-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbQ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfZ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbR-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgA-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbS-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgB-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbT-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgC-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbU-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgD-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbV-000000005vi-0000 Completed
 2017-07-30 18:51:05.712 10HmbW-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgE-000000005vi-0000"
 2017-07-30 18:51:05.712 10HmbW-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbV-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgF-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbV-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgG-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbU-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgH-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbT-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgI-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbS-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgJ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbR-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgK-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbQ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgL-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbP-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgM-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbO-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgN-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbN-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgO-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbM-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgP-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbL-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbK-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgQ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbK-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgR-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbJ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgS-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbI-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgT-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbH-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgU-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbG-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgV-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbF-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgW-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbE-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgX-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbD-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgY-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbC-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgZ-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbB-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmbA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhA-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmbA-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmaZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhB-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmaZ-000000005vi-0000 Completed
-2017-07-30 18:51:05.712 10HmaY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhC-000000005vi-0000"
-2017-07-30 18:51:05.712 10HmaY-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbX-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgF-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbX-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbY-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgG-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbY-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmbZ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgH-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmbZ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcA-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgI-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcA-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcB-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgJ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcB-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcC-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgK-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcC-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcD-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgL-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcD-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcE-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgM-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcE-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcF-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgN-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcF-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcG-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgO-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcG-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcH-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgP-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcH-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcI-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgQ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcI-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcJ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgR-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcJ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcK-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgS-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcK-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcL-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgT-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcL-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcM-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgU-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcM-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcN-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgV-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcN-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcO-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgW-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcO-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcP-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgX-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcP-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcQ-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgY-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcQ-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcR-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgZ-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcR-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcS-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhA-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcS-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcT-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhB-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcT-000000005vi-0000 Completed
+2017-07-30 18:51:05.712 10HmcU-000000005vi-0000 => bob@anotherone.tld F=<ralph@dustyshoes.tld> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhC-000000005vi-0000"
+2017-07-30 18:51:05.712 10HmcU-000000005vi-0000 Completed
 2017-07-30 18:51:05.712 End queue run: pid=p1234 -qq
 
 ******** SERVER ********
 2017-07-30 18:51:05.712 exim x.yz daemon started: pid=p1235, no queue runs, listening for SMTP on port PORT_D
 2017-07-30 18:51:05.712 10HmeA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaX-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdZ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdY-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdX-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdW-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdV-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdU-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdT-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdS-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdR-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdQ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdP-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdO-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdN-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdM-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdL-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcV-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcW-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcX-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcY-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcZ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdA-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdB-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdC-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdD-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdE-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdF-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdG-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdH-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdI-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdJ-000000005vi-0000@the.local.host.name
 2017-07-30 18:51:05.712 10HmeQ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdK-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdJ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdI-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdH-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdG-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdF-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdE-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdD-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdC-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmeZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdB-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdA-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcZ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcY-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcX-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcW-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcV-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcU-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcT-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcS-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcR-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcQ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcP-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcO-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcN-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcM-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcL-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfQ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcK-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcJ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcI-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcH-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcG-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcF-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcE-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcD-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcC-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmfZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcB-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcA-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbZ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbY-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbX-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdL-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdM-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdN-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdO-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdP-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdQ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdR-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdS-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmeZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdT-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdU-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdV-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdW-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdX-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdY-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmdZ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaY-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaZ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbA-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbB-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbC-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbD-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbE-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbF-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbG-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbH-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfQ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbI-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbJ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbK-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbL-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbM-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbN-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbO-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbP-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbQ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmfZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbR-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbS-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbT-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbU-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgD-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbV-000000005vi-0000@the.local.host.name
 2017-07-30 18:51:05.712 10HmgE-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbW-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbV-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbU-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbT-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbS-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbR-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbQ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbP-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbO-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbN-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbM-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbL-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgQ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbK-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbJ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbI-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbH-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbG-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbF-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbE-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbD-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbC-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmgZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbB-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmhA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbA-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmhB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaZ-000000005vi-0000@the.local.host.name
-2017-07-30 18:51:05.712 10HmhC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmaY-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgF-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbX-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgG-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbY-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgH-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmbZ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgI-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcA-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgJ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcB-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgK-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcC-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgL-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcD-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgM-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcE-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgN-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcF-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgO-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcG-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgP-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcH-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgQ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcI-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgR-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcJ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgS-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcK-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgT-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcL-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgU-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcM-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgV-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcN-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgW-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcO-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgX-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcP-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgY-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcQ-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmgZ-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcR-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmhA-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcS-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmhB-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcT-000000005vi-0000@the.local.host.name
+2017-07-30 18:51:05.712 10HmhC-000000005vi-0000 <= ralph@dustyshoes.tld H=the.local.host.name [ip4.ip4.ip4.ip4] P=esmtp S=sss id=E10HmcU-000000005vi-0000@the.local.host.name
index 23bcced31d32396abc34f2a911b7c15d64e92f09..44f3872e79dcafbccb84a44a26b4960ff5e7625e 100644 (file)
@@ -3,4 +3,4 @@
 1999-03-02 09:44:33 exim x.yz daemon started: pid=p1234, no queue runs, listening for SMTP on port PORT_D
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 <= test_3@paniclogrouter H=(test.ex) [127.0.0.1] P=esmtp S=sss
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Tainted filename '/dest3'
-1999-03-02 09:44:33 10HmaX-000000005vi-0000 failed to open /dest3 when checking "/$local_part": Permission denied (euid=uuuu egid=EXIM_GID)
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 failed to open /dest3 when checking local_parts: Permission denied (euid=uuuu egid=EXIM_GID)
diff --git a/test/log/0637 b/test/log/0637
new file mode 100644 (file)
index 0000000..5971628
--- /dev/null
@@ -0,0 +1,8 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1234, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 SMTP call from [127.0.0.1] dropped: too many syntax or protocol errors (last command was "mail from:<u4@cus.cam.ac.uk>",  C=MAIL,MAIL,MAIL,MAIL)
index d9b8c02e2bb0ed8e03c079d95c5f1660c55e4b50..83e829684d934a850c223f45ad1fbd970b923979 100644 (file)
@@ -4,10 +4,10 @@
 1999-03-02 09:44:33 Start queue run: pid=p1234 -qqf
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbB-000000005vi-0000"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbB-000000005vi-0000"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234 -qqf
 1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= CALLER@myhost.test.ex U=CALLER P=local S=sss for usera@test.ex
 1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= CALLER@myhost.test.ex U=CALLER P=local S=sss for userb@test.ex
 1999-03-02 09:44:33 Start queue run: pid=p1235 -qqf
 1999-03-02 09:44:33 10HmbD-000000005vi-0000 => usera@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbG-000000005vi-0000"
 1999-03-02 09:44:33 10HmbD-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 => userc@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbH-000000005vi-0000"
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 => userb@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbI-000000005vi-0000"
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 => userb@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbH-000000005vi-0000"
 1999-03-02 09:44:33 10HmbE-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 => userc@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbI-000000005vi-0000"
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1235 -qqf
 1999-03-02 09:44:33 10HmbJ-000000005vi-0000 <= CALLER@myhost.test.ex U=CALLER P=local S=sss for user_p@test.ex
 1999-03-02 09:44:33 10HmbK-000000005vi-0000 <= CALLER@myhost.test.ex U=CALLER P=local S=sss for user_q@test.ex
 1999-03-02 09:44:33 Start queue run: pid=p1236 -qqf
 1999-03-02 09:44:33 10HmbJ-000000005vi-0000 => user_p@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbM-000000005vi-0000"
 1999-03-02 09:44:33 10HmbJ-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbL-000000005vi-0000 => user_r@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbN-000000005vi-0000"
-1999-03-02 09:44:33 10HmbL-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbK-000000005vi-0000 => user_q@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbO-000000005vi-0000"
+1999-03-02 09:44:33 10HmbK-000000005vi-0000 => user_q@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbN-000000005vi-0000"
 1999-03-02 09:44:33 10HmbK-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbL-000000005vi-0000 => user_r@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbO-000000005vi-0000"
+1999-03-02 09:44:33 10HmbL-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1236 -qqf
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=p1237, no queue runs, listening for SMTP on port PORT_D
 1999-03-02 09:44:33 SMTP connection from [127.0.0.1]:1111 (TCP/IP connection count = 1)
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaX-000000005vi-0000@myhost.test.ex for userx@test.ex
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz@test.ex
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery@test.ex
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery@test.ex
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz@test.ex
 1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1]:1111 D=qqs closed by QUIT
 1999-03-02 09:44:33 Start queue run: pid=p1238 -qf
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx <userx@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 => userz <userz@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 => usery <usery@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 => usery <usery@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 => userz <userz@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1238 -qf
 1999-03-02 09:44:33 exim x.yz daemon started: pid=p1239, no queue runs, listening for SMTP on port PORT_D
 1999-03-02 09:44:33 SMTP connection from [127.0.0.1]:1112 (TCP/IP connection count = 1)
 1999-03-02 09:44:33 10HmbG-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbD-000000005vi-0000@myhost.test.ex for usera@test.ex
-1999-03-02 09:44:33 10HmbH-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbF-000000005vi-0000@myhost.test.ex for userc@test.ex
-1999-03-02 09:44:33 10HmbI-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbE-000000005vi-0000@myhost.test.ex for userb@test.ex
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbE-000000005vi-0000@myhost.test.ex for userb@test.ex
+1999-03-02 09:44:33 10HmbI-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbF-000000005vi-0000@myhost.test.ex for userc@test.ex
 1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1]:1112 D=qqs closed by QUIT
 1999-03-02 09:44:33 Start queue run: pid=p1240 -qf
 1999-03-02 09:44:33 10HmbG-000000005vi-0000 => usera <usera@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbG-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbH-000000005vi-0000 => userc <userc@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 => userb <userb@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbH-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbI-000000005vi-0000 => userb <userb@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbI-000000005vi-0000 => userc <userc@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbI-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1240 -qf
 1999-03-02 09:44:33 exim x.yz daemon started: pid=p1241, no queue runs, listening for SMTP on port PORT_D
 1999-03-02 09:44:33 SMTP connection from [127.0.0.1]:1113 (TCP/IP connection count = 1)
 1999-03-02 09:44:33 10HmbM-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbJ-000000005vi-0000@myhost.test.ex for user_p@test.ex
-1999-03-02 09:44:33 10HmbN-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbL-000000005vi-0000@myhost.test.ex for user_r@test.ex
-1999-03-02 09:44:33 10HmbO-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbK-000000005vi-0000@myhost.test.ex for user_q@test.ex
+1999-03-02 09:44:33 10HmbN-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbK-000000005vi-0000@myhost.test.ex for user_q@test.ex
+1999-03-02 09:44:33 10HmbO-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbL-000000005vi-0000@myhost.test.ex for user_r@test.ex
 1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1]:1113 D=qqs closed by QUIT
index 31aec57c01a5e4a93bb3006abfd93d0628fe6894..f1041ddf11abfaf4e35288c1e51d610aaed518e9 100644 (file)
@@ -5,12 +5,12 @@
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx0@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => userx1@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbB-000000005vi-0000"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz0@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz1@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbD-000000005vi-0000"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery0@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbE-000000005vi-0000"
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery1@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbF-000000005vi-0000"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery0@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => usery1@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbD-000000005vi-0000"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz0@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbE-000000005vi-0000"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => userz1@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbF-000000005vi-0000"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234 -qqf
 
 ******** SERVER ********
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaX-000000005vi-0000@myhost.test.ex for userx0@test.ex
 1999-03-02 09:44:33 SMTP connection from [127.0.0.1]:1112 (TCP/IP connection count = 2)
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaX-000000005vi-0000@myhost.test.ex for userx1@test.ex
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz0@test.ex
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz1@test.ex
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery0@test.ex
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1111 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery1@test.ex
 1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1]:1111 D=qqs closed by QUIT
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery0@test.ex
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaY-000000005vi-0000@myhost.test.ex for usery1@test.ex
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz0@test.ex
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 <= CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1112 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmaZ-000000005vi-0000@myhost.test.ex for userz1@test.ex
 1999-03-02 09:44:33 SMTP connection from localhost (myhost.test.ex) [127.0.0.1]:1112 D=qqs closed by QUIT
 1999-03-02 09:44:33 Start queue run: pid=p1236 -qf
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 => userx0 <userx0@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 => userx1 <userx1@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbB-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 => userz0 <userz0@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 => usery0 <usery0@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 => userz1 <userz1@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 => usery1 <usery1@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbD-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 => usery0 <usery0@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 => userz0 <userz0@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbE-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 => usery1 <usery1@test.ex> R=server T=local_delivery
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 => userz1 <userz1@test.ex> R=server T=local_delivery
 1999-03-02 09:44:33 10HmbF-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1236 -qf
diff --git a/test/log/4040 b/test/log/4040
new file mode 100644 (file)
index 0000000..4274a7a
--- /dev/null
@@ -0,0 +1,21 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1234, no queue runs, listening for SMTP on port PORT_D port PORT_D2
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN acme-response
+1999-03-02 09:44:33 [127.0.0.1] -> 'TESTSUITE/aux-fixed/4040/acme-response'
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN acme-response
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN acme-response
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN badfile
+1999-03-02 09:44:33 [127.0.0.1] -> ''
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN badfile
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1235, no queue runs, listening for SMTP on port PORT_D port PORT_D2
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN acme-response
+1999-03-02 09:44:33 [127.0.0.1] -> 'TESTSUITE/aux-fixed/4040/acme-response'
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN sub/acme-response
+1999-03-02 09:44:33 [127.0.0.1] -> 'TESTSUITE/aux-fixed/4040/sub/acme-response'
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN sub/badfile
+1999-03-02 09:44:33 [127.0.0.1] -> ''
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN sub/badfile
+1999-03-02 09:44:33 [127.0.0.1] WELLKNOWN ../badfile
+1999-03-02 09:44:33 [127.0.0.1] -> ''
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN ../badfile
index 0ffb6b206710dc114e9b926195540ee9b8230895..d2c425113238473819c51bb64e78b6c87fb73d23 100644 (file)
@@ -5,10 +5,10 @@
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => r1_1.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1] C="250 message 1 received"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => r1_2.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 2 received"
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => r3_1.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 3 received"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => r3_2.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 4 received"
-1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => r2_1.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 5 received"
-1999-03-02 09:44:33 10HmaY-000000005vi-0000 => r2_2.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1] C="250 message 6 received"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => r2_1.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 3 received"
+1999-03-02 09:44:33 10HmaY-000000005vi-0000 => r2_2.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 4 received"
 1999-03-02 09:44:33 10HmaY-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => r3_1.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1]* C="250 message 5 received"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 => r3_2.test.ex@the.local.host.name R=send_to_server T=to_server H=127.0.0.1 [127.0.0.1] C="250 message 6 received"
+1999-03-02 09:44:33 10HmaZ-000000005vi-0000 Completed
 1999-03-02 09:44:33 End queue run: pid=p1234 -qq
diff --git a/test/log/5708 b/test/log/5708
new file mode 100644 (file)
index 0000000..def9f94
--- /dev/null
@@ -0,0 +1,12 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1234, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 M <dns:fail> <DNS_NOMATCH:nonexistent.test.ex:A>
+1999-03-02 09:44:33 H=(nonexistent.test.ex) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
+1999-03-02 09:44:33 M <dns:fail> <DNS_NOMATCH:rhubarb.test.ex:A>
+1999-03-02 09:44:33 H=(badcname.test.ex) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
+1999-03-02 09:44:33 M <dns:fail> <DNS_AGAIN:test.again.dns:A>
+1999-03-02 09:44:33 H=(test.again.dns) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 <= a@b H=(localhost) [127.0.0.1] P=smtp S=sss
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 T <dns:fail> <DNS_NOMATCH:nonexistent.test.ex:A>
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 == bad_a@nonexistent.test.ex <bad_A@nonexistent.test.ex> R=all T=all defer (-32): failed to lookup IP address for nonexistent.test.ex
diff --git a/test/log/5709 b/test/log/5709
new file mode 100644 (file)
index 0000000..b7cd779
--- /dev/null
@@ -0,0 +1,6 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1234, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 <dns:fail> <DNS_NOMATCH:nonexistent.test.ex:A>
+1999-03-02 09:44:33 <dns:fail> <DNS_NOMATCH:rhubarb.test.ex:A>
+1999-03-02 09:44:33 <dns:fail> <DNS_AGAIN:test.again.dns:A>
index d84b010137b9c7ddbc2e36cdf84f62d4334e38cf..8f752e5b3451cfd4fa908e7a3017f7f5e05dbd14 100644 (file)
@@ -3,7 +3,7 @@ Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbI-000000005vi-0000
+       id 10HmbH-000000005vi-0000
        for userb@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index ebc497b891f6e4ac6d1485c5147913cdacae09e5..d623886f98e2fd607db9fcbf9599f47fe3051ba9 100644 (file)
@@ -3,7 +3,7 @@ Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbH-000000005vi-0000
+       id 10HmbI-000000005vi-0000
        for userc@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index b31c5618840696c17ab09d9b0da8b6a6fe9fbf97..723dfce1d24c1f80fda6a08eea8bbf7b54a38cba 100644 (file)
@@ -3,7 +3,7 @@ Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbC-000000005vi-0000
+       id 10HmbB-000000005vi-0000
        for usery@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index 1e1f6e51e3454a25aad9d81546a61417e3c5d326..90b41a78b3e7f0a723ba78c6d11dba6af30a779f 100644 (file)
@@ -3,7 +3,7 @@ Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbB-000000005vi-0000
+       id 10HmbC-000000005vi-0000
        for userz@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index 6d02deae08b877f0ee5cb96dc2b637cb4d8d597b..3eb804f0e4dea1584855320a7c2beb183f5f82ad 100644 (file)
@@ -1,9 +1,9 @@
 From CALLER@myhost.test.ex Tue Mar 02 09:44:33 1999
-Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
+Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbE-000000005vi-0000
+       id 10HmbC-000000005vi-0000
        for usery0@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index 9332d1a03504d19f6f24b9c1a400396f5b926a1f..e51b5bb0e1dbd1f0f10725c0eb4bc71526644470 100644 (file)
@@ -1,9 +1,9 @@
 From CALLER@myhost.test.ex Tue Mar 02 09:44:33 1999
-Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
+Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbF-000000005vi-0000
+       id 10HmbD-000000005vi-0000
        for usery1@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index b5e1d22b0ef4e3f20444ff5a52156fd894adf41c..c6f9774fa269f1b6dc14406590a3cd7930701a97 100644 (file)
@@ -1,9 +1,9 @@
 From CALLER@myhost.test.ex Tue Mar 02 09:44:33 1999
-Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
+Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbC-000000005vi-0000
+       id 10HmbE-000000005vi-0000
        for userz0@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index 98f8def243cfaad39eb4f376decb1bd57d6d387b..13aced9acfa8e37cc17338bfaebc65b164884e03 100644 (file)
@@ -1,9 +1,9 @@
 From CALLER@myhost.test.ex Tue Mar 02 09:44:33 1999
-Received: from localhost ([127.0.0.1]:1111 helo=myhost.test.ex)
+Received: from localhost ([127.0.0.1]:1112 helo=myhost.test.ex)
        by myhost.test.ex with esmtps (TLS1.x:ke-RSA-AES256-SHAnnn:xxx)
        (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmbD-000000005vi-0000
+       id 10HmbF-000000005vi-0000
        for userz1@test.ex;
        Tue, 2 Mar 1999 09:44:33 +0000
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
index 70e01c739c4ce9cf85ce092e5f2b74dfc9394a4e..758332ea387fc4ba3ae86abb1f6fdac2c9b0293d 100644 (file)
@@ -1 +1 @@
-1999-03-02 09:44:33 Received from CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbL-000000005vi-0000@myhost.test.ex
+1999-03-02 09:44:33 Received from CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbK-000000005vi-0000@myhost.test.ex
index 758332ea387fc4ba3ae86abb1f6fdac2c9b0293d..70e01c739c4ce9cf85ce092e5f2b74dfc9394a4e 100644 (file)
@@ -1 +1 @@
-1999-03-02 09:44:33 Received from CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbK-000000005vi-0000@myhost.test.ex
+1999-03-02 09:44:33 Received from CALLER@myhost.test.ex H=localhost (myhost.test.ex) [127.0.0.1]:1113 P=esmtps X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no S=sss id=E10HmbL-000000005vi-0000@myhost.test.ex
index cbfef06c18dc6e9b240ed5b4496cc2df256e8de6..f12f82e61eb363bd3e80bc2334ccfb205d6bc85a 100644 (file)
@@ -1,4 +1,4 @@
 
 ******** SERVER ********
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Tainted filename '/dest3'
-1999-03-02 09:44:33 10HmaX-000000005vi-0000 failed to open /dest3 when checking "/$local_part": Permission denied (euid=uuuu egid=EXIM_GID)
+1999-03-02 09:44:33 10HmaX-000000005vi-0000 failed to open /dest3 when checking local_parts: Permission denied (euid=uuuu egid=EXIM_GID)
diff --git a/test/rejectlog/0637 b/test/rejectlog/0637
new file mode 100644 (file)
index 0000000..9f539cd
--- /dev/null
@@ -0,0 +1,7 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 rejected MAIL from [127.0.0.1]: no HELO/EHLO given
+1999-03-02 09:44:33 SMTP call from [127.0.0.1] dropped: too many syntax or protocol errors (last command was "mail from:<u4@cus.cam.ac.uk>",  C=MAIL,MAIL,MAIL,MAIL)
diff --git a/test/rejectlog/4040 b/test/rejectlog/4040
new file mode 100644 (file)
index 0000000..9d4ca3a
--- /dev/null
@@ -0,0 +1,6 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN acme-response
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN badfile
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN sub/badfile
+1999-03-02 09:44:33 H=(test) [127.0.0.1] rejected WELLKNOWN ../badfile
diff --git a/test/rejectlog/5708 b/test/rejectlog/5708
new file mode 100644 (file)
index 0000000..98f38cd
--- /dev/null
@@ -0,0 +1,5 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 H=(nonexistent.test.ex) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
+1999-03-02 09:44:33 H=(badcname.test.ex) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
+1999-03-02 09:44:33 H=(test.again.dns) [127.0.0.1] F=<a@b> rejected RCPT <c@d>
index e8f1933f2c5f568940dbf0a8ca356d2844ef7c01..d205f9509ba7334be0f4d408021db8b7f2ed0484 100755 (executable)
@@ -2,6 +2,9 @@
 # We use env, because in some environments of our build farm
 # the Perl 5.010 interpreter is only reachable via $PATH
 
+# Copyright (c) The Exim Maintainers 2024
+# SPDX-License-Identifier: GPL-2.0-or-later
+
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 # be possible to export this suite for running on a wide variety of hosts, in #
@@ -115,6 +118,14 @@ my ($parm_configure_owner, $parm_configure_group);
 my ($parm_ipv4, $parm_ipv6, $parm_ipv6_stripped);
 my $parm_hostname;
 
+# Convenience for regex'
+# for tighter, see https://metacpan.org/dist/IO-Socket-IP/source/lib/IO/Socket/IP.pm#L37
+my $re_ipv4 = qr/\d{1,3}(?:\.\d{1,3}){3}/;
+my $re_6g = qr/[[:xdigit:]]{1,4}/;
+my $re_6s = qr/${re_6g}:/;
+my $re_ipv6 = qr/${re_6s}{0,7}${re_6g}(?:::${re_6s}{0,5}${re_6g})?/;
+my $re_ip = qr/(?:${re_ipv4}|${re_ipv6})/;
+
 ###############################################################################
 ###############################################################################
 
@@ -464,7 +475,7 @@ RESET_AFTER_EXTRA_LINE_READ:
   s/:[^:]+: while opening named pipe/: Error: while opening named pipe/;
 
   # Debugging output of lists of hosts may have different sort keys
-  s/sort=\S+/sort=xx/ if /^\S+ (?:\d+\.){3}\d+ mx=\S+ sort=\S+/;
+  s/^\s*\S+ (?:\d+\.){3}\d+ mx=\S+ sort=\K\S+/xx/;
 
   # Random local part in callout cache testing
   s/myhost.test.ex-\d+-testing/myhost.test.ex-dddddddd-testing/;
@@ -713,7 +724,7 @@ RESET_AFTER_EXTRA_LINE_READ:
   s/TLS error on connection \(gnutls_handshake\): Error in the pull function\./a TLS session is required but an attempt to start TLS failed/g;
 
   # (replace old with new, hoping that old only happens in one situation)
-  s/TLS error on connection to \d{1,3}(.\d{1,3}){3} \[\d{1,3}(.\d{1,3}){3}\] \(gnutls_handshake\): A TLS packet with unexpected length was received./a TLS session is required for ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4], but an attempt to start TLS failed/g;
+  s/TLS error on connection to ${re_ipv4} \[${re_ipv4}\] \(gnutls_handshake\): A TLS packet with unexpected length was received./a TLS session is required for ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4], but an attempt to start TLS failed/g;
   s/TLS error on connection from \[127.0.0.1\] \(recv\): A TLS packet with unexpected length was received./TLS error on connection from [127.0.0.1] (recv): The TLS connection was non-properly terminated./g;
 
   # signature algorithm names
@@ -823,12 +834,12 @@ RESET_AFTER_EXTRA_LINE_READ:
   s/\(port=(\d+)/"(port=" . new_value($1, "%s", \$next_port)/e;
 
   # This handles "connection from" and the like, when the port is given
-  if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
-      && !/\*>/&& !/==/  && !/\*\*/ && !/Connection refused/ && !/in response to/
-      && !/T(?:ransport)?:/)
-    {
-    s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
-    }
+  s/(\[${re_ip}\]:)(\d+)/$1.new_value($2,"%s",\$next_port)/ie
+    unless (  /listening for SMTP on/ || /Connecting to/
+          || /[=*-]>/ || /==/ || /\*\*/
+          || /Connection refused/ || /in response to/
+          || /T(?:ransport)?:/
+          );
 
   # Port in host address in spool file output from -Mvh
   s/^(--?host_address) (.*[:.])\d+$/$1 ${2}9999/;
@@ -911,7 +922,7 @@ RESET_AFTER_EXTRA_LINE_READ:
 
   s/([\s,])S=\d+\b/$1S=sss/;
   s/:S\d+\b/:Ssss/;
-  s/^(\s*\d+[mhd]\s+)\d+(\s+(?:[a-z0-9-]{23}|[a-z0-9-]{18}) <)/TTT   sss$2/i if $is_stdout;
+  s/^(\s*\d+[mhd]\s+)\d+(\s+(?:[[:alnum:]-]{23}|[[:alnum:]-]{16}) <)/TTT   sss$2/i if $is_stdout;
   s/\sSIZE=\d+\b/ SIZE=ssss/;
   s/\ssize=\d+\b/ size=sss/ if $is_stderr;
   s/old size = \d+\b/old size = sssss/;
@@ -1044,6 +1055,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # remote IPv6 addrs vary
     s/^(Connection request from) \[.*:.*:.*\]$/$1 \[ipv6\]/;
 
+    # Hints DB use of lockfiles is provider-dependent
+    s/Failed to open \K(?:DBM|database lock) file (.*\/spool\/db\/[^.]*)(?:.lockfile)?(?=(?: for reading)?: No such file or directory$)/hintsdb $1/;
+
     # openssl version variances
   # Error lines on stdout from SSL contain process id values and file names.
   # They also contain a source file name and line number, which may vary from
@@ -1061,6 +1075,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # gnutls version variances
     next if /^Error in the pull function./;
 
+    # Retry DB record gets truncated when TESTDIR is a long string
+    s/T:.*\(MTA-imposed quota exceeded while writing to\K.*$/ <elided>)/;
+
     # optional IDN2 variant conversions.  Accept either IDN1 or IDN2
     s/conversion  strasse.de/conversion  xn--strae-oqa.de/;
     s/conversion: german.xn--strae-oqa.de/conversion: german.straße.de/;
@@ -1085,7 +1102,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^limits_advertise_hosts =/;
 
     # PRDR
-    next if /^hosts_try_prdr = *$/;
+    next if /^hosts_try_prdr = \*$/;
 
     # TLS resumption is not always supported by the build
     next if /^tls_resumption_hosts =/;
@@ -1121,9 +1138,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # because they will be different in different binaries.
 
     next if /^$time_pid?
-               (?: Berkeley\ DB:\s
-                 | Probably\ (?:Berkeley\ DB|ndbm|GDBM)
-                 | Using\ tdb
+               (?: .*\sBerkeley\ DB
+                 | \sProbably\ (?:Berkeley\ DB|ndbm|GDBM)
+                 | \sUsing\ (?:tdb|sqlite3)
                  | Authenticators:
                  | Lookups(?:\(built-in\))?:
                  | Support\ for:
@@ -1138,6 +1155,10 @@ RESET_AFTER_EXTRA_LINE_READ:
                )
              /x;
 
+    # Hints DB use of lockfiles is provider-dependent
+    next if /lock(?:ing|ed) .*\/spool\/db\/[^.]+\.lockfile$/;
+    s/closed hints database\K and lockfile$//;
+
     # Lines with a leading pid.  Only handle >= 4-digit PIDs to avoid converting SMTP respose codes
     s/^\s*(\d{4,})\s(?!(?:previous message|in\s|bytes remain in|SMTP accept process running))/new_value($1, "p%s", \$next_pid) . ' '/e;
 
@@ -1227,7 +1248,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^TLS: not preloading server certs$/;
 
     # some platforms are missing the standard CA bundle file
-    next if /^tls_set_watch\(\) fail on '\/usr\/lib\/ssl\/cert.pem': No such file or directory$/;
+    next if /^tls_set_watch\(\) fail on '\/usr\/(?:lib\/ssl|local\/openssl3\/etc\/pki\/tls)\/cert.pem': No such file or directory$/;
 
     # drop lookups
     next if /^$time_pid?(?: Lookups\ \(built-in\):
@@ -1277,8 +1298,9 @@ RESET_AFTER_EXTRA_LINE_READ:
       if (/looked up these IP addresses/);
     next if /name=localhost address=::1/;
 
-    # drop pdkim debugging header
+    # DKIM: Not all builds include
     next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
+    next if /try option acl_smtp_dkim$/;
 
     # Some platforms have TIOCOUT, some do not
     next if /\d+ bytes remain in socket output buffer$/;
@@ -1287,10 +1309,19 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /using host_fake_gethostbyname for \S+ \(IPv6\)/;
     next if /get\[host\|ipnode\]byname\[2\]\(af=inet6\)/;
     next if /DNS lookup of \S+ \(AAAA\) using fakens/;
-    next if / in dns_ipv4_lookup?/;
     next if / writing neg-cache entry for .*AAAA/;
-    next if /^faking res_search\(AAAA\) response length as 65535/;
+    next if /^ *faking res_search\(AAAA\) response length as 65535/;
 
+    if (/ in dns_ipv4_lookup\?$/)
+      {
+      $_= <IN>;
+      if (/ list element: \*$/)
+       {
+       $_= <IN>;
+       next if / in dns_ipv4_lookup\? yes \(matched "\*"\)/;
+       }
+      goto RESET_AFTER_EXTRA_LINE_READ;
+      }
     if (/DNS lookup of \S+ \(AAAA\) gave NO_DATA/)
       {
       $_= <IN>;     # Gets "returning DNS_NODATA"
@@ -1372,7 +1403,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     s/unexpected disconnection while reading SMTP command from \[127.0.0.1\] \K\(error: Connection reset by peer\) //;
 
     # Platform-dependent resolver option bits
-    s/(?:writing|update) neg-cache entry for [^,]+-\K[0-9a-f]+, ttl/xxxx, ttl/;
+    s/(?:writing|update) neg-cache entry for [^,]+-\K[0-9a-f]+, ttl/xxxx, ttl/;
 
     # timing variance, run-to-run
     s/^time on queue = \K1s/0s/;
@@ -1404,11 +1435,14 @@ RESET_AFTER_EXTRA_LINE_READ:
     s%(?<!lsearch)[^ ](?=TESTSUITE/aux-fixed/(?:0414.list[12]|0464.domains)$)%0%;
 
     # CONTENT_SCAN
-    next if /try option acl_not_smtp_mime$/;
+    next if /try option acl_(?:not_)?smtp_mime$/;
 
     # DISABLE_OCSP
     next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
 
+    # WELLKNOWN
+    next if / in wellknown_advertise_hosts\?/;
+
     # SUPPORT_PROXY
     next if /host in hosts_proxy\?/;
 
@@ -1437,7 +1471,10 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if / in limits_advertise_hosts?\? no \(matched "!\*"\)/;
 
     # Experimental_XCLIENT
-    next if / in hosts_xclient?\? no \(option unset\)/;
+    next if / in hosts_xclient\? no \(option unset\)/;
+
+    # Experimental_WELLKNOWN
+    next if / in hosts_wellknown\? no \(option unset\)/;
 
     # TCP Fast Open
     next if /^(ppppp )?setsockopt FASTOPEN: Network Error/;
@@ -1472,7 +1509,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^DKIM >> Body data for hash, canonicalized/;
 
     # Not all platforms build with SPF enabled
-    next if /^(spf_conn_init|SPF_dns_exim_new|spf_compile\.c)/;
+    next if /(^spf_conn_init|^SPF_dns_exim_new|spf_compile\.c)/;
     next if /try option spf_smtp_comment_template$/;
 
     # Not all platforms have sendfile support
@@ -1483,37 +1520,36 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^DKIM \[[^[]+\] (Header hash|b) computed:/;
 
     # Not all platforms support TCP Fast Open, and the compile omits the check
-    if (s/\S+ in hosts_try_fastopen\? (no \(option unset\)|no \(end of list\)|yes \(matched "\*"\))\n$//)
-      {
-      chomp;
-      $_ .= <IN>;
-      s/ \.\.\. >>> / ... /;
+    next if /\S+ in hosts_try_fastopen\? (no \(option unset\)|no \(end of list\)|yes \(matched "\*"\))\n$/ ;
+
+#    if (s/\S+ in hosts_try_fastopen\? (no \(option unset\)|no \(end of list\)|yes \(matched "\*"\))\n$//)
+#      {
+#      chomp;
+#      $_ .= <IN>;
+#      s/ \.\.\. >>> / ... /;
       if (s/ non-TFO mode connection attempt to 224.0.0.0, 0 data\b$//) { chomp; $_ .= <IN>; }
       s/Address family not supported by protocol family/Network Error/;
       s/Network(?: is)? unreachable/Network Error/;
-      }
+#      }
     next if /^(ppppp |\d+ )?setsockopt FASTOPEN: Protocol not available$/;
-    s/^(Connecting to .* \.\.\. sending) \d+ (nonTFO early-data)$/$1 dd $2/;
+    s/^(sending) \d+ (nonTFO early-data)$/$1 dd $2/;
 
-    if (/^([0-9: ]*                                            # possible timestamp
-       Connecting\ to\ [^ ]+\ [^ ]+(\ from\ [^ ]+)?)\ \.\.\.
+    if (/^[0-9: ]*                                             # possible timestamp
        \ .*TFO\ mode\x20
        (sendto,\ no\ data:\ EINPROGRESS                        # Linux
        |connection\ attempt\ to\ [^,]+,\ 0\ data)              # MacOS & no-support
        $/x)
       {
-      $_ = $1 . " ... " . <IN>;
-      s/^(.* \.\.\.) [0-9: ]*connected$/$1  connected/;
-
-      if (/^Connecting to .* \.\.\.  connected$/)
+      $_ = <IN>;
+      if (/^connected$/)
        {
        $_ .= <IN>;
-       if (/^(Connecting to .* \.\.\.  )connected\n\s+SMTP(\(close\)>>|\(Connection refused\)<<)$/)
+       if (/^connected\n\s+SMTP(\(close\)>>|\(Connection refused\)<<)$/)
          {
-         $_ = $1 . "failed: Connection refused\n" . <IN>;
-         s/^(Connecting .*)\n\s+SMTP\(close\)>>$/$1/;
+         $_ = "failed: Connection refused\n" . <IN>;
+         s/^\n\s+SMTP\(close\)>>$/$1/;
          }
-       elsif (/^(Connecting to .* \.\.\.  connected\n)read response data: size=/)
+       elsif (/^(connected\n)read response data: size=/)
          { $_ = $1; }
 
        # Date/time in SMTP banner
@@ -1656,6 +1692,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     s/TLS error on connection from .*\K(SSL_accept: TCP connection closed by peer|\(gnutls_handshake\): The TLS connection was non-properly terminated.)/(tls lib accept fn): TCP connection closed by peer/;
     s/TLS session: \K\(gnutls_handshake\): rxd alert: No supported application protocol could be negotiated/(SSL_connect): error: <<detail omitted>>/;
     s/\(gnutls_handshake\): No common application protocol could be negotiated./(SSL_accept): error: <<detail omitted>>/;
+
+    # Not all buildfarm animals have ipv6
+    next if /<dns:fail> <DNS_(?:NOMATCH|AGAIN):.*:AAAA>$/ ;
     }
 
   # ======== mail ========
@@ -2080,7 +2119,7 @@ $munges =
     'timeout_errno' =>         # actual errno differs Solaris vs. Linux
     { 'mainlog' => 's/((?:host|message) deferral .* errno) <\d+> /$1 <EEE> /' },
 
-    'peer_terminated_conn' =>  # actual error differs FreedBSD vs. Linux
+    'peer_terminated_conn' =>  # actual error differs FreedBS/Solaris vs. Linux
     { 'stderr' => 's/^(  SMTP\()Connection reset by peer(\)<<)$/$1closed$2/' },
 
     'perl_variants' =>         # result of hash-in-scalar-context changed from bucket-fill to keycount
@@ -3339,7 +3378,7 @@ if (defined $parm_lookups{redis})
 
 sub check_running_dovecot
 {
-system('dovecot --version >/dev/null');
+system('dovecot --version >/dev/null 2>&1');
 if ($? == 0)
   {
   print "Dovecot appears to be available\n";
@@ -3640,7 +3679,7 @@ while (<EXIMINFO>)
     }
 
   elsif (/^Support for: (.*)/)
-    {
+    {                  # Compile-time features - exim -bV
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
@@ -4207,7 +4246,7 @@ DIR: for (my $i = 0; $i < @test_dirs; $i++)
         if (!defined $parm_malware{$1}) { $wantthis = 0; last; }
         }
       elsif (/^(not )?feature (.*)$/)
-        {
+        {                      #a macro name, or lack thereof - -bP macros
        # move to a subroutine?
        my $eximinfo = "$parm_exim -C $parm_cwd/test-config -DDIR=$parm_cwd -bP macro $2";
 
index 4d87755a21f7893e84ab62de6d0eed57692d8268..5f6fd60c35457e2b13282c8941bd4d07c3b3327b 100644 (file)
@@ -7,7 +7,7 @@ data
 Here is some data.
 .
 quit
-****               
+****
 exim -bh V4NET.9.8.7
 ehlo test.ex
 mail from:<>
@@ -16,7 +16,7 @@ data
 Here is some data.
 .
 quit
-****               
+****
 exim -bh V4NET.9.8.7 -DRRATELIMIT=0/1h/per_conn/strict -DDRATELIMIT=0/1h/per_conn/strict
 ehlo test.ex
 mail from:<>
index 85392b6a68c4569ae8130a2da221adf8cf42ec5b..ce16b584aea5489dfdbb1f0bb3af48813e6b17e7 100644 (file)
@@ -43,8 +43,5 @@ mail from:<"a b"@localhost3> SIZE=1234
 rset
 ehlo foo.bar
 mail from:"a b"@localhost4 SIZE=1234
-rset
-ehlo foo.bar
-mail from:<"a b"@localhost5> PRDR
 quit
 ****
index db793b065a8c66052261e07259759e3a3632323a..dceb1d2a9f1d87315534340a66e63e972d1c7eb6 100644 (file)
@@ -1,4 +1,5 @@
 # PIPELINING (client: errors, etc)
+munge peer_terminated_conn
 need_ipv4
 #
 server PORT_S
index 1712c888f6cec7f49d41d9ee8861ecb2c1a3ec78..b6f2663d7f86f41eabcf42c081c6a3f8c3d3b051 100644 (file)
@@ -2,10 +2,14 @@
 # Exim test configuration 0604
 #
 echo Note this takes 3 minutes to run
+# Build with -DMEASURE_TIMING if a performance test is wanted,
+# to lose the deliberate testsuite-mode delays.
+# Also, if a real 2-phase qrun is wanted, lose the queue_run_in_order
 #
 exim -DSERVER=server -bd -oX PORT_D
 ****
 #
+# Queue up 80 messages
 exim -bs
 helo test
 mail from:ralph@dustyshoes.tld
@@ -665,4 +669,3 @@ exim -qq
 #
 killdaemon
 no_msglog_check
-
diff --git a/test/scripts/0000-Basic/0637 b/test/scripts/0000-Basic/0637
new file mode 100644 (file)
index 0000000..7ed9b3c
--- /dev/null
@@ -0,0 +1,18 @@
+# mail before ehlo
+exim -bd -DSERVER=server -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+mail from:<u1@cus.cam.ac.uk>
+??? 503 HELO or EHLO required
+mail from:<u2@cus.cam.ac.uk>
+??? 503
+mail from:<u3@cus.cam.ac.uk>
+??? 503
+mail from:<u4@cus.cam.ac.uk>
+??? 503-
+??? 503 Too many
+???*
+****
+killdaemon
+no_stderr_check
diff --git a/test/scripts/2300-DBM/2301 b/test/scripts/2300-DBM/2301
deleted file mode 100644 (file)
index 9ba0c50..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# lookup dbmjz
-#
-exim -be
-${lookup{testid:test.example.invalid:userPassword}dbmjz{DIR/aux-fixed/TESTNUM.testsasldb}{$value}fail}
-****
diff --git a/test/scripts/2300-DBM/2302 b/test/scripts/2300-DBM/2302
deleted file mode 100644 (file)
index 4bdbc86..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# lookup dbmnz
-#
-exim -be '[${lookup{test}dbmnz{DIR/aux-fixed/TESTNUM.emptydbmnzlookup}}]'
-****
diff --git a/test/scripts/2301-DBM-BDB/2301 b/test/scripts/2301-DBM-BDB/2301
new file mode 100644 (file)
index 0000000..82ec19d
--- /dev/null
@@ -0,0 +1,7 @@
+# lookup dbmjz
+# NB: the reference DB file is a Berkeley DB;
+# builds for other hints-DB interface will fail
+#
+exim -be
+${lookup{testid:test.example.invalid:userPassword}dbmjz{DIR/aux-fixed/TESTNUM.testsasldb}{$value}fail}
+****
diff --git a/test/scripts/2301-DBM-BDB/2302 b/test/scripts/2301-DBM-BDB/2302
new file mode 100644 (file)
index 0000000..4c8b795
--- /dev/null
@@ -0,0 +1,6 @@
+# lookup dbmnz
+# NB: the reference DB file is a Berkeley DB;
+# builds for other hints-DB interface will fail
+#
+exim -be '[${lookup{test}dbmnz{DIR/aux-fixed/TESTNUM.emptydbmnzlookup}}]'
+****
diff --git a/test/scripts/2301-DBM-BDB/REQUIRES b/test/scripts/2301-DBM-BDB/REQUIRES
new file mode 100644 (file)
index 0000000..b96ff31
--- /dev/null
@@ -0,0 +1,2 @@
+lookup dbm
+feature _HAVE_HINTS_BDB
index f3937ec9127f064de1ff08b3f7247e409c0df7d5..ba524105d6fb9b74b5e69e0db789e0509da4064a 100644 (file)
@@ -18,6 +18,9 @@ ok,subdir:  ${lookup{TESTNUM.dir} dsearch,filter=subdir {DIR/aux-fixed}{$value}{
 fail,subdir(..):${lookup{..}          dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}}
 fail,subdir(.) :${lookup{.}           dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}}
 fail,subdir(f) :${lookup{TESTNUM.tst} dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}}
+ok,subdir(..d) :${lookup{..subdir}    dsearch,filter=subdir {DIR/aux-fixed/TESTNUM.dir}{$value}{FAIL}}
+fail.path:  ${lookup{TESTNUM.dir/regfile} dsearch          {DIR/aux-fixed}{$value}{FAIL}}
+ok.path:    ${lookup{TESTNUM.dir/regfile} dsearch,key=path {DIR/aux-fixed}{$value}{FAIL}}
 
 cachelayer tests
 fail:       ${lookup{test-data}   dsearch               {DIR/}          {$value}{FAIL}}
diff --git a/test/scripts/4040-wellknown/4040 b/test/scripts/4040-wellknown/4040
new file mode 100644 (file)
index 0000000..8ca4030
--- /dev/null
@@ -0,0 +1,157 @@
+# ESMTP WELLNOWN server response
+#
+# when WELLKNOWN leaves EXPERIMENTAL, add standalone tests
+# for ${xtextd:str} to 0002
+#
+#
+exim -DSERVER=server -bd -oX PORT_D:PORT_D2
+****
+#
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN acme-response
+??? 250-SIZE
+??? 250-
+??? 250-
+??? 250
+QUIT
+??? 221
+****
+#
+# not advertised conditional on hosts_wellknown
+client HOSTIPV4 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250 HELP
+QUIT
+??? 221
+****
+#
+# deny by acl
+client 127.0.0.1 PORT_D2
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN acme-response
+??? 550
+QUIT
+??? 221
+****
+#
+# nonexistent file
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN badfile
+??? 550
+QUIT
+??? 221
+****
+#
+killdaemon
+#
+exim -DSERVER=server -DOPT=,key=path -bd -oX PORT_D:PORT_D2
+****
+#
+# dsearch with key=path permission
+# basic good file
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN acme-response
+??? 250-SIZE
+??? 250-
+??? 250-
+??? 250
+QUIT
+??? 221
+****
+#
+# subdir/good file
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN sub/acme-response
+??? 250-SIZE
+??? 250-
+??? 250-
+??? 250
+QUIT
+??? 221
+****
+#
+# nonexistent file
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN sub/badfile
+??? 550
+QUIT
+??? 221
+****
+#
+# dotdot trap
+client 127.0.0.1 PORT_D
+??? 220
+EHLO test
+??? 250-
+??? 250-SIZE
+??? 250-LIMITS
+??? 250-8BITMIME
+??? 250-PIPELINING
+??? 250-WELLKNOWN
+??? 250 HELP
+WELLKNOWN ../badfile
+??? 550
+QUIT
+??? 221
+****
+#
+killdaemon
diff --git a/test/scripts/4040-wellknown/REQUIRES b/test/scripts/4040-wellknown/REQUIRES
new file mode 100644 (file)
index 0000000..457fc5f
--- /dev/null
@@ -0,0 +1 @@
+support ESMTP_Wellknown
index c6b6e76ff096b57d8c0e75725dbdb3be5f4282d2..bb62c199101ee83354354a3f2ca5243a013949d2 100644 (file)
@@ -1,5 +1,4 @@
-# Arbitrary expansion after transport
-# (EXPERIMENTAL_EVENT)
+# Events
 #
 need_ipv4
 munge timeout_errno
diff --git a/test/scripts/5700-events/5708 b/test/scripts/5700-events/5708
new file mode 100644 (file)
index 0000000..9cb9508
--- /dev/null
@@ -0,0 +1,62 @@
+# event on dns lookup fail
+
+exim -bd -DSERVER=server -oX PORT_D
+****
+#
+# no A record
+client 127.0.0.1 PORT_D
+??? 220
+HELO nonexistent.test.ex
+??? 250
+MAIL FROM:<a@b>
+??? 250
+RCPT TO:<c@d>
+??? 550
+QUIT
+??? 221
+****
+# CNAME to no-A-record
+client 127.0.0.1 PORT_D
+??? 220
+HELO badcname.test.ex
+??? 250
+MAIL FROM:<a@b>
+??? 250
+RCPT TO:<c@d>
+??? 550
+QUIT
+??? 221
+****
+# defer from dns lookup
+client 127.0.0.1 PORT_D
+??? 220
+HELO test.again.dns
+??? 250
+MAIL FROM:<a@b>
+??? 250
+RCPT TO:<c@d>
+??? 550
+QUIT
+??? 221
+****
+# success in RCPT ACL; no-A in transport
+client 127.0.0.1 PORT_D
+??? 220
+HELO localhost
+??? 250
+MAIL FROM:<a@b>
+??? 250
+RCPT TO:<bad_A@nonexistent.test.ex>
+??? 250 Accepted
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+#
+sleep 1
+killdaemon
+no_msglog_check
diff --git a/test/scripts/5709_dnsdb_events/5709 b/test/scripts/5709_dnsdb_events/5709
new file mode 100644 (file)
index 0000000..583df5f
--- /dev/null
@@ -0,0 +1,19 @@
+# event on dnsdb lookup fail
+#
+exim -bd -DSERVER=server -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+HELO nonexistent.test.ex
+??? 250
+HELO badcname.test.ex
+??? 250
+HELO test.again.dns
+??? 250
+HELO localhost
+??? 250
+QUIT
+??? 221
+****
+killdaemon
+no_stderr_check
diff --git a/test/scripts/5709_dnsdb_events/REQUIRES b/test/scripts/5709_dnsdb_events/REQUIRES
new file mode 100644 (file)
index 0000000..22e0978
--- /dev/null
@@ -0,0 +1,2 @@
+lookup dnsdb
+support Event
index 593731a8dd7e6113ea50f4a81643cd1373af108c..2b8eed427d964f8a7c0010a5f9efd257f3f8de9b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  USER=CALLER
 configuration file is TESTSUITE/test-config
@@ -126,6 +127,7 @@ try option unknown_login
   ╰─────result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
+ a.b.c in "a.b.c"? no (end of list)
  ├──condition: match_address{a.b.c}{a.b.c}
  ├─────result: false
   ╭───scanning: yes}{no}}
@@ -159,6 +161,7 @@ LOG: MAIN PANIC
  ╰─────result: protected:░░
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  USER=CALLER
 configuration file is TESTSUITE/test-config
@@ -278,6 +281,7 @@ try option unknown_login
   \_____result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
+ a.b.c in "a.b.c"? no (end of list)
  |--condition: match_address{a.b.c}{a.b.c}
  |-----result: false
   /---scanning: yes}{no}}
@@ -311,6 +315,7 @@ LOG: MAIN PANIC
  \_____result: protected:  
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  USER=CALLER
 configuration file is TESTSUITE/test-config
@@ -390,6 +395,7 @@ try option unknown_login
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 1999-03-02 09:44:33 no host name found for IP address V4NET.11.12.13
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  USER=CALLER
 configuration file is TESTSUITE/test-config
@@ -492,7 +498,9 @@ try option unknown_login
  ├considering: $sender_host_name
 looking up host name for V4NET.0.0.1
 IP address lookup yielded "ten-1.test.ex"
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+  check dnssec require list
+  check dnssec request list
+  ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 checking addresses for ten-1.test.ex
   V4NET.0.0.1 OK
 sender_fullhost = ten-1.test.ex [V4NET.0.0.1]
@@ -512,6 +520,7 @@ sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1] ident=me)
             ╰──(tainted)
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -542,12 +551,16 @@ host in "<
  list element: partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 sender host name required, to match against partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 looking up host name for V4NET.0.0.1
-DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) succeeded
+  DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) using fakens
+  DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "ten-1.test.ex"
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+  check dnssec require list
+   ten-1.test.ex not in empty list (option unset? cannot trace name)
+  check dnssec request list
+   ten-1.test.ex not in empty list (option unset? cannot trace name)
+  DNS lookup of ten-1.test.ex (A) using fakens
+  DNS lookup of ten-1.test.ex (A) succeeded
+  ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 checking addresses for ten-1.test.ex
 Forward DNS security status: unverified
   V4NET.0.0.1 OK
@@ -576,6 +589,7 @@ LOG: connection_reject MAIN REJECT
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1239
 configuration file is TESTSUITE/test-config
@@ -775,6 +789,7 @@ LOG: 10HmbD-000000005vi-0000 Subject is: " here we go: a string that is going to
 >>> end of ACL "check_data": DENY
 LOG: 10HmbD-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=p1240
 configuration file is TESTSUITE/test-config
index e8f65c37615a4064f5f8771948bd89e35547ca5d..e39281b379de15faa142b00b88effcf29ca8979e 100644 (file)
@@ -253,9 +253,12 @@ LOG: H=(test) [1.1.1.1] F=<bY@G.H> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -281,9 +284,12 @@ LOG: H=(test) [1.1.1.1] F=<bY@G.H> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -423,9 +429,12 @@ LOG: H=(test) [1.1.1.1] F=<CC@DD.COM> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 8da1bf2e4f46cfb9570af0c1ab92b1120f6522dc..d53e345cd64e2ee24ce26ab8b2968d17dead5b17 100644 (file)
@@ -74,9 +74,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -103,9 +106,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -132,9 +138,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -161,9 +170,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -193,9 +205,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -225,9 +240,12 @@ LOG: H=(test) [1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -272,9 +290,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -301,9 +322,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -330,9 +354,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -359,9 +386,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -388,9 +418,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -537,9 +570,12 @@ LOG: H=(test) [1.1.1.1] F=<CC@DD.COM> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -666,9 +702,12 @@ LOG: H=(test) [1.1.1.1] F=<Pp@Qq.com> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -695,9 +734,12 @@ LOG: H=(test) [1.1.1.1] F=<Pp@Qq.com> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -766,9 +808,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@aa.bb> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -795,9 +840,12 @@ LOG: H=(test) [1.1.1.1] F=<ax@aa.bb> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -845,9 +893,12 @@ LOG: H=(test) [1.1.1.1] F=<BY@aa.bb> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -874,9 +925,12 @@ LOG: H=(test) [1.1.1.1] F=<BY@aa.bb> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 5e9e4259f25855880548dc8423e439f409be9f23..e27c115008db98cdb5c22ff70bd1e21c62664b8e 100644 (file)
@@ -4,6 +4,10 @@
 >>>  host in host_lookup? yes (matched "10.250.104.0/21")
 >>> looking up host name for 10.250.104.42
 >>> IP address lookup yielded "manyhome.test.ex"
+>>>  check dnssec require list
+>>>   manyhome.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   manyhome.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for manyhome.test.ex
 >>>   10.250.107.163
 >>>   10.250.109.49
index 59251c0b6a0ebabf36143acb87831bd8f9cb408e..e838cb3725e54da377b732f647457224909d2c71 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -83,9 +84,9 @@ ok@test1 in "ok@test1 : ok@test3"?
   test1 in "test1"? yes (matched "test1")
  ok@test1 in "ok@test1 : ok@test3"? yes (matched "ok@test1")
 check verify = sender
-ok in "!bad"?
+ok in local_parts?
  list element: !bad
-ok in "!bad"? yes (end of list)
+ok in local_parts? yes (end of list)
 ----------- end verify ------------
 sender ok@test1 verified ok
 check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argument"
@@ -157,6 +158,7 @@ LOG: smtp_connection MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -222,9 +224,9 @@ ok@test3 in "ok@test1 : ok@test3"?
   test3 in "test3"? yes (matched "test3")
  ok@test3 in "ok@test1 : ok@test3"? yes (matched "ok@test3")
 check verify = sender
-ok in "!bad"?
+ok in local_parts?
  list element: !bad
-ok in "!bad"? yes (end of list)
+ok in local_parts? yes (end of list)
 ----------- end verify ------------
 sender ok@test3 verified ok
 check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argument"
@@ -282,13 +284,15 @@ end of ACL "rcpt": ACCEPT
 LOG: MAIN
   <= ok@test3 H=[10.9.8.8] U=CALLER P=smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-x in "!bad"?
+x in local_parts?
  list element: !bad
-x in "!bad"? yes (end of list)
+x in local_parts? yes (end of list)
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => x <x@y> R=accept T=appendfile
 LOG: MAIN
index ae03e73170180d12344c1301c9cc75b87aa35f02..b803208c56b0c8c320a5f5b14ed74fb480017cb0 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -79,6 +80,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -162,6 +164,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -379,9 +382,12 @@ LOG: H=(test) [V4NET.9.8.7] F=<x@y> rejected RCPT <host_check@y>: host data >A h
 >>> check hosts = +some_hosts
 >>> host in "+some_hosts"?
 >>>  list element: +some_hosts
->>>  host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"?
->>>   list element: net-lsearch;TESTSUITE/aux-var/0022.hosts
->>>   host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"? yes (matched "net-lsearch;TESTSUITE/aux-var/0022.hosts")
+>>>   start sublist some_hosts
+>>>    host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"?
+>>>    ╎list element: net-lsearch;TESTSUITE/aux-var/0022.hosts
+>>>    ╎host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"? yes (matched "net-lsearch;TESTSUITE/aux-var/0022.hosts")
+>>>   end sublist some_hosts
+>>>  data from lookup saved for cache for +some_hosts: key 'V4NET.9.8.7' value 'A host-specific message'
 >>>  host in "+some_hosts"? yes (matched "+some_hosts")
 >>> deny: condition test succeeded in ACL "host_check2"
 >>> end of ACL "host_check2": DENY
@@ -392,6 +398,9 @@ LOG: H=(test) [V4NET.9.8.7] F=<x@y> rejected RCPT <host_check2@y>: host data >A
 >>> check hosts = +some_hosts
 >>> host in "+some_hosts"?
 >>>  list element: +some_hosts
+>>>   start sublist some_hosts
+>>>  cached yes match for +some_hosts
+>>>  cached lookup data = A host-specific message
 >>>  host in "+some_hosts"? yes (matched "+some_hosts" - cached)
 >>> deny: condition test succeeded in ACL "host_check2"
 >>> end of ACL "host_check2": DENY
index 4645a98a9198cbb9de9ac3809ec3bebd634e0352..78783ded61cfee2679156eee5d32ba4bf6c0fbcb 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>>   message: $domain gets refused
 >>> check domains = !refuse.test.ex
 >>> check domains = +local_domains
 >>> z in "+local_domains"?
 >>>  list element: +local_domains
->>>  z in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>  z in "test.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    z in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    z in "test.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> z in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "acl_1_2_3"
 >>> processing "accept" (TESTSUITE/test-config 60)
 >>> check domains = +relay_domains
 >>> z in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  z in "relay.test.ex"?
->>>   list element: relay.test.ex
->>>  z in "relay.test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    z in "relay.test.ex"?
+>>>    ╎list element: relay.test.ex
+>>>    z in "relay.test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> z in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "acl_1_2_3"
 >>> processing "accept" (TESTSUITE/test-config 61)
 >>> check domains = +relay_domains
 >>> z in "+relay_domains"?
 >>>  list element: +relay_domains
+>>>   start sublist relay_domains
+>>>  cached no match for +relay_domains
+>>>  cached lookup data = NULL
 >>> z in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "acl_1_2_3"
 >>> end of ACL "acl_1_2_3": implicit DENY
@@ -125,9 +135,12 @@ LOG: H=(test) [1.2.3.4] F=<x@y> rejected RCPT <z@z>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>>   message: $domain gets refused
 >>> check domains = !refuse.test.ex
@@ -163,9 +176,12 @@ LOG: H=(test) [1.2.3.4] F=<x@y> rejected RCPT <z@z>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>>   message: $domain gets refused
 >>> check domains = !refuse.test.ex
@@ -201,10 +217,13 @@ LOG: H=(test) [1.2.3.4] F=<x@y> rejected RCPT <z@z>
 >>> check domains = +local_domains
 >>> relay.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  relay.test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>   relay.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   start sublist local_domains
+>>>    relay.test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    ╎relay.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'relay.test.ex' value '*.test.ex'
 >>>  relay.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>>   message: $domain gets refused
 >>> check domains = !refuse.test.ex
@@ -265,10 +284,13 @@ LOG: H=(test) [1.2.3.4] F=<x@y> rejected RCPT <x@deny.test.ex>: DOMAIN EXPLICITL
 >>> check domains = +local_domains
 >>> refuse.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  refuse.test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>   refuse.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   start sublist local_domains
+>>>    refuse.test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    ╎refuse.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'refuse.test.ex' value '*.test.ex'
 >>>  refuse.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>>   message: $domain gets refused
 >>> check domains = !refuse.test.ex
@@ -380,9 +402,11 @@ LOG: H=(test) [5.6.7.8] F=<x@y> rejected RCPT <x@test.ex>
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
->>>  host in "9.9.9.9"?
->>>   list element: 9.9.9.9
->>>   host in "9.9.9.9"? yes (matched "9.9.9.9")
+>>>   start sublist ok9_hosts
+>>>    host in "9.9.9.9"?
+>>>    ╎list element: 9.9.9.9
+>>>    ╎host in "9.9.9.9"? yes (matched "9.9.9.9")
+>>>   end sublist ok9_hosts
 >>>  host in "+ok9_hosts"? yes (matched "+ok9_hosts")
 >>> accept: condition test succeeded in ACL "acl_9_9_9"
 >>> end of ACL "acl_9_9_9": ACCEPT
@@ -391,6 +415,9 @@ LOG: H=(test) [5.6.7.8] F=<x@y> rejected RCPT <x@test.ex>
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
+>>>   start sublist ok9_hosts
+>>>  cached yes match for +ok9_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+ok9_hosts"? yes (matched "+ok9_hosts" - cached)
 >>> accept: condition test succeeded in ACL "acl_9_9_9"
 >>> end of ACL "acl_9_9_9": ACCEPT
@@ -411,9 +438,11 @@ LOG: H=(test) [5.6.7.8] F=<x@y> rejected RCPT <x@test.ex>
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
->>>  host in "9.9.9.9"?
->>>   list element: 9.9.9.9
->>>  host in "9.9.9.9"? no (end of list)
+>>>   start sublist ok9_hosts
+>>>    host in "9.9.9.9"?
+>>>    ╎list element: 9.9.9.9
+>>>    host in "9.9.9.9"? no (end of list)
+>>>   end sublist ok9_hosts
 >>> host in "+ok9_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "acl_9_9_9"
 >>> processing "deny" (TESTSUITE/test-config 92)
@@ -430,6 +459,9 @@ LOG: H=(test) [9.9.9.8] F=<x@y> rejected RCPT <x@y>: don't like this host
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
+>>>   start sublist ok9_hosts
+>>>  cached no match for +ok9_hosts
+>>>  cached lookup data = NULL
 >>> host in "+ok9_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "acl_9_9_9"
 >>> processing "deny" (TESTSUITE/test-config 92)
@@ -458,9 +490,11 @@ LOG: H=(test) [9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
->>>  host in "9.9.9.9"?
->>>   list element: 9.9.9.9
->>>  host in "9.9.9.9"? no (end of list)
+>>>   start sublist ok9_hosts
+>>>    host in "9.9.9.9"?
+>>>    ╎list element: 9.9.9.9
+>>>    host in "9.9.9.9"? no (end of list)
+>>>   end sublist ok9_hosts
 >>> host in "+ok9_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "acl_9_9_9"
 >>> processing "deny" (TESTSUITE/test-config 92)
@@ -482,6 +516,9 @@ LOG: H=(test) [9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
 >>> check hosts = +ok9_hosts
 >>> host in "+ok9_hosts"?
 >>>  list element: +ok9_hosts
+>>>   start sublist ok9_hosts
+>>>  cached no match for +ok9_hosts
+>>>  cached lookup data = NULL
 >>> host in "+ok9_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "acl_9_9_9"
 >>> processing "deny" (TESTSUITE/test-config 92)
@@ -520,9 +557,11 @@ LOG: H=(test) [9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
 >>>   list element: domain2
 >>>  y in "domain2"? no (end of list)
 >>>  list element: +ok_senders
->>>  x@y in "ok@ok.ok"?
->>>   list element: ok@ok.ok
->>>  x@y in "ok@ok.ok"? no (end of list)
+>>>   start sublist ok_senders
+>>>    x@y in "ok@ok.ok"?
+>>>    ╎list element: ok@ok.ok
+>>>    x@y in "ok@ok.ok"? no (end of list)
+>>>   end sublist ok_senders
 >>> x@y in "user1@domain1 : domain2 : +ok_senders"? no (end of list)
 >>> accept: condition test failed in ACL "acl_5_6_8"
 >>> end of ACL "acl_5_6_8": implicit DENY
@@ -537,6 +576,9 @@ LOG: H=(test) [5.6.8.1] F=<x@y> rejected RCPT <x@y>
 >>>   list element: domain2
 >>>  y in "domain2"? no (end of list)
 >>>  list element: +ok_senders
+>>>   start sublist ok_senders
+>>>  cached no match for +ok_senders
+>>>  cached lookup data = NULL
 >>> x@y in "user1@domain1 : domain2 : +ok_senders"? no (end of list)
 >>> accept: condition test failed in ACL "acl_5_6_8"
 >>> end of ACL "acl_5_6_8": implicit DENY
@@ -565,9 +607,11 @@ LOG: H=(test) [5.6.8.1] F=<x@y> rejected RCPT <y@x>
 >>>   list element: domain2
 >>>  domain1 in "domain2"? no (end of list)
 >>>  list element: +ok_senders
->>>  user2@domain1 in "ok@ok.ok"?
->>>   list element: ok@ok.ok
->>>  user2@domain1 in "ok@ok.ok"? no (end of list)
+>>>   start sublist ok_senders
+>>>    user2@domain1 in "ok@ok.ok"?
+>>>    ╎list element: ok@ok.ok
+>>>    user2@domain1 in "ok@ok.ok"? no (end of list)
+>>>   end sublist ok_senders
 >>> user2@domain1 in "user1@domain1 : domain2 : +ok_senders"? no (end of list)
 >>> accept: condition test failed in ACL "acl_5_6_8"
 >>> end of ACL "acl_5_6_8": implicit DENY
@@ -597,12 +641,15 @@ LOG: H=(test) [5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
 >>>   list element: domain2
 >>>  ok.ok in "domain2"? no (end of list)
 >>>  list element: +ok_senders
->>>  ok@ok.ok in "ok@ok.ok"?
->>>   list element: ok@ok.ok
->>>   ok.ok in "ok.ok"?
->>>    list element: ok.ok
->>>    ok.ok in "ok.ok"? yes (matched "ok.ok")
->>>   ok@ok.ok in "ok@ok.ok"? yes (matched "ok@ok.ok")
+>>>   start sublist ok_senders
+>>>    ok@ok.ok in "ok@ok.ok"?
+>>>    ╎list element: ok@ok.ok
+>>>    ╎ok.ok in "ok.ok"?
+>>>    ╎ list element: ok.ok
+>>>    ╎ ok.ok in "ok.ok"? yes (matched "ok.ok")
+>>>    ╎ok@ok.ok in "ok@ok.ok"? yes (matched "ok@ok.ok")
+>>>   end sublist ok_senders
+>>>  data from lookup saved for cache for +ok_senders: key 'ok@ok.ok' value 'ok@ok.ok'
 >>>  ok@ok.ok in "user1@domain1 : domain2 : +ok_senders"? yes (matched "+ok_senders")
 >>> accept: condition test succeeded in ACL "acl_5_6_8"
 >>> end of ACL "acl_5_6_8": ACCEPT
@@ -616,6 +663,9 @@ LOG: H=(test) [5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
 >>>   list element: domain2
 >>>  ok.ok in "domain2"? no (end of list)
 >>>  list element: +ok_senders
+>>>   start sublist ok_senders
+>>>  cached yes match for +ok_senders
+>>>  cached lookup data = ok@ok.ok
 >>>  ok@ok.ok in "user1@domain1 : domain2 : +ok_senders"? yes (matched "+ok_senders" - cached)
 >>> accept: condition test succeeded in ACL "acl_5_6_8"
 >>> end of ACL "acl_5_6_8": ACCEPT
@@ -990,16 +1040,16 @@ LOG: H=(test) [V4NET.11.12.13] F=<x@y> rejected RCPT <x1@y>: DNSLIST (rbl.test.e
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@y
->>> x in "^ok"?
+>>> x in local_parts?
 >>>  list element: ^ok
->>> x in "^ok"? no (end of list)
->>> x in "^userx : ^cond-"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x in "^userx : ^cond-"? no (end of list)
->>> x in "fail"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: fail
->>> x in "fail"? no (end of list)
+>>> x in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> accept: condition test failed in ACL "acl_20_20_20"
@@ -1032,12 +1082,12 @@ LOG: H=(test) [20.20.20.20] F=<x@y> rejected RCPT <x2@y>: Sender verify failed
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@y
->>> userx in "^ok"?
+>>> userx in local_parts?
 >>>  list element: ^ok
->>> userx in "^ok"? no (end of list)
->>> userx in "^userx : ^cond-"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: ^userx
->>>  userx in "^userx : ^cond-"? yes (matched "^userx")
+>>>  userx in local_parts? yes (matched "^userx")
 >>> calling r1 router
 >>> routed by r1 router
 >>> ----------- end verify ------------
@@ -1045,16 +1095,16 @@ LOG: H=(test) [20.20.20.20] F=<x@y> rejected RCPT <x2@y>: Sender verify failed
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x1@y
->>> x1 in "^ok"?
+>>> x1 in local_parts?
 >>>  list element: ^ok
->>> x1 in "^ok"? no (end of list)
->>> x1 in "^userx : ^cond-"?
+>>> x1 in local_parts? no (end of list)
+>>> x1 in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x1 in "^userx : ^cond-"? no (end of list)
->>> x1 in "fail"?
+>>> x1 in local_parts? no (end of list)
+>>> x1 in local_parts?
 >>>  list element: fail
->>> x1 in "fail"? no (end of list)
+>>> x1 in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> accept: condition test failed in ACL "acl_20_20_20"
@@ -1069,12 +1119,12 @@ LOG: H=(test) [20.20.20.20] F=<userx@y> rejected RCPT <x1@y>: Unrouteable addres
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@y
->>> userx in "^ok"?
+>>> userx in local_parts?
 >>>  list element: ^ok
->>> userx in "^ok"? no (end of list)
->>> userx in "^userx : ^cond-"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: ^userx
->>>  userx in "^userx : ^cond-"? yes (matched "^userx")
+>>>  userx in local_parts? yes (matched "^userx")
 >>> calling r1 router
 >>> routed by r1 router
 >>> ----------- end verify ------------
@@ -1097,28 +1147,28 @@ LOG: H=(test) [20.20.20.20] F=<userx@y> rejected RCPT <x1@y>: Unrouteable addres
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@y
->>> userx in "^ok"?
+>>> userx in local_parts?
 >>>  list element: ^ok
->>> userx in "^ok"? no (end of list)
->>> userx in "^userx : ^cond-"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: ^userx
->>>  userx in "^userx : ^cond-"? yes (matched "^userx")
+>>>  userx in local_parts? yes (matched "^userx")
 >>> calling r1 router
 >>> routed by r1 router
 >>> ----------- end verify ------------
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x1@y
->>> x1 in "^ok"?
+>>> x1 in local_parts?
 >>>  list element: ^ok
->>> x1 in "^ok"? no (end of list)
->>> x1 in "^userx : ^cond-"?
+>>> x1 in local_parts? no (end of list)
+>>> x1 in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x1 in "^userx : ^cond-"? no (end of list)
->>> x1 in "fail"?
+>>> x1 in local_parts? no (end of list)
+>>> x1 in local_parts?
 >>>  list element: fail
->>> x1 in "fail"? no (end of list)
+>>> x1 in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> accept: condition test failed in ACL "acl_21_21_21"
@@ -1131,12 +1181,12 @@ LOG: H=(test) [21.21.21.21] F=<userx@y> rejected RCPT <x1@y>: Unrouteable addres
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@y
->>> userx in "^ok"?
+>>> userx in local_parts?
 >>>  list element: ^ok
->>> userx in "^ok"? no (end of list)
->>> userx in "^userx : ^cond-"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: ^userx
->>>  userx in "^userx : ^cond-"? yes (matched "^userx")
+>>>  userx in local_parts? yes (matched "^userx")
 >>> calling r1 router
 >>> routed by r1 router
 >>> ----------- end verify ------------
@@ -1149,16 +1199,16 @@ LOG: H=(test) [21.21.21.21] F=<userx@y> rejected RCPT <x1@y>: Unrouteable addres
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing fail@y
->>> fail in "^ok"?
+>>> fail in local_parts?
 >>>  list element: ^ok
->>> fail in "^ok"? no (end of list)
->>> fail in "^userx : ^cond-"?
+>>> fail in local_parts? no (end of list)
+>>> fail in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> fail in "^userx : ^cond-"? no (end of list)
->>> fail in "fail"?
+>>> fail in local_parts? no (end of list)
+>>> fail in local_parts?
 >>>  list element: fail
->>>  fail in "fail"? yes (matched "fail")
+>>>  fail in local_parts? yes (matched "fail")
 >>> calling r2 router
 >>> r2 router forced address failure
 >>> ----------- end verify ------------
@@ -1170,16 +1220,16 @@ LOG: H=(test) [21.21.21.21] F=<userx@y> rejected RCPT <fail@y>: here is a fail m
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@y
->>> x in "^ok"?
+>>> x in local_parts?
 >>>  list element: ^ok
->>> x in "^ok"? no (end of list)
->>> x in "^userx : ^cond-"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x in "^userx : ^cond-"? no (end of list)
->>> x in "fail"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: fail
->>> x in "fail"? no (end of list)
+>>> x in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> accept: condition test failed in ACL "acl_21_21_21"
@@ -1201,16 +1251,16 @@ LOG: H=(test) [21.21.21.21] F=<x@y> rejected RCPT <x2@y>: Sender verify failed
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing fail@y
->>> fail in "^ok"?
+>>> fail in local_parts?
 >>>  list element: ^ok
->>> fail in "^ok"? no (end of list)
->>> fail in "^userx : ^cond-"?
+>>> fail in local_parts? no (end of list)
+>>> fail in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> fail in "^userx : ^cond-"? no (end of list)
->>> fail in "fail"?
+>>> fail in local_parts? no (end of list)
+>>> fail in local_parts?
 >>>  list element: fail
->>>  fail in "fail"? yes (matched "fail")
+>>>  fail in local_parts? yes (matched "fail")
 >>> calling r2 router
 >>> r2 router forced address failure
 >>> ----------- end verify ------------
@@ -1272,16 +1322,16 @@ LOG: H=(test) [22.22.22.22] F=<userx@y> rejected RCPT <userx@y>
 >>> check !verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@y
->>> x in "^ok"?
+>>> x in local_parts?
 >>>  list element: ^ok
->>> x in "^ok"? no (end of list)
->>> x in "^userx : ^cond-"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x in "^userx : ^cond-"? no (end of list)
->>> x in "fail"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: fail
->>> x in "fail"? no (end of list)
+>>> x in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> deny: condition test succeeded in ACL "acl_23_23_23"
@@ -1298,12 +1348,12 @@ LOG: H=(test) [23.23.23.0] F=<x@y> rejected RCPT <userx@y>: Sender verify failed
 >>> check !verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@y
->>> userx in "^ok"?
+>>> userx in local_parts?
 >>>  list element: ^ok
->>> userx in "^ok"? no (end of list)
->>> userx in "^userx : ^cond-"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: ^userx
->>>  userx in "^userx : ^cond-"? yes (matched "^userx")
+>>>  userx in local_parts? yes (matched "^userx")
 >>> calling r1 router
 >>> routed by r1 router
 >>> ----------- end verify ------------
@@ -1504,8 +1554,16 @@ LOG: H=(test) [28.28.28.28] F=<a@baddomain> rejected RCPT <x@y>
 >>> looking up host name for V4NET.0.0.3
 >>> IP address lookup yielded "ten-3.test.ex"
 >>>   alias "ten-3-alias.test.ex"
+>>>  check dnssec require list
+>>>   ten-3.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-3.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3.test.ex
 >>>   V4NET.0.0.3 OK
+>>>  check dnssec require list
+>>>   ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3-alias.test.ex
 >>>   V4NET.0.0.3 OK
 >>> require: condition test succeeded in ACL "acl_V4NET_0_0"
@@ -1557,7 +1615,11 @@ LOG: H=(test) [V4NET.0.0.97] F=<> rejected RCPT <x@y>: host lookup failed for re
 >>> looking up host name to force name/address consistency check
 >>> looking up host name for V4NET.99.99.96
 >>> IP address lookup yielded "x.test.again.dns"
->>> x.test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  check dnssec require list
+>>>   x.test.again.dns not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   x.test.again.dns not in empty list (option unset? cannot trace name)
+>>>  x.test.again.dns in dns_again_means_nonexist? no (option unset)
 >>> temporary error for host name lookup
 >>> accept: condition test deferred in ACL "acl_V4NET_99_99"
 LOG: H=(test) [V4NET.99.99.96] F=<> temporarily rejected RCPT <x@y>: host lookup deferred for reverse lookup check
@@ -1583,7 +1645,11 @@ LOG: H=(test) [V4NET.99.99.96] F=<> temporarily rejected RCPT <x@y>: host lookup
 >>> looking up host name to force name/address consistency check
 >>> looking up host name for V4NET.99.99.96
 >>> IP address lookup yielded "x.test.again.dns"
->>> x.test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  check dnssec require list
+>>>   x.test.again.dns not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   x.test.again.dns not in empty list (option unset? cannot trace name)
+>>>  x.test.again.dns in dns_again_means_nonexist? no (option unset)
 >>> temporary error for host name lookup
 >>> accept: condition test succeeded in ACL "acl_V4NET_99_99"
 >>> end of ACL "acl_V4NET_99_99": ACCEPT
@@ -1720,16 +1786,16 @@ LOG: dnslist query is too long (ignored): y+extra+extra+extra+extra+extra+extra+
 >>> check verify = sender/no_details
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@y
->>> x in "^ok"?
+>>> x in local_parts?
 >>>  list element: ^ok
->>> x in "^ok"? no (end of list)
->>> x in "^userx : ^cond-"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: ^userx
 >>>  list element: ^cond-
->>> x in "^userx : ^cond-"? no (end of list)
->>> x in "fail"?
+>>> x in local_parts? no (end of list)
+>>> x in local_parts?
 >>>  list element: fail
->>> x in "fail"? no (end of list)
+>>> x in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> accept: condition test failed in ACL "acl_33_33_33"
index 1f91e3d18f8f88415d62c00493038a02c47edb89..584120ca521821ecba506319a6e16a3e004b2451 100644 (file)
@@ -1,10 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -15,7 +17,6 @@ ssss bytes read from TESTSUITE/aux-var/0037.F
 data is an Exim filter program
 Filter: start of processing
 Filter: end of processing
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: filter-userx@test.ex
 unique = filter-userx@test.ex
@@ -25,14 +26,17 @@ routing filter-userx@test.ex
 --------> check_vars router <--------
 local_part=filter-userx domain=test.ex
 checking local_parts
+filter-userx in local_parts? no (end of list)
 check_vars router skipped: local_parts mismatch
 --------> fail_read_filter router <--------
 local_part=filter-userx domain=test.ex
 checking local_parts
+filter-userx in local_parts? no (end of list)
 fail_read_filter router skipped: local_parts mismatch
 --------> prepend_filter router <--------
 local_part=filter-userx domain=test.ex
 checking local_parts
+filter-userx in local_parts? no (end of list)
 prepend_filter router skipped: local_parts mismatch
 --------> userfilter router <--------
 local_part=filter-userx domain=test.ex
@@ -53,7 +57,6 @@ userfilter router generated userx@test.ex
 routed by userfilter router
   envelope to: filter-userx@test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
 unique = userx@test.ex
@@ -63,22 +66,27 @@ routing userx@test.ex
 --------> check_vars router <--------
 local_part=userx domain=test.ex
 checking local_parts
+userx in local_parts? no (end of list)
 check_vars router skipped: local_parts mismatch
 --------> fail_read_filter router <--------
 local_part=userx domain=test.ex
 checking local_parts
+userx in local_parts? no (end of list)
 fail_read_filter router skipped: local_parts mismatch
 --------> prepend_filter router <--------
 local_part=userx domain=test.ex
 checking local_parts
+userx in local_parts? no (end of list)
 prepend_filter router skipped: local_parts mismatch
 --------> userfilter router <--------
 local_part=userx domain=test.ex
 checking local_parts
+userx in local_parts? no (end of list)
 userfilter router skipped: local_parts mismatch
 --------> user_accept1 router <--------
 local_part=userx domain=test.ex
 checking local_parts
+userx in local_parts? no (end of list)
 user_accept1 router skipped: local_parts mismatch
 --------> user_accept2 router <--------
 local_part=userx domain=test.ex
@@ -101,7 +109,7 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1241 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx <filter-userx@test.ex> R=user_accept2 T=appendfile
 LOG: MAIN
index c25d0597e3e701cd1a1db873ae22214070548653..8ffd7dbb164cb7ad15ef1c6bc3af9939ebfbe615 100644 (file)
@@ -70,10 +70,10 @@ LOG: H=[1.1.1.1] rejected VRFY hardfail@test.ex: 599 custom reject
 >>> routing ok_with_dom@test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for ok_with_dom@test.ex
->>> ok_with_dom in "userx : ok_with_dom : acceptable"?
+>>> ok_with_dom in local_parts?
 >>>  list element: userx
 >>>  list element: ok_with_dom
->>>  ok_with_dom in "userx : ok_with_dom : acceptable"? yes (matched "ok_with_dom")
+>>>  ok_with_dom in local_parts? yes (matched "ok_with_dom")
 >>> calling localuser router
 >>> routed by localuser router
 >>> using ACL "check_expn"
@@ -116,11 +116,11 @@ LOG: H=[1.1.1.1] rejected EXPN postmaster
 >>> routing acceptable@test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for acceptable@test.ex
->>> acceptable in "userx : ok_with_dom : acceptable"?
+>>> acceptable in local_parts?
 >>>  list element: userx
 >>>  list element: ok_with_dom
 >>>  list element: acceptable
->>>  acceptable in "userx : ok_with_dom : acceptable"? yes (matched "acceptable")
+>>>  acceptable in local_parts? yes (matched "acceptable")
 >>> calling localuser router
 >>> routed by localuser router
 >>> host in hosts_connection_nolog? no (option unset)
index e12a185667931cda0f673cad65e732e123509b01..cb999fb99740dd4030160eced3a91a5492789157 100644 (file)
 >>> end of inline ACL: ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "expan"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: expan
->>> userx in "expan"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> processing "accept" (TESTSUITE/test-config 47)
 >>> end of inline ACL: ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junkjunk@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> junkjunk in "expan"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> junkjunk in local_parts?
 >>>  list element: expan
->>> junkjunk in "expan"? no (end of list)
->>> junkjunk in "userx"?
+>>> junkjunk in local_parts? no (end of list)
+>>> junkjunk in local_parts?
 >>>  list element: userx
->>> junkjunk in "userx"? no (end of list)
+>>> junkjunk in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for junkjunk@test.ex H=[1.1.1.1]
 >>> processing "accept" (TESTSUITE/test-config 47)
@@ -52,15 +58,18 @@ LOG: VRFY failed for junkjunk@test.ex H=[1.1.1.1]
 >>> end of inline ACL: ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing expan@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> expan in "expan"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> expan in local_parts?
 >>>  list element: expan
->>>  expan in "expan"? yes (matched "expan")
+>>>  expan in local_parts? yes (matched "expan")
 >>> calling fail_expansion router
 >>> fail_expansion router: defer for expan@test.ex
 >>>   message: failed to expand "${if with syntax error": unknown condition "with"
index 083e2608899fc45ce0157c22db31a9da826d6e8e..381e84917111c36698ca639a901773c7a2ddd8cd 100644 (file)
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junkjunk@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> system_aliases router declined for junkjunk@exim.test.ex
->>> junkjunk in "userx"?
+>>> junkjunk in local_parts?
 >>>  list element: userx
->>> junkjunk in "userx"? no (end of list)
+>>> junkjunk in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> require: condition test failed in ACL "check_recipient"
@@ -58,27 +61,33 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing postmaster@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> routed by system_aliases router
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -88,27 +97,33 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing postmaster@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> routed by system_aliases router
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -117,9 +132,12 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
 >>> check domains = +local_domains
 >>> exim.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
 >>>  exim.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -139,17 +157,20 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junkjunk@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> system_aliases router declined for junkjunk@exim.test.ex
->>> junkjunk in "userx"?
+>>> junkjunk in local_parts?
 >>>  list element: userx
->>> junkjunk in "userx"? no (end of list)
+>>> junkjunk in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> deny: condition test succeeded in ACL "check_recipient"
@@ -171,12 +192,15 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<postmaster@exim.test.ex> rejected RCPT j
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing fail@exim.test.ex
->>> exim.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
->>>  exim.test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> exim.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
+>>>  exim.test.ex in domains? no (matched "! +local_domains")
 >>> calling system_aliases router
 >>> system_aliases router forced address failure
 >>> ----------- end verify ------------
index 47eb91f2324ec574f7d5e60deb78ced93c7ff48f..0365875befc9cb5020cf009c84139f4b7c03affd 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -220,6 +221,7 @@ search_tidyup called
 >>> host in ignore_fromline_hosts? no (option unset)
 LOG: 10HmaY-000000005vi-0000 <= myfriend@there.test.ex H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -319,9 +321,9 @@ routing postmaster@exim.test.ex
 --------> localuser router <--------
 local_part=postmaster domain=exim.test.ex
 checking local_parts
-postmaster in "userx"?
+postmaster in local_parts?
  list element: userx
-postmaster in "userx"? no (end of list)
+postmaster in local_parts? no (end of list)
 localuser router skipped: local_parts mismatch
 no more routers
 ----------- end verify ------------
index 687b05ec9df69a875cc6f0fd99500782d8c14c01..ea8614cc2cf9b2894e88566f007a2bd78c0a678d 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> otherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  otherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  otherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    otherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    otherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> otherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> otherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  otherhost.example.com in "*"?
->>>   list element: *
->>>   otherhost.example.com in "*"? yes (matched "*")
+>>>   start sublist relay_domains
+>>>    otherhost.example.com in "*"?
+>>>    ╎list element: *
+>>>    ╎otherhost.example.com in "*"? yes (matched "*")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'otherhost.example.com' value '*'
 >>>  otherhost.example.com in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> 3rdhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  3rdhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  3rdhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    3rdhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    3rdhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> 3rdhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> 3rdhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  3rdhost.example.com in "*"?
->>>   list element: *
->>>   3rdhost.example.com in "*"? yes (matched "*")
+>>>   start sublist relay_domains
+>>>    3rdhost.example.com in "*"?
+>>>    ╎list element: *
+>>>    ╎3rdhost.example.com in "*"? yes (matched "*")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key '3rdhost.example.com' value '*'
 >>>  3rdhost.example.com in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 341a5dbdf1a0ae568648fc31f67c1e614fb39784..693ccfdd1057748fc3238140c7ff8c3e78cc8898 100644 (file)
 >>>  list element: @[]
 >>> test in helo_lookup_domains? no (end of list)
 >>> test.ex in percent_hack_domains?
->>>  list element: ! a.test.ex
+>>>  list element: !a.test.ex
 >>>  list element: !b.test.ex
 >>>  list element: !TESTSUITE/aux-fixed/0057.d1
->>>  list element: ! TESTSUITE/aux-fixed/0057.d2
+>>>  list element: !TESTSUITE/aux-fixed/0057.d2
 >>>  list element: *.test.ex
 >>> test.ex in percent_hack_domains? no (end of list)
 >>> using ACL "check_recipient"
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> anotherhost.example.com in percent_hack_domains?
->>>  list element: ! a.test.ex
+>>>  list element: !a.test.ex
 >>>  list element: !b.test.ex
 >>>  list element: !TESTSUITE/aux-fixed/0057.d1
->>>  list element: ! TESTSUITE/aux-fixed/0057.d2
+>>>  list element: !TESTSUITE/aux-fixed/0057.d2
 >>>  list element: *.test.ex
 >>> anotherhost.example.com in percent_hack_domains? no (end of list)
 >>> using ACL "check_recipient"
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>   list element: *.test.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    ╎list element: *.test.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex : !*"?
->>>   list element: test.ex
->>>   list element: !*
->>>   anotherhost.example.com in "test.ex : !*"? no (matched "!*")
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex : !*"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: !*
+>>>    ╎anotherhost.example.com in "test.ex : !*"? no (matched "!*")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'anotherhost.example.com' value '*'
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
 >>> end of ACL "check_recipient": DENY
 LOG: H=(test) [V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
 >>> 3rdhost.example.com in percent_hack_domains?
->>>  list element: ! a.test.ex
+>>>  list element: !a.test.ex
 >>>  list element: !b.test.ex
 >>>  list element: !TESTSUITE/aux-fixed/0057.d1
->>>  list element: ! TESTSUITE/aux-fixed/0057.d2
+>>>  list element: !TESTSUITE/aux-fixed/0057.d2
 >>>  list element: *.test.ex
 >>> 3rdhost.example.com in percent_hack_domains? no (end of list)
 >>> using ACL "check_recipient"
@@ -74,21 +82,26 @@ LOG: H=(test) [V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@
 >>> check domains = +local_domains
 >>> 3rdhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  3rdhost.example.com in "test.ex : myhost.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>   list element: *.test.ex
->>>  3rdhost.example.com in "test.ex : myhost.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    3rdhost.example.com in "test.ex : myhost.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    ╎list element: *.test.ex
+>>>    3rdhost.example.com in "test.ex : myhost.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> 3rdhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> 3rdhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  3rdhost.example.com in "test.ex : !*"?
->>>   list element: test.ex
->>>   list element: !*
->>>   3rdhost.example.com in "test.ex : !*"? no (matched "!*")
+>>>   start sublist relay_domains
+>>>    3rdhost.example.com in "test.ex : !*"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: !*
+>>>    ╎3rdhost.example.com in "test.ex : !*"? no (matched "!*")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key '3rdhost.example.com' value '*'
 >>> 3rdhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
index 68f177820ef668e12a0a91c03ebd04461a371cbc..0901cccf284a86d5911e35df60a958537b66e495 100644 (file)
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 20)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*"?
->>>   list element: *
->>>   host in "*"? yes (matched "*")
+>>>   start sublist relay_hosts
+>>>    host in "*"?
+>>>    ╎list element: *
+>>>    ╎host in "*"? yes (matched "*")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -37,16 +41,21 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.1
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 20)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
+>>>   start sublist relay_hosts
+>>>  cached yes match for +relay_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts" - cached)
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 327ce7f7b68f0239f572c5efbd7f28333926667e..056a9fdbca9a96f513324782aa7e2715f90da964 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!*"?
->>>   list element: !*
->>>   host in "!*"? no (matched "!*")
+>>>   start sublist relay_hosts
+>>>    host in "!*"?
+>>>    ╎list element: !*
+>>>    ╎host in "!*"? no (matched "!*")
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 23)
index 39ea365ce1f81290f4017db7f8d43f29d2c68453..6824c5a85d16a8f5a3c5efd0b1e59f9318fefe31 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   list element: ! TESTSUITE/aux-var/0060.d2
->>>   list element: ten-1.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎list element: !░TESTSUITE/aux-var/0060.d2
+>>>    ╎list element: ten-1.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-1.test.ex")
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-1.test.ex")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -76,9 +85,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.1
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -87,40 +99,46 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.1
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   list element: ! TESTSUITE/aux-var/0060.d2
->>>   list element: ten-1.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎list element: !░TESTSUITE/aux-var/0060.d2
+>>>    ╎list element: ten-1.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>   list element: ten-5-6.test.ex
+>>>    ╎list element: ten-5-6.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.5
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.6
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (end of list)
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
@@ -146,9 +164,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.2
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -157,40 +178,46 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.2
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   list element: ! TESTSUITE/aux-var/0060.d2
->>>   list element: ten-1.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎list element: !░TESTSUITE/aux-var/0060.d2
+>>>    ╎list element: ten-1.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>   list element: ten-5-6.test.ex
+>>>    ╎list element: ten-5-6.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.5
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.6
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-5-6.test.ex")
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-5-6.test.ex")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -212,9 +239,12 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.5
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -223,40 +253,46 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.5
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   list element: ! TESTSUITE/aux-var/0060.d2
->>>   list element: ten-1.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎list element: !░TESTSUITE/aux-var/0060.d2
+>>>    ╎list element: ten-1.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>   list element: ten-5-6.test.ex
+>>>    ╎list element: ten-5-6.test.ex
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.5
 >>>   name=ten-5-6.test.ex address=V4NET.0.0.6
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-5-6.test.ex")
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? yes (matched "ten-5-6.test.ex")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -278,9 +314,12 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.6
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -289,28 +328,34 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.6
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "! V4NET.255.0.1")
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "! V4NET.255.0.1")
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
@@ -336,9 +381,12 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -347,29 +395,35 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "!V4NET.255.0.2")
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "!V4NET.255.0.2")
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
@@ -395,9 +449,12 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -406,30 +463,37 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "V4NET.255.0.3" in TESTSUITE/aux-var/0060.d1)
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "V4NET.255.0.3" in TESTSUITE/aux-var/0060.d1)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.255.0.3' value 'V4NET.255.0.3'
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
@@ -455,9 +519,12 @@ LOG: 10HmbD-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -466,31 +533,38 @@ LOG: 10HmbD-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.255.0
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
->>>   list element: ! V4NET.255.0.1
->>>   list element: !V4NET.255.0.2
->>>   list element: !TESTSUITE/aux-var/0060.d1
->>>   list element: ! TESTSUITE/aux-var/0060.d2
->>>   host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "V4NET.255.0.4" in TESTSUITE/aux-var/0060.d2)
+>>>   start sublist relay_hosts
+>>>    host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"?
+>>>    ╎list element: !░V4NET.255.0.1
+>>>    ╎list element: !V4NET.255.0.2
+>>>    ╎list element: !TESTSUITE/aux-var/0060.d1
+>>>    ╎list element: !░TESTSUITE/aux-var/0060.d2
+>>>    ╎host in "! V4NET.255.0.1 : !V4NET.255.0.2 : !TESTSUITE/aux-var/0060.d1 : ! TESTSUITE/aux-var/0060.d2 : ten-1.test.ex : ten-5-6.test.ex"? no (matched "V4NET.255.0.4" in TESTSUITE/aux-var/0060.d2)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.255.0.4' value 'V4NET.255.0.4'
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
index 7e04644e23059fb681d7564ed01c6ddf1978395e..8aa0b1472f5b3dee3c9980b6676f09a428c227f3 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "@"?
->>>   list element: @
+>>>   start sublist relay_hosts
+>>>    host in "@"?
+>>>    ╎list element: @
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>   host in "@"? yes (matched "@")
+>>>    ╎host in "@"? yes (matched "@")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -72,9 +81,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.1
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -83,31 +95,37 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.0.0.1
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "@"?
->>>   list element: @
+>>>   start sublist relay_hosts
+>>>    host in "@"?
+>>>    ╎list element: @
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-1.test.ex address=V4NET.0.0.1
->>>  host in "@"? no (end of list)
+>>>    host in "@"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 23)
index b9cf69bf500d0bb10cf486a6d3f18f694603bf7b..52183820305981604ff949fae8494e761c5a7219 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*-2.test.ex : *-3-alias.test.ex"?
->>>   list element: *-2.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "*-2.test.ex : *-3-alias.test.ex"?
+>>>    ╎list element: *-2.test.ex
 >>> sender host name required, to match against *-2.test.ex
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
->>>   list element: *-3-alias.test.ex
->>>  host in "*-2.test.ex : *-3-alias.test.ex"? no (end of list)
+>>>    ╎list element: *-3-alias.test.ex
+>>>    host in "*-2.test.ex : *-3-alias.test.ex"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
@@ -83,9 +96,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -94,33 +110,44 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*-2.test.ex : *-3-alias.test.ex"?
->>>   list element: *-2.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "*-2.test.ex : *-3-alias.test.ex"?
+>>>    ╎list element: *-2.test.ex
 >>> sender host name required, to match against *-2.test.ex
 >>> looking up host name for V4NET.0.0.2
 >>> IP address lookup yielded "ten-2.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-2.test.ex
 >>>   V4NET.0.0.2 OK
->>>   host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-2.test.ex")
+>>>    ╎host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-2.test.ex")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.2' value '*-2.test.ex'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -146,9 +173,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=ten-2.test.ex (test
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -157,37 +187,52 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=ten-2.test.ex (test
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*-2.test.ex : *-3-alias.test.ex"?
->>>   list element: *-2.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "*-2.test.ex : *-3-alias.test.ex"?
+>>>    ╎list element: *-2.test.ex
 >>> sender host name required, to match against *-2.test.ex
 >>> looking up host name for V4NET.0.0.3
 >>> IP address lookup yielded "ten-3.test.ex"
 >>>   alias "ten-3-alias.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-3.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-3.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3.test.ex
 >>>   V4NET.0.0.3 OK
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3-alias.test.ex
 >>>   V4NET.0.0.3 OK
->>>   list element: *-3-alias.test.ex
->>>   host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-3-alias.test.ex")
+>>>    ╎list element: *-3-alias.test.ex
+>>>    ╎host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-3-alias.test.ex")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.3' value '*-3-alias.test.ex'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 5b2755f0afcc89ead757215100d93c9e00f4332f..6af4277355e04e386c44b32ae3a74b719d1bbf8c 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "^[^\d]+2"?
->>>   list element: ^[^\d]+2
+>>>   start sublist relay_hosts
+>>>    host in "^[^\d]+2"?
+>>>    ╎list element: ^[^\d]+2
 >>> sender host name required, to match against ^[^\d]+2
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
->>>  host in "^[^\d]+2"? no (end of list)
+>>>    host in "^[^\d]+2"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 25)
@@ -78,9 +91,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -89,33 +105,44 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 23)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "^[^\d]+2"?
->>>   list element: ^[^\d]+2
+>>>   start sublist relay_hosts
+>>>    host in "^[^\d]+2"?
+>>>    ╎list element: ^[^\d]+2
 >>> sender host name required, to match against ^[^\d]+2
 >>> looking up host name for V4NET.0.0.2
 >>> IP address lookup yielded "ten-2.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-2.test.ex
 >>>   V4NET.0.0.2 OK
->>>   host in "^[^\d]+2"? yes (matched "^[^\d]+2")
+>>>    ╎host in "^[^\d]+2"? yes (matched "^[^\d]+2")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.2' value '^[^\d]+2'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 97637d627d1df0d621ded4cf4eeeddfb14ebb903..1881d86e56982f05e5dd90f1d9cc60ebd7ae284d 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 20)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"?
->>>   list element: lsearch;TESTSUITE/aux-fixed/0064.hosts
+>>>   start sublist relay_hosts
+>>>    host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"?
+>>>    ╎list element: lsearch;TESTSUITE/aux-fixed/0064.hosts
 >>> sender host name required, to match against lsearch;TESTSUITE/aux-fixed/0064.hosts
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
->>>  host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"? no (end of list)
+>>>    host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 22)
@@ -78,9 +91,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -89,33 +105,44 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 20)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"?
->>>   list element: lsearch;TESTSUITE/aux-fixed/0064.hosts
+>>>   start sublist relay_hosts
+>>>    host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"?
+>>>    ╎list element: lsearch;TESTSUITE/aux-fixed/0064.hosts
 >>> sender host name required, to match against lsearch;TESTSUITE/aux-fixed/0064.hosts
 >>> looking up host name for V4NET.0.0.2
 >>> IP address lookup yielded "ten-2.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-2.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-2.test.ex
 >>>   V4NET.0.0.2 OK
->>>   host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"? yes (matched "lsearch;TESTSUITE/aux-fixed/0064.hosts")
+>>>    ╎host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"? yes (matched "lsearch;TESTSUITE/aux-fixed/0064.hosts")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.2' value ''
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 29f3ffb752c68d8aa2a140810f4aa6203a2b2324..ab282c9281f01eff779094c373221b468fd73aff 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "1.2.3.4")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "1.2.3.4")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -69,9 +78,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.4] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -80,29 +92,35 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.4] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? no (matched "!1.2.3.0/24")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? no (matched "!1.2.3.0/24")
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
@@ -128,9 +146,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.5] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -139,30 +160,36 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.5] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   list element: 1.2.0.0/16
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "1.2.0.0/16")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎list element: 1.2.0.0/16
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "1.2.0.0/16")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -184,9 +211,12 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.4.5] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -195,33 +225,39 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.4.5] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   list element: 1.2.0.0/16
->>>   list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   list element: net-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? no (end of list)
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎list element: 1.2.0.0/16
+>>>    ╎list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎list element: net-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
@@ -247,9 +283,12 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.3.2.4] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -258,31 +297,38 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.3.2.4] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   list element: 1.2.0.0/16
->>>   list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎list element: 1.2.0.0/16
+>>>    ╎list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '131.111.8.2' value ''
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -304,9 +350,12 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [131.111.8.2
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -315,32 +364,39 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [131.111.8.2
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   list element: 1.2.0.0/16
->>>   list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎list element: 1.2.0.0/16
+>>>    ╎list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '192.152.98.3' value ''
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -362,9 +418,12 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [192.152.98.
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -373,33 +432,40 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [192.152.98.
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
->>>   list element: 1.2.3.4
->>>   list element: !1.2.3.0/24
->>>   list element: 1.2.0.0/16
->>>   list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   list element: net-lsearch;TESTSUITE/aux-fixed/0065.nets
->>>   host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   start sublist relay_hosts
+>>>    host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"?
+>>>    ╎list element: 1.2.3.4
+>>>    ╎list element: !1.2.3.0/24
+>>>    ╎list element: 1.2.0.0/16
+>>>    ╎list element: net16-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎list element: net24-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎list element: net-lsearch;TESTSUITE/aux-fixed/0065.nets
+>>>    ╎host in "1.2.3.4 : !1.2.3.0/24 : 1.2.0.0/16 : net16-lsearch;TESTSUITE/aux-fixed/0065.nets : net24-lsearch;TESTSUITE/aux-fixed/0065.nets : net-lsearch;TESTSUITE/aux-fixed/0065.nets"? yes (matched "net-lsearch;TESTSUITE/aux-fixed/0065.nets")
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '192.153.98.4' value ''
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index f8857bdfa2296f9d8e94af7b087365cddc904e77..d5a7f0fae08ecef8b561edec446476f37ae18666 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.3.4" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.3.4" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '1.2.3.4' value '1.2.3.4'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -76,9 +86,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.4] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -87,35 +100,42 @@ LOG: 10HmaX-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.4] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "!1.2.3.0/24" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "!1.2.3.0/24" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '1.2.3.5' value '1.2.3.0/24'
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 23)
@@ -141,9 +161,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.5] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -152,35 +175,42 @@ LOG: 10HmaY-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.3.5] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.0.0/16" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.0.0/16" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '1.2.4.5' value '1.2.0.0/16'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -202,9 +232,12 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.4.5] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -213,38 +246,44 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.2.4.5] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
 >>> sender host name required, to match against *-1.test.ex
 >>> looking up host name for 1.3.2.4
 LOG: no host name found for IP address 1.3.2.4
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (failed to find host name for 1.3.2.4)
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (failed to find host name for 1.3.2.4)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 23)
@@ -270,9 +309,12 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.3.2.4] P=
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -281,35 +323,42 @@ LOG: 10HmbA-000000005vi-0000 <= userx@somehost.example.com H=(test) [1.3.2.4] P=
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net16-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '131.111.8.2' value 'net16-lsearch;TESTSUITE/aux-fixed/0066.nets'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -331,9 +380,12 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [131.111.8.2
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -342,35 +394,42 @@ LOG: 10HmbB-000000005vi-0000 <= userx@somehost.example.com H=(test) [131.111.8.2
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "net24-lsearch;TESTSUITE/aux-fixed/0066.nets" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key '192.152.98.3' value 'net24-lsearch;TESTSUITE/aux-fixed/0066.nets'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -392,9 +451,12 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [192.152.98.
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -403,40 +465,51 @@ LOG: 10HmbC-000000005vi-0000 <= userx@somehost.example.com H=(test) [192.152.98.
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   list element: TESTSUITE/aux-var/0066.hostnets
+>>>    ╎list element: TESTSUITE/aux-var/0066.hostnets
 >>> sender host name required, to match against *-1.test.ex
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>    ╎ check dnssec require list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>    ╎ check dnssec request list
+>>>    ╎  ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "*-1.test.ex" in TESTSUITE/aux-var/0066.hostnets)
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "*-1.test.ex" in TESTSUITE/aux-var/0066.hostnets)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.1' value '*-1.test.ex'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -458,9 +531,12 @@ LOG: 10HmbD-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -469,31 +545,38 @@ LOG: 10HmbD-000000005vi-0000 <= userx@somehost.example.com H=ten-1.test.ex (test
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "black-1.test.ex" in TESTSUITE/aux-fixed/0066.nothosts)
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "black-1.test.ex" in TESTSUITE/aux-fixed/0066.nothosts)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.11.12.13' value 'black-1.test.ex'
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 23)
@@ -519,9 +602,12 @@ LOG: 10HmbE-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.11.12
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -530,34 +616,41 @@ LOG: 10HmbE-000000005vi-0000 <= userx@somehost.example.com H=(test) [V4NET.11.12
 >>> check domains = +local_domains
 >>> anotherhost.example.com in "+local_domains"?
 >>>  list element: +local_domains
->>>  anotherhost.example.com in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   list element: myhost.ex
->>>  anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    anotherhost.example.com in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: myhost.ex
+>>>    anotherhost.example.com in "test.ex : myhost.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> anotherhost.example.com in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
 >>> check domains = +relay_domains
 >>> anotherhost.example.com in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  anotherhost.example.com in "test.ex"?
->>>   list element: test.ex
->>>  anotherhost.example.com in "test.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    anotherhost.example.com in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    anotherhost.example.com in "test.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> anotherhost.example.com in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
->>>   list element: !TESTSUITE/aux-fixed/0066.nothosts
+>>>   start sublist relay_hosts
+>>>    host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"?
+>>>    ╎list element: !TESTSUITE/aux-fixed/0066.nothosts
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=black-1.test.ex address=V4NET.11.12.13
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=ten-3.test.ex address=V4NET.0.0.3
->>>   host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "!ten-3.test.ex" in TESTSUITE/aux-fixed/0066.nothosts)
+>>>    ╎host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? no (matched "!ten-3.test.ex" in TESTSUITE/aux-fixed/0066.nothosts)
+>>>   end sublist relay_hosts
+>>>  data from lookup saved for cache for +relay_hosts: key 'V4NET.0.0.3' value 'ten-3.test.ex'
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 234a174bc1fa46d814549975e96446219f342c7e..90015dd1851925eb02e2fe543a342c0eef68f795 100644 (file)
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  somehost.example.com in "bb.cc"?
 >>>   list element: bb.cc
 >>>  somehost.example.com in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  somehost.example.com in "bbb.ccc"?
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -222,9 +228,12 @@ LOG: H=(test) [1.2.3.4] F=<quilt@patch.work> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -312,12 +321,12 @@ LOG: H=(test) [1.2.3.4] F=<abc@d.e.f> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  d.e.f in "bb.cc"?
 >>>   list element: bb.cc
 >>>  d.e.f in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  d.e.f in "bbb.ccc"?
@@ -336,9 +345,12 @@ LOG: H=(test) [1.2.3.4] F=<abc@d.e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -382,9 +394,12 @@ LOG: H=(test) [1.2.3.4] F=<abc@d.e.f> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -444,12 +459,12 @@ LOG: H=(test) [1.2.3.4] F=<abc@z.z> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  z.z in "bb.cc"?
 >>>   list element: bb.cc
 >>>  z.z in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  z.z in "bbb.ccc"?
@@ -468,9 +483,12 @@ LOG: H=(test) [1.2.3.4] F=<abc@z.z> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -590,12 +608,12 @@ LOG: H=(test) [1.2.3.4] F=<12345678@z.z> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  p.q.r in "bb.cc"?
 >>>   list element: bb.cc
 >>>  p.q.r in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  p.q.r in "bbb.ccc"?
@@ -617,9 +635,12 @@ LOG: H=(test) [1.2.3.4] F=<12345678@z.z> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -649,12 +670,12 @@ LOG: H=(test) [1.2.3.4] F=<12345678@z.z> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  m.n.o in "bb.cc"?
 >>>   list element: bb.cc
 >>>  m.n.o in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  m.n.o in "bbb.ccc"?
@@ -733,12 +754,12 @@ LOG: H=(test) [1.2.3.4] F=<1234@m.n.o> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  a.b.c in "bb.cc"?
 >>>   list element: bb.cc
 >>>  a.b.c in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  a.b.c in "bbb.ccc"?
@@ -784,12 +805,12 @@ LOG: H=(test) [1.2.3.4] F=<rr01@a.b.c> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  a.b.c in "bb.cc"?
 >>>   list element: bb.cc
 >>>  a.b.c in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  a.b.c in "bbb.ccc"?
@@ -808,9 +829,12 @@ LOG: H=(test) [1.2.3.4] F=<rr01@a.b.c> rejected RCPT <userx@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -840,12 +864,12 @@ LOG: H=(test) [1.2.3.4] F=<rr01@a.b.c> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  a.b.c in "bb.cc"?
 >>>   list element: bb.cc
 >>>  a.b.c in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  a.b.c in "bbb.ccc"?
@@ -888,12 +912,12 @@ LOG: H=(test) [1.2.3.4] F=<qq@a.b.c> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  z.z in "bb.cc"?
 >>>   list element: bb.cc
 >>>  z.z in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  z.z in "bbb.ccc"?
@@ -936,12 +960,12 @@ LOG: H=(test) [1.2.3.4] F=<!excl@z.z> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  y.p.s in "bb.cc"?
 >>>   list element: bb.cc
 >>>  y.p.s in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  y.p.s in "bbb.ccc"?
@@ -987,12 +1011,12 @@ LOG: H=(test) [1.2.3.4] F=<sh#rp@y.p.s> rejected RCPT <userx@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  xx.yy in "bb.cc"?
 >>>   list element: bb.cc
 >>>  xx.yy in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  xx.yy in "bbb.ccc"?
@@ -1011,9 +1035,12 @@ LOG: H=(test) [1.2.3.4] F=<sh#rp@y.p.s> rejected RCPT <userx@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -1106,7 +1133,7 @@ LOG: H=(test) [1.2.3.4] F=<aabc@xx.yy> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  bb.cc in "bb.cc"?
 >>>   list element: bb.cc
 >>>   bb.cc in "bb.cc"? yes (matched "bb.cc")
@@ -1123,9 +1150,12 @@ LOG: H=(test) [1.2.3.4] F=<aabc@xx.yy> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -1155,7 +1185,7 @@ LOG: H=(test) [1.2.3.4] F=<aabc@xx.yy> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  bb.cc in "bb.cc"?
 >>>   list element: bb.cc
@@ -1193,7 +1223,7 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  bbb.ccc in "bb.cc"?
 >>>   list element: bb.cc
 >>>  bbb.ccc in "bb.cc"? no (end of list)
@@ -1201,7 +1231,7 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>>  bbb.ccc in "bb.cc"?
 >>>   list element: bb.cc
 >>>  bbb.ccc in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  bbb.ccc in "bbb.ccc"?
 >>>   list element: bbb.ccc
 >>>   bbb.ccc in "bbb.ccc"? yes (matched "bbb.ccc")
@@ -1218,9 +1248,12 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -1250,12 +1283,12 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  bbb.ccc in "bb.cc"?
 >>>   list element: bb.cc
 >>>  bbb.ccc in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  bbb.ccc in "bbb.ccc"?
 >>>   list element: bbb.ccc
@@ -1273,9 +1306,12 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : myhost.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : myhost.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : myhost.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : myhost.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -1305,12 +1341,12 @@ LOG: H=(test) [1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
 >>>  list element: !yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch
 >>>  list element: @@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain
->>>  list element: ! x@bb.cc
+>>>  list element: !x@bb.cc
 >>>  list element: *@bb.cc
 >>>  bbb.ccc in "bb.cc"?
 >>>   list element: bb.cc
 >>>  bbb.ccc in "bb.cc"? no (end of list)
->>>  list element: ! TESTSUITE/aux-fixed/0067.not1
+>>>  list element: !TESTSUITE/aux-fixed/0067.not1
 >>>  list element: !TESTSUITE/aux-fixed/0067.not2
 >>>  list element: bbb.ccc
 >>>  bbb.ccc in "bbb.ccc"?
index 449102e173c26d1ec9f6ab2390d11dc857601b2f..741ef0f075f05b021f504808d8a003ad7eb7fcff 100644 (file)
@@ -7,6 +7,10 @@
 >>> sender host name required, to match against ^ten-1\.test\.ex
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>   check dnssec require list
+>>>    ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>   check dnssec request list
+>>>    ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>>  host in sender_unqualified_hosts? yes (matched "^ten-1\.test\.ex")
index 01c0798b4887d4b5bc31d45d8ce4a575623616cd..18fe9e93e1bace629f2e99bd18835543dfd92957 100644 (file)
@@ -136,6 +136,10 @@ MUNGED: ::1 will be omitted in what follows
 >>> verifying EHLO/HELO argument "ten-1.test.ex"
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>  check dnssec require list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>> matched host name
@@ -163,8 +167,16 @@ MUNGED: ::1 will be omitted in what follows
 >>> looking up host name for V4NET.0.0.3
 >>> IP address lookup yielded "ten-3.test.ex"
 >>>   alias "ten-3-alias.test.ex"
+>>>  check dnssec require list
+>>>   ten-3.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-3.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3.test.ex
 >>>   V4NET.0.0.3 OK
+>>>  check dnssec require list
+>>>   ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-3-alias.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-3-alias.test.ex
 >>>   V4NET.0.0.3 OK
 >>> matched host name
@@ -175,11 +187,13 @@ MUNGED: ::1 will be omitted in what follows
 >>> matched alias ten-3-alias.test.ex
 >>> verifying EHLO/HELO argument "ten-3xtra.test.ex"
 >>> getting IP address for ten-3xtra.test.ex
->>> ten-3xtra.test.ex in ""?
->>> ten-3xtra.test.ex in ""? no (end of list)
->>> ten-3xtra.test.ex in "*"?
->>>  list element: *
->>>  ten-3xtra.test.ex in "*"? yes (matched "*")
+>>> check dnssec require list
+>>>  ten-3xtra.test.ex in ""?
+>>>  ten-3xtra.test.ex in ""? no (end of list)
+>>> check dnssec request list
+>>>  ten-3xtra.test.ex in "*"?
+>>>   list element: *
+>>>   ten-3xtra.test.ex in "*"? yes (matched "*")
 >>> IP address for ten-3xtra.test.ex matches calling address
 >>> Forward DNS security status: unverified
 >>> host in hosts_connection_nolog? no (option unset)
@@ -201,14 +215,20 @@ MUNGED: ::1 will be omitted in what follows
 >>> verifying EHLO/HELO argument "rhubarb"
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>  check dnssec require list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>> getting IP address for rhubarb
->>> rhubarb in ""?
->>> rhubarb in ""? no (end of list)
->>> rhubarb in "*"?
->>>  list element: *
->>>  rhubarb in "*"? yes (matched "*")
+>>> check dnssec require list
+>>>  rhubarb in ""?
+>>>  rhubarb in ""? no (end of list)
+>>> check dnssec request list
+>>>  rhubarb in "*"?
+>>>   list element: *
+>>>   rhubarb in "*"? yes (matched "*")
 LOG: rejected "EHLO rhubarb" from (rhubarb) [V4NET.0.0.1]
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
@@ -235,11 +255,13 @@ MUNGED: ::1 will be omitted in what follows
 >>> looking up host name for 99.99.99.99
 >>> Test harness: host name lookup returns DEFER
 >>> getting IP address for rhubarb
->>> rhubarb in ""?
->>> rhubarb in ""? no (end of list)
->>> rhubarb in "*"?
->>>  list element: *
->>>  rhubarb in "*"? yes (matched "*")
+>>> check dnssec require list
+>>>  rhubarb in ""?
+>>>  rhubarb in ""? no (end of list)
+>>> check dnssec request list
+>>>  rhubarb in "*"?
+>>>   list element: *
+>>>   rhubarb in "*"? yes (matched "*")
 LOG: temporarily rejected "EHLO rhubarb" from (rhubarb) [99.99.99.99]
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
@@ -355,11 +377,13 @@ MUNGED: ::1 will be omitted in what follows
 >>> looking up host name for 99.99.99.99
 >>> Test harness: host name lookup returns DEFER
 >>> getting IP address for rhubarb
->>> rhubarb in ""?
->>> rhubarb in ""? no (end of list)
->>> rhubarb in "*"?
->>>  list element: *
->>>  rhubarb in "*"? yes (matched "*")
+>>> check dnssec require list
+>>>  rhubarb in ""?
+>>>  rhubarb in ""? no (end of list)
+>>> check dnssec request list
+>>>  rhubarb in "*"?
+>>>   list element: *
+>>>   rhubarb in "*"? yes (matched "*")
 >>> require: condition test failed in ACL "rcpt"
 >>> end of ACL "rcpt": not OK
 LOG: H=(rhubarb) [99.99.99.99] F=<a@b> rejected RCPT <c@d>: helo not verified
index 855456f48fef6f6f0473f646be0d58fd92e46608..5eb31ed0145d1029c65ae8713af5d4b6be21a0f1 100644 (file)
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! @ : ! localhost
 >>> host in "! @ : ! localhost"?
->>>  list element: ! @
+>>>  list element: !@
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=myhost.test.ex address=V4NET.10.10.10
->>>  list element: ! localhost
+>>>  list element: !localhost
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=localhost address=127.0.0.1
@@ -28,9 +28,12 @@ MUNGED: ::1 will be omitted in what follows
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +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")
+>>>   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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -50,7 +53,7 @@ MUNGED: ::1 will be omitted in what follows
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! @ : ! localhost
 >>> host in "! @ : ! localhost"?
->>>  list element: ! @
+>>>  list element: !@
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=myhost.test.ex address=V4NET.10.10.10
@@ -60,9 +63,12 @@ MUNGED: ::1 will be omitted in what follows
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +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")
+>>>   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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -82,11 +88,11 @@ MUNGED: ::1 will be omitted in what follows
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! @ : ! localhost
 >>> host in "! @ : ! localhost"?
->>>  list element: ! @
+>>>  list element: !@
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=myhost.test.ex address=V4NET.10.10.10
->>>  list element: ! localhost
+>>>  list element: !localhost
 MUNGED: ::1 will be omitted in what follows
 >>> get[host|ipnode]byname[2] looked up these IP addresses:
 >>>   name=localhost address=127.0.0.1
index 58266f252041529798559c734c1be0e6843ca901..56cc9c81a6145dcea305d66719c183889a588690 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -7,9 +8,12 @@ routing xx@mxt6.test.ex
 --------> lookuphost router <--------
 local_part=xx domain=mxt6.test.ex
 checking domains
+mxt6.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt6.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@mxt6.test.ex
   domain = mxt6.test.ex
+main lookup for domain
 set transport remote_smtp
 queued for remote_smtp transport: local_part = xx
 domain = mxt6.test.ex
@@ -21,6 +25,7 @@ routed by lookuphost router
   host ten-1.test.ex [V4NET.0.0.1] MX=5 dnssec=no
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -29,14 +34,18 @@ routing myhost.test.ex@mxt1.test.ex
 --------> lookuphost router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for myhost.test.ex@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: passed to next router (self = pass)
 lookuphost router passed for myhost.test.ex@mxt1.test.ex
 --------> self router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self router
 self router called for myhost.test.ex@mxt1.test.ex
@@ -57,6 +66,7 @@ routed by self router
   host myhost.test.ex [V4NET.10.10.10]
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -65,14 +75,18 @@ routing xx@mxt1.test.ex
 --------> lookuphost router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: passed to next router (self = pass)
 lookuphost router passed for xx@mxt1.test.ex
 --------> self router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self router
 self router called for xx@mxt1.test.ex
@@ -87,6 +101,7 @@ self router passed for xx@mxt1.test.ex
 --------> self2 router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self2 router
 self2 router called for xx@mxt1.test.ex
@@ -107,6 +122,7 @@ routed by self2 router
   host myhost.test.ex [V4NET.10.10.10]
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -115,9 +131,12 @@ routing xx@not-exist.test.ex
 --------> lookuphost router <--------
 local_part=xx domain=not-exist.test.ex
 checking domains
+not-exist.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+not-exist.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@not-exist.test.ex
   domain = not-exist.test.ex
+main lookup for domain
 lookuphost router declined for xx@not-exist.test.ex
 "more" is false: skipping remaining routers
 no more routers
index d805f7a616c46bf4f2cd637feb70b2b3df0733d3..c1db2a3e69ebf012ea0a0478cc91fc756fe28abc 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
index 5befd2cfd9a7d6b623d2527e00012d7654614e76..6637329c89fe063132eb56554e1d2a294b6115b2 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -19,22 +20,22 @@ routing x@y.z
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "smart.domain"?
+y.z in domains?
  list element: smart.domain
-y.z in "smart.domain"? no (end of list)
+y.z in domains? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "! +local_domains"?
- list element: ! +local_domains
+y.z in 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)
+y.z in 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"' (tainted)
@@ -51,9 +52,9 @@ routing x@smart.domain
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "smart.domain"?
+smart.domain in domains?
  list element: smart.domain
- smart.domain in "smart.domain"? yes (matched "smart.domain")
+ smart.domain in domains? yes (matched "smart.domain")
 checking local_parts
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
  search_find: file="TESTSUITE/aux-fixed/0085.data"
@@ -67,9 +68,9 @@ checking local_parts
    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"?
+x in local_parts?
  list element: x
- x in "x : y : abc@d.e.f"? yes (matched "x")
+ x in local_parts? yes (matched "x")
 checking senders
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -83,7 +84,7 @@ checking senders
  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"?
+abc@d.e.f in senders?
  list element: x
  address match test: subject=abc@d.e.f pattern=x
  d.e.f in "x"?
@@ -99,7 +100,7 @@ abc@d.e.f in "x : y : 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")
+ abc@d.e.f in senders? yes (matched "abc@d.e.f")
 calling smart1 router
 smart1 router called for x@smart.domain
   domain = smart.domain
@@ -125,29 +126,29 @@ routing x@test.ex
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "smart.domain"?
+test.ex in domains?
  list element: smart.domain
-test.ex in "smart.domain"? no (end of list)
+test.ex in domains? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "! +local_domains"?
- list element: ! +local_domains
+test.ex in 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")
+ test.ex in domains? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex"?
+test.ex in domains?
  list element: test.ex
- test.ex in "test.ex"? yes (matched "test.ex")
+ test.ex in domains? yes (matched "test.ex")
 checking local_parts
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -162,9 +163,9 @@ checking local_parts
    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"?
+x in local_parts?
  list element: x
- x in "x : y : abc@d.e.f"? yes (matched "x")
+ x in local_parts? yes (matched "x")
 checking senders
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -178,7 +179,7 @@ checking senders
  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"?
+abc@d.e.f in senders?
  list element: x
  address match test: subject=abc@d.e.f pattern=x
  d.e.f in "x"?
@@ -194,7 +195,7 @@ abc@d.e.f in "x : y : 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")
+ abc@d.e.f in senders? yes (matched "abc@d.e.f")
 checking require_files
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -232,15 +233,15 @@ routing x@myhost.test.ex
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
-myhost.test.ex in "smart.domain"?
+myhost.test.ex in domains?
  list element: smart.domain
-myhost.test.ex in "smart.domain"? no (end of list)
+myhost.test.ex in domains? 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 "! +local_domains"?
- list element: ! +local_domains
+myhost.test.ex in domains?
+ list element: !+local_domains
   start sublist local_domains
    myhost.test.ex in "test.ex : myhost.test.ex"?
    ╎list element: test.ex
@@ -248,19 +249,20 @@ myhost.test.ex in "! +local_domains"?
    ╎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")
+ myhost.test.ex in domains? no (matched "! +local_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"?
+myhost.test.ex in domains?
  list element: test.ex
-myhost.test.ex in "test.ex"? no (end of list)
+myhost.test.ex in domains? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -281,22 +283,22 @@ routing x@y.z
 --------> smart1 router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "smart.domain"?
+y.z in domains?
  list element: smart.domain
-y.z in "smart.domain"? no (end of list)
+y.z in domains? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=y.z
 checking domains
-y.z in "! +local_domains"?
- list element: ! +local_domains
+y.z in 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)
+y.z in 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"' (tainted)
@@ -313,9 +315,9 @@ routing x@smart.domain
 --------> smart1 router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "smart.domain"?
+smart.domain in domains?
  list element: smart.domain
- smart.domain in "smart.domain"? yes (matched "smart.domain")
+ smart.domain in domains? yes (matched "smart.domain")
 checking local_parts
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
  search_find: file="TESTSUITE/aux-fixed/0085.data"
@@ -329,9 +331,9 @@ checking local_parts
    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"?
+x in local_parts?
  list element: x
- x in "x : y : abc@d.e.f"? yes (matched "x")
+ x in local_parts? yes (matched "x")
 checking senders
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -345,7 +347,7 @@ checking senders
  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"?
+CALLER@myhost.test.ex in senders?
  list element: x
  address match test: subject=CALLER@myhost.test.ex pattern=x
  myhost.test.ex in "x"?
@@ -358,20 +360,20 @@ CALLER@myhost.test.ex in "x : y : abc@d.e.f"?
  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)
+CALLER@myhost.test.ex in senders? no (end of list)
 smart1 router skipped: senders mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=smart.domain
 checking domains
-smart.domain in "! +local_domains"?
- list element: ! +local_domains
+smart.domain in 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)
+smart.domain in 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"' (tainted)
@@ -388,29 +390,29 @@ routing x@test.ex
 --------> smart1 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "smart.domain"?
+test.ex in domains?
  list element: smart.domain
-test.ex in "smart.domain"? no (end of list)
+test.ex in domains? no (end of list)
 smart1 router skipped: domains mismatch
 --------> fail_remote_domains router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "! +local_domains"?
- list element: ! +local_domains
+test.ex in 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")
+ test.ex in domains? no (matched "! +local_domains")
 fail_remote_domains router skipped: domains mismatch
 --------> smart2 router <--------
 local_part=x domain=test.ex
 checking domains
-test.ex in "test.ex"?
+test.ex in domains?
  list element: test.ex
- test.ex in "test.ex"? yes (matched "test.ex")
+ test.ex in domains? yes (matched "test.ex")
 checking local_parts
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -425,9 +427,9 @@ checking local_parts
    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"?
+x in local_parts?
  list element: x
- x in "x : y : abc@d.e.f"? yes (matched "x")
+ x in local_parts? yes (matched "x")
 checking senders
  search_open: lsearch "TESTSUITE/aux-fixed/0085.data"
    cached open
@@ -441,7 +443,7 @@ checking senders
  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"?
+CALLER@myhost.test.ex in senders?
  list element: x
  address match test: subject=CALLER@myhost.test.ex pattern=x
  myhost.test.ex in "x"?
@@ -454,7 +456,7 @@ CALLER@myhost.test.ex in "x : y : abc@d.e.f"?
  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)
+CALLER@myhost.test.ex in senders? no (end of list)
 smart2 router skipped: senders mismatch
 no more routers
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -466,15 +468,15 @@ routing x@myhost.test.ex
 --------> smart1 router <--------
 local_part=x domain=myhost.test.ex
 checking domains
-myhost.test.ex in "smart.domain"?
+myhost.test.ex in domains?
  list element: smart.domain
-myhost.test.ex in "smart.domain"? no (end of list)
+myhost.test.ex in domains? 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 "! +local_domains"?
- list element: ! +local_domains
+myhost.test.ex in domains?
+ list element: !+local_domains
   start sublist local_domains
    myhost.test.ex in "test.ex : myhost.test.ex"?
    ╎list element: test.ex
@@ -482,14 +484,14 @@ myhost.test.ex in "! +local_domains"?
    ╎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")
+ myhost.test.ex in domains? no (matched "! +local_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"?
+myhost.test.ex in domains?
  list element: test.ex
-myhost.test.ex in "test.ex"? no (end of list)
+myhost.test.ex in domains? no (end of list)
 smart2 router skipped: domains mismatch
 no more routers
 search_tidyup called
index 29ea14896574b83921652f5eefb7d4fc2dee5d46..c063ea1955654d6db21b2de04e516d71057617e7 100644 (file)
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "defer"?
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -75,12 +78,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "defer"?
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -89,9 +92,12 @@ LOG: 10HmaX-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -130,12 +136,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "defer"?
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -144,9 +150,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -157,12 +166,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> verifying From: header address badbad@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing badbad@test.ex
->>> badbad in "defer"?
+>>> badbad in local_parts?
 >>>  list element: defer
->>> badbad in "defer"? no (end of list)
->>> badbad in "userx"?
+>>> badbad in local_parts? no (end of list)
+>>> badbad in local_parts?
 >>>  list element: userx
->>> badbad in "userx"? no (end of list)
+>>> badbad in local_parts? no (end of list)
 >>> no more routers
 >>> require: condition test failed in ACL "check_message"
 >>> end of ACL "check_message": not OK
@@ -190,12 +199,12 @@ LOG: 10HmbA-000000005vi-0000 H=(test) [V4NET.10.10.10] F=<userx@test.ex> rejecte
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "defer"?
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -204,9 +213,12 @@ LOG: 10HmbA-000000005vi-0000 H=(test) [V4NET.10.10.10] F=<userx@test.ex> rejecte
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -217,12 +229,12 @@ LOG: 10HmbA-000000005vi-0000 H=(test) [V4NET.10.10.10] F=<userx@test.ex> rejecte
 >>> verifying From: header address badbad@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing badbad@test.ex
->>> badbad in "defer"?
+>>> badbad in local_parts?
 >>>  list element: defer
->>> badbad in "defer"? no (end of list)
->>> badbad in "userx"?
+>>> badbad in local_parts? no (end of list)
+>>> badbad in local_parts?
 >>>  list element: userx
->>> badbad in "userx"? no (end of list)
+>>> badbad in local_parts? no (end of list)
 >>> no more routers
 >>> verifying From: header address userx@test.ex
 >>> previously checked as envelope sender
@@ -254,12 +266,12 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "defer"?
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -268,9 +280,12 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -281,9 +296,9 @@ LOG: 10HmaZ-000000005vi-0000 <= userx@test.ex H=(test) [V4NET.10.10.10] P=smtp S
 >>> verifying From: header address defer@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing defer@test.ex
->>> defer in "defer"?
+>>> defer in local_parts?
 >>>  list element: defer
->>>  defer in "defer"? yes (matched "defer")
+>>>  defer in local_parts? yes (matched "defer")
 >>> calling defer router
 >>> defer router: defer for defer@test.ex
 >>>   message: this is a forced defer
index 369e13ceff79e4456fb17beaf484ac993b50c4f2..107944c7f939c4ebe43dbf261d8d3ba7fc309d9f 100644 (file)
@@ -33,9 +33,12 @@ LOG: rejected HELO from [V4NET.0.0.0]: syntactically invalid argument(s): @#$%^&
 >>>   check domains = +local_domains
 >>>   test.ex in "+local_domains"?
 >>>    list element: +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")
+>>>     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"? yes (matched "+local_domains")
 >>>   accept: condition test succeeded in ACL "check_recipient"
 >>>   end of ACL "check_recipient": ACCEPT
@@ -50,20 +53,24 @@ LOG: rejected HELO from [V4NET.0.0.0]: syntactically invalid argument(s): @#$%^&
 >>>   check domains = +local_domains
 >>>   else.where in "+local_domains"?
 >>>    list element: +local_domains
->>>    else.where in "Test.ex : myhost.test.EX"?
->>>    ╎list element: Test.ex
->>>    ╎list element: myhost.test.EX
->>>    else.where in "Test.ex : myhost.test.EX"? no (end of list)
+>>>     start sublist local_domains
+>>>    ╎ else.where in "Test.ex : myhost.test.EX"?
+>>>    ╎  list element: Test.ex
+>>>    ╎  list element: myhost.test.EX
+>>>    ╎ else.where in "Test.ex : myhost.test.EX"? no (end of list)
+>>>     end sublist local_domains
 >>>   else.where in "+local_domains"? no (end of list)
 >>>   accept: condition test failed in ACL "check_recipient"
 >>>   processing "accept" (TESTSUITE/test-config 26)
 >>>   check domains = +relay_domains
 >>>   else.where in "+relay_domains"?
 >>>    list element: +relay_domains
->>>    else.where in "Test.ex : Relay.one.ex"?
->>>    ╎list element: Test.ex
->>>    ╎list element: Relay.one.ex
->>>    else.where in "Test.ex : Relay.one.ex"? no (end of list)
+>>>     start sublist relay_domains
+>>>    ╎ else.where in "Test.ex : Relay.one.ex"?
+>>>    ╎  list element: Test.ex
+>>>    ╎  list element: Relay.one.ex
+>>>    ╎ else.where in "Test.ex : Relay.one.ex"? no (end of list)
+>>>     end sublist relay_domains
 >>>   else.where in "+relay_domains"? no (end of list)
 >>>   accept: condition test failed in ACL "check_recipient"
 >>>   processing "deny" (TESTSUITE/test-config 27)
@@ -79,6 +86,10 @@ LOG: H=(abc_xyz) [V4NET.0.0.0] F=<userx@cus.cam.ac.uk> rejected RCPT <userx@else
 >>> sender host name required, to match against *N-99.test.EX
 >>> looking up host name for V4NET.0.0.99
 >>> IP address lookup yielded "ten-99.test.ex"
+>>>   check dnssec require list
+>>>    ten-99.test.ex not in empty list (option unset? cannot trace name)
+>>>   check dnssec request list
+>>>    ten-99.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-99.test.ex
 >>>   V4NET.0.0.99 OK
 >>>  host in sender_unqualified_hosts? yes (matched "*N-99.test.EX")
@@ -99,20 +110,25 @@ LOG: H=(abc_xyz) [V4NET.0.0.0] F=<userx@cus.cam.ac.uk> rejected RCPT <userx@else
 >>> check domains = +local_domains
 >>> relay.one.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  relay.one.ex in "Test.ex : myhost.test.EX"?
->>>   list element: Test.ex
->>>   list element: myhost.test.EX
->>>  relay.one.ex in "Test.ex : myhost.test.EX"? no (end of list)
+>>>   start sublist local_domains
+>>>    relay.one.ex in "Test.ex : myhost.test.EX"?
+>>>    ╎list element: Test.ex
+>>>    ╎list element: myhost.test.EX
+>>>    relay.one.ex in "Test.ex : myhost.test.EX"? no (end of list)
+>>>   end sublist local_domains
 >>> relay.one.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 26)
 >>> check domains = +relay_domains
 >>> relay.one.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  relay.one.ex in "Test.ex : Relay.one.ex"?
->>>   list element: Test.ex
->>>   list element: Relay.one.ex
->>>   relay.one.ex in "Test.ex : Relay.one.ex"? yes (matched "Relay.one.ex")
+>>>   start sublist relay_domains
+>>>    relay.one.ex in "Test.ex : Relay.one.ex"?
+>>>    ╎list element: Test.ex
+>>>    ╎list element: Relay.one.ex
+>>>    ╎relay.one.ex in "Test.ex : Relay.one.ex"? yes (matched "Relay.one.ex")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'relay.one.ex' value 'Relay.one.ex'
 >>>  relay.one.ex in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -127,20 +143,24 @@ LOG: H=(abc_xyz) [V4NET.0.0.0] F=<userx@cus.cam.ac.uk> rejected RCPT <userx@else
 >>> check domains = +local_domains
 >>> relay.two.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  relay.two.ex in "Test.ex : myhost.test.EX"?
->>>   list element: Test.ex
->>>   list element: myhost.test.EX
->>>  relay.two.ex in "Test.ex : myhost.test.EX"? no (end of list)
+>>>   start sublist local_domains
+>>>    relay.two.ex in "Test.ex : myhost.test.EX"?
+>>>    ╎list element: Test.ex
+>>>    ╎list element: myhost.test.EX
+>>>    relay.two.ex in "Test.ex : myhost.test.EX"? no (end of list)
+>>>   end sublist local_domains
 >>> relay.two.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 26)
 >>> check domains = +relay_domains
 >>> relay.two.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  relay.two.ex in "Test.ex : Relay.one.ex"?
->>>   list element: Test.ex
->>>   list element: Relay.one.ex
->>>  relay.two.ex in "Test.ex : Relay.one.ex"? no (end of list)
+>>>   start sublist relay_domains
+>>>    relay.two.ex in "Test.ex : Relay.one.ex"?
+>>>    ╎list element: Test.ex
+>>>    ╎list element: Relay.one.ex
+>>>    relay.two.ex in "Test.ex : Relay.one.ex"? no (end of list)
+>>>   end sublist relay_domains
 >>> relay.two.ex in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 27)
index 3efd8b6c8386950920be563aa6d6f160f715b18c..cfefa4915475b54bab3ebd120eb4c6aff31c3307 100644 (file)
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"?
->>>  list element: ! V4NET.0.0.1
+>>>  list element: !V4NET.0.0.1
 >>>  host in "! V4NET.0.0.1"? no (matched "! V4NET.0.0.1")
 >>> deny: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 20)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -34,9 +37,9 @@
 >>> verifying From: header address <junk@jink.jonk.test.ex>
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junk@jink.jonk.test.ex
->>> junk in "userx"?
+>>> junk in local_parts?
 >>>  list element: userx
->>> junk in "userx"? no (end of list)
+>>> junk in local_parts? no (end of list)
 >>> no more routers
 >>> require: condition test failed in ACL "check_message"
 >>> end of ACL "check_message": not OK
@@ -57,14 +60,14 @@ LOG: 10HmaY-000000005vi-0000 H=(test) [V4NET.0.0.1] F=<junk@jink.jonk.test.ex> r
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"?
->>>  list element: ! V4NET.0.0.1
+>>>  list element: !V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"? yes (end of list)
 >>> check !verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junk@jink.jonk.test.ex
->>> junk in "userx"?
+>>> junk in local_parts?
 >>>  list element: userx
->>> junk in "userx"? no (end of list)
+>>> junk in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> deny: condition test succeeded in ACL "check_recipient"
@@ -87,14 +90,14 @@ LOG: H=(test) [V4NET.0.0.2] F=<junk@jink.jonk.test.ex> rejected RCPT <root@test.
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"?
->>>  list element: ! V4NET.0.0.1
+>>>  list element: !V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"? yes (end of list)
 >>> check !verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -103,9 +106,12 @@ LOG: H=(test) [V4NET.0.0.2] F=<junk@jink.jonk.test.ex> rejected RCPT <root@test.
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -116,9 +122,9 @@ LOG: H=(test) [V4NET.0.0.2] F=<junk@jink.jonk.test.ex> rejected RCPT <root@test.
 >>> verifying From: header address <junk@jink.jonk.test.ex>
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing junk@jink.jonk.test.ex
->>> junk in "userx"?
+>>> junk in local_parts?
 >>>  list element: userx
->>> junk in "userx"? no (end of list)
+>>> junk in local_parts? no (end of list)
 >>> no more routers
 >>> require: condition test failed in ACL "check_message"
 >>> end of ACL "check_message": not OK
@@ -139,14 +145,14 @@ LOG: 10HmaZ-000000005vi-0000 H=(test) [V4NET.0.0.2] F=<userx@test.ex> rejected a
 >>> processing "deny" (TESTSUITE/test-config 18)
 >>> check hosts = ! V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"?
->>>  list element: ! V4NET.0.0.1
+>>>  list element: !V4NET.0.0.1
 >>> host in "! V4NET.0.0.1"? yes (end of list)
 >>> check !verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -155,9 +161,12 @@ LOG: 10HmaZ-000000005vi-0000 H=(test) [V4NET.0.0.2] F=<userx@test.ex> rejected a
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -168,9 +177,9 @@ LOG: 10HmaZ-000000005vi-0000 H=(test) [V4NET.0.0.2] F=<userx@test.ex> rejected a
 >>> verifying From: header address <userx@test.ex>
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> require: condition test succeeded in ACL "check_message"
index b41de549f96539b733b13f14def26b1a1765f7e2..04e219a0ee37eb84bcb417cd31a003336694fb10 100644 (file)
@@ -37,14 +37,18 @@ LOG: SMTP command timeout on connection from [V4NET.0.0.1] D=qqs
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 LOG: SMTP data timeout (message abandoned) on connection from (test) [V4NET.0.0.1] F=<userx@test.ex> D=qqs
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 environment after trimming:
@@ -208,12 +212,15 @@ exim: timed out while reading - message abandoned
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing verify@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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 domains? no (matched "! +local_domains")
 >>> calling forward router
 >>> forward router declined for verify@test.ex
 >>> no more routers
index f809c7caa59d0912dc4ec670ff5336131d4e6372..bd3bb1425c8c59a60bfeef4c4e911e110550e573 100644 (file)
@@ -25,19 +25,23 @@ LOG: no host name found for IP address V4NET.11.12.13
 >>> check domains = +local_domains
 >>> cam.ac.uk in "+local_domains"?
 >>>  list element: +local_domains
->>>  cam.ac.uk in "test.ex"?
->>>   list element: test.ex
->>>  cam.ac.uk in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    cam.ac.uk in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    cam.ac.uk in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> cam.ac.uk in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*.masq.test.ex"?
->>>   list element: *.masq.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "*.masq.test.ex"?
+>>>    ╎list element: *.masq.test.ex
 >>> sender host name required, to match against *.masq.test.ex
->>>   host in "*.masq.test.ex"? no (failed to find host name for V4NET.11.12.13)
+>>>    ╎host in "*.masq.test.ex"? no (failed to find host name for V4NET.11.12.13)
+>>>    end sublist relay_hosts
 >>>  host in "+relay_hosts"? no (end of list)
 >>>  accept: condition test failed in ACL "check_recipient"
 >>>  processing "deny" (TESTSUITE/test-config 26)
@@ -51,6 +55,10 @@ LOG: H=(test) [V4NET.11.12.13] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.u
 >>>  host in host_lookup? yes (matched "0.0.0.0/0")
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>  check dnssec require list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>> host in host_reject_connection? no (option unset)
@@ -70,18 +78,22 @@ LOG: H=(test) [V4NET.11.12.13] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.u
 >>> check domains = +local_domains
 >>> cam.ac.uk in "+local_domains"?
 >>>  list element: +local_domains
->>>  cam.ac.uk in "test.ex"?
->>>   list element: test.ex
->>>  cam.ac.uk in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    cam.ac.uk in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    cam.ac.uk in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> cam.ac.uk in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 25)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*.masq.test.ex"?
->>>   list element: *.masq.test.ex
->>>  host in "*.masq.test.ex"? no (end of list)
+>>>   start sublist relay_hosts
+>>>    host in "*.masq.test.ex"?
+>>>    ╎list element: *.masq.test.ex
+>>>    host in "*.masq.test.ex"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
@@ -90,6 +102,7 @@ LOG: H=(test) [V4NET.11.12.13] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.u
 >>> end of ACL "check_recipient": DENY
 LOG: H=ten-1.test.ex (test) [V4NET.0.0.1] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.uk>: relay not permitted
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -109,19 +122,27 @@ host in host_lookup?
  list element: 0.0.0.0/0
   host in host_lookup? yes (matched "0.0.0.0/0")
 looking up host name for V4NET.99.99.90
-DNS lookup of 90.99.99.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 90.99.99.V4NET.in-addr.arpa (PTR) succeeded
+ DNS lookup of 90.99.99.V4NET.in-addr.arpa (PTR) using fakens
+ DNS lookup of 90.99.99.V4NET.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "oneback.test.ex"
   alias "host1.masq.test.ex"
-DNS lookup of oneback.test.ex (A) using fakens
-DNS lookup of oneback.test.ex (A) succeeded
-oneback.test.ex V4NET.99.99.90 mx=-1 sort=xx 
+ check dnssec require list
+  oneback.test.ex not in empty list (option unset? cannot trace name)
+ check dnssec request list
+  oneback.test.ex not in empty list (option unset? cannot trace name)
+ DNS lookup of oneback.test.ex (A) using fakens
+ DNS lookup of oneback.test.ex (A) succeeded
+ oneback.test.ex V4NET.99.99.90 mx=-1 sort=xx 
 checking addresses for oneback.test.ex
 Forward DNS security status: unverified
   V4NET.99.99.90 OK
-DNS lookup of host1.masq.test.ex (A) using fakens
-DNS lookup of host1.masq.test.ex (A) succeeded
-host1.masq.test.ex V4NET.90.90.90 mx=-1 sort=xx 
+ check dnssec require list
+  host1.masq.test.ex not in empty list (option unset? cannot trace name)
+ check dnssec request list
+  host1.masq.test.ex not in empty list (option unset? cannot trace name)
+ DNS lookup of host1.masq.test.ex (A) using fakens
+ DNS lookup of host1.masq.test.ex (A) succeeded
+ host1.masq.test.ex V4NET.90.90.90 mx=-1 sort=xx 
 checking addresses for host1.masq.test.ex
 Forward DNS security status: unverified
   V4NET.90.90.90
index b5cde0daf4c99c8b50fde77bb05dc34ce736cdcc..60bbef8c53a5ad8bc2f5184ed9f098a37e6bd9d8 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -8,6 +9,7 @@ local_part=xxx domain=mxt9.test.ex
 calling lookuphost router
 lookuphost router called for xxx@mxt9.test.ex
   domain = mxt9.test.ex
+main lookup for domain
 queued for <unset> transport: local_part = xxx
 domain = mxt9.test.ex
   errors_to=NULL
@@ -20,6 +22,7 @@ routed by lookuphost router
   host ten-3.test.ex [V4NET.0.0.3] MX=7 dnssec=no
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -29,6 +32,7 @@ local_part=xxx domain=mxt9a.test.ex
 calling lookuphost router
 lookuphost router called for xxx@mxt9a.test.ex
   domain = mxt9a.test.ex
+main lookup for domain
 queued for <unset> transport: local_part = xxx
 domain = mxt9a.test.ex
   errors_to=NULL
@@ -41,6 +45,7 @@ routed by lookuphost router
   host ten-3.test.ex [V4NET.0.0.3] MX=7 dnssec=no
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -50,6 +55,7 @@ local_part=xxx domain=mxt9b.test.ex
 calling lookuphost router
 lookuphost router called for xxx@mxt9b.test.ex
   domain = mxt9b.test.ex
+main lookup for domain
 queued for <unset> transport: local_part = xxx
 domain = mxt9b.test.ex
   errors_to=NULL
index 40ba5f191612bd87eb30df0678e8b0068188c580..8c6814062173a82db56293d0c86de33dd73b1cc5 100644 (file)
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing unknown@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> unknown in local_parts?
 >>>  list element: defer
->>> unknown in "defer"? no (end of list)
->>> unknown in "userx"?
+>>> unknown in local_parts? no (end of list)
+>>> unknown in local_parts?
 >>>  list element: userx
->>> unknown in "userx"? no (end of list)
+>>> unknown in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> require: condition test failed in ACL "check_recipient"
@@ -38,12 +41,14 @@ LOG: H=(test) [127.0.0.1] F=<unknown@test.ex> rejected RCPT <userx@test.ex>: Sen
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@unknown.dom.ain
->>> unknown.dom.ain in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  unknown.dom.ain in "test.ex"?
->>>   list element: test.ex
->>>  unknown.dom.ain in "test.ex"? no (end of list)
->>> unknown.dom.ain in "! +local_domains"? yes (end of list)
+>>> unknown.dom.ain in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    unknown.dom.ain in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    unknown.dom.ain in "test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> unknown.dom.ain in domains? yes (end of list)
 >>> calling fail_remote_domains router
 >>> fail_remote_domains router forced address failure
 >>> ----------- end verify ------------
@@ -59,18 +64,21 @@ LOG: H=(test) [127.0.0.1] F=<userx@unknown.dom.ain> rejected RCPT <userx@test.ex
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing "unknown with spaces"@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown with spaces in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> unknown with spaces in local_parts?
 >>>  list element: defer
->>> unknown with spaces in "defer"? no (end of list)
->>> unknown with spaces in "userx"?
+>>> unknown with spaces in local_parts? no (end of list)
+>>> unknown with spaces in local_parts?
 >>>  list element: userx
->>> unknown with spaces in "userx"? no (end of list)
+>>> unknown with spaces in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> require: condition test failed in ACL "check_recipient"
@@ -82,18 +90,21 @@ LOG: H=(test) [127.0.0.1] F=<"unknown with spaces"@test.ex> rejected RCPT <userx
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling userx router
 >>> routed by userx router
 >>> ----------- end verify ------------
@@ -102,9 +113,12 @@ LOG: H=(test) [127.0.0.1] F=<"unknown with spaces"@test.ex> rejected RCPT <userx
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -115,18 +129,21 @@ LOG: H=(test) [127.0.0.1] F=<"unknown with spaces"@test.ex> rejected RCPT <userx
 >>> verifying From: header address unknown@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing unknown@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> unknown in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> unknown in local_parts?
 >>>  list element: defer
->>> unknown in "defer"? no (end of list)
->>> unknown in "userx"?
+>>> unknown in local_parts? no (end of list)
+>>> unknown in local_parts?
 >>>  list element: userx
->>> unknown in "userx"? no (end of list)
+>>> unknown in local_parts? no (end of list)
 >>> no more routers
 >>> require: condition test failed in ACL "check_message"
 >>> end of ACL "check_message": not OK
@@ -136,18 +153,21 @@ LOG: 10HmaX-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> rejected aft
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling userx router
 >>> routed by userx router
 >>> ----------- end verify ------------
@@ -156,9 +176,12 @@ LOG: 10HmaX-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> rejected aft
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -176,15 +199,18 @@ LOG: 10HmaY-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> rejected aft
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing defer@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> defer in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> defer in local_parts?
 >>>  list element: defer
->>>  defer in "defer"? yes (matched "defer")
+>>>  defer in local_parts? yes (matched "defer")
 >>> calling defer router
 >>> defer router: defer for defer@test.ex
 >>>   message: forced defer
@@ -197,18 +223,21 @@ LOG: H=(test) [127.0.0.1] F=<defer@test.ex> temporarily rejected RCPT <userx@tes
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: defer
->>> userx in "defer"? no (end of list)
->>> userx in "userx"?
+>>> userx in local_parts? no (end of list)
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling userx router
 >>> routed by userx router
 >>> ----------- end verify ------------
@@ -217,9 +246,12 @@ LOG: H=(test) [127.0.0.1] F=<defer@test.ex> temporarily rejected RCPT <userx@tes
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -230,15 +262,18 @@ LOG: H=(test) [127.0.0.1] F=<defer@test.ex> temporarily rejected RCPT <userx@tes
 >>> verifying from: header address <defer@test.ex>
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing defer@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> defer in "defer"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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 domains? no (matched "! +local_domains")
+>>> defer in local_parts?
 >>>  list element: defer
->>>  defer in "defer"? yes (matched "defer")
+>>>  defer in local_parts? yes (matched "defer")
 >>> calling defer router
 >>> defer router: defer for defer@test.ex
 >>>   message: forced defer
@@ -303,15 +338,3 @@ LOG: 10HmaZ-000000005vi-0000 H=(test) [127.0.0.1] F=<userx@test.ex> temporarily
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
->>> foo.bar in helo_lookup_domains?
->>>  list element: @
->>>  list element: @[]
->>> foo.bar in helo_lookup_domains? no (end of list)
->>>  list element: *
->>>  host in limits_advertise_hosts? yes (matched "*")
->>> host in dsn_advertise_hosts? no (option unset)
->>> host in pipelining_advertise_hosts?
->>>  list element: *
->>>  host in pipelining_advertise_hosts? yes (matched "*")
->>> host in chunking_advertise_hosts?
->>> host in chunking_advertise_hosts? no (end of list)
index d9f4557f54cc0b7bedf49fe78302f2f45f2224ed..a25f0e5e0d8b1e8a41e8fd7d19d15d128ffacd0b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index 144f84497d6ce8bd9b2085352ceb06b8de5eba74..7d39831317bbfbe6f2f406de672000905e87b82c 100644 (file)
 >>> check domains = +local_domains
 >>> external.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  external.test.ex in "test.ex"?
->>>   list element: test.ex
->>>  external.test.ex in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    external.test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    external.test.ex in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> external.test.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 22)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "*.friendly.test.ex"?
->>>   list element: *.friendly.test.ex
+>>>   start sublist relay_hosts
+>>>    host in "*.friendly.test.ex"?
+>>>    ╎list element: *.friendly.test.ex
 >>> sender host name required, to match against *.friendly.test.ex
 >>> looking up host name for V4NET.0.0.97
 LOG: no host name found for IP address V4NET.0.0.97
->>>   host in "*.friendly.test.ex"? no (failed to find host name for V4NET.0.0.97)
+>>>    ╎host in "*.friendly.test.ex"? no (failed to find host name for V4NET.0.0.97)
+>>>    end sublist relay_hosts
 >>>  host in "+relay_hosts"? no (end of list)
 >>>  accept: condition test failed in ACL "check_recipient"
 >>>  processing "deny" (TESTSUITE/test-config 23)
@@ -54,15 +58,20 @@ LOG: H=(test) [V4NET.0.0.97] F=<userx@test.ex> rejected RCPT <userx@external.tes
 >>>  check domains = +local_domains
 >>>  external.test.ex in "+local_domains"?
 >>>   list element: +local_domains
->>>   external.test.ex in "test.ex"?
->>>    list element: test.ex
->>>   external.test.ex in "test.ex"? no (end of list)
+>>>    start sublist local_domains
+>>>    ╎external.test.ex in "test.ex"?
+>>>    ╎ list element: test.ex
+>>>    ╎external.test.ex in "test.ex"? no (end of list)
+>>>    end sublist local_domains
 >>>  external.test.ex in "+local_domains"? no (end of list)
 >>>  accept: condition test failed in ACL "check_recipient"
 >>>  processing "accept" (TESTSUITE/test-config 22)
 >>>  check hosts = +relay_hosts
 >>>  host in "+relay_hosts"?
 >>>   list element: +relay_hosts
+>>>    start sublist relay_hosts
+>>>   cached no match for +relay_hosts
+>>>   cached lookup data = NULL
 >>>  host in "+relay_hosts"? no (end of list)
 >>>  accept: condition test failed in ACL "check_recipient"
 >>>  processing "deny" (TESTSUITE/test-config 23)
index 5dbcd3e4beccfbb100c610608d87908b37ed287b..afd439edd44bce62ed2fa17290041f4f93387c33 100644 (file)
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@not.test.ex
->>> not.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  not.test.ex in "test.ex"?
->>>   list element: test.ex
->>>  not.test.ex in "test.ex"? no (end of list)
->>> not.test.ex in "! +local_domains"? yes (end of list)
+>>> not.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    not.test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    not.test.ex in "test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> not.test.ex in domains? yes (end of list)
 >>> calling islocal router
 >>> not.test.ex in "*"?
 >>>  list element: *
index d6e29087d97826e540601dac83bb8db36944e100..af38ad441804962f66e694a7fdd1dcd873c3e801 100644 (file)
@@ -132,9 +132,9 @@ LOG: 10HmaX-000000005vi-0000 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.
 >>> routing userx@exim.test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -146,9 +146,9 @@ LOG: 10HmaX-000000005vi-0000 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.
 >>> routing userx@exim.test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -157,9 +157,12 @@ LOG: 10HmaX-000000005vi-0000 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.
 >>> check domains = +local_domains
 >>> exim.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
 >>>  exim.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index a329e1ce515a07f20d3319c90a306b7a271c4051..9adf879de73772819fc5673d4cd0b91eb2170f65 100644 (file)
@@ -70,9 +70,9 @@
 >>> routing userx@exim.test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
@@ -84,9 +84,9 @@
 >>> routing userx@exim.test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> ----------- end verify ------------
 >>> check domains = +local_domains
 >>> exim.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
 >>>  exim.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check domains = +local_domains
 >>> exim.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
 >>>  exim.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -415,9 +421,9 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@exim.test.ex> rejected RCPT <userx@exim.te
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.2]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -506,9 +512,9 @@ LOG: DNS list lookup for V4NET.13.13.100 at rbl.test.ex returned 0.0.0.0; not in
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.100]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -597,9 +603,9 @@ LOG: DNS list lookup for V4NET.13.13.101 at rbl.test.ex returned 126.255.255.255
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.101]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -688,9 +694,9 @@ LOG: DNS list lookup for V4NET.13.13.102 at rbl.test.ex returned 128.0.0.0; not
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.102]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -779,9 +785,9 @@ LOG: DNS list lookup for V4NET.13.13.103 at rbl.test.ex returned 255.255.255.255
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.103]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -871,9 +877,9 @@ LOG: DNS list lookup for V4NET.13.13.104 at rbl.test.ex returned 255.255.255.255
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.104]
 >>> host in hosts_connection_nolog? no (option unset)
@@ -963,8 +969,8 @@ LOG: DNS list lookup for V4NET.13.13.105 at rbl.test.ex returned 255.255.255.254
 >>> routing a@b
 >>> calling system_aliases router
 >>> system_aliases router declined for a@b
->>> a in "userx"?
+>>> a in local_parts?
 >>>  list element: userx
->>> a in "userx"? no (end of list)
+>>> a in local_parts? no (end of list)
 >>> no more routers
 LOG: VRFY failed for a@b H=[V4NET.13.13.105]
index d5376a2b43827bf0ce4eabbf76bc477eabd6aabe..0a73ce275cc6532c88a63247e4fc71814b3af21c 100644 (file)
@@ -1,14 +1,18 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
+domain.com in "test.ex : *.test.ex"? no (end of list)
+domain.com in domains? yes (end of list)
 router_name <my_main_router>
 >>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>
 --------> userx@domain.com <--------
@@ -20,7 +24,8 @@ hostlist:
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111/ip4.ip4.ip4.ip4 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@domain.com)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from ip4.ip4.ip4.ip4 ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from ip4.ip4.ip4.ip4 ...
+connected
   SMTP<< 220 ESMTP
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -57,6 +62,7 @@ cmd buf flush ddd bytes (more expected)
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
 Leaving my_smtp transport
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx@domain.com R=my_main_router T=my_smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
 LOG: MAIN
index 1bbb9fe95ae2bef0063dee93d3fcb1712aeb77f4..176539a66e1db3545fc077afff75f3571b57a0f8 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@mxt10.test.ex
 >>> calling domainlist router
->>> mxt10.test.ex in "*"?
->>>  list element: *
->>>  mxt10.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   mxt10.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   mxt10.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    mxt10.test.ex in dnssec_request_domains? yes (matched "*")
 >>> domainlist router declined for x@mxt10.test.ex
 >>> "more" is false: skipping remaining routers
 >>> no more routers
@@ -45,9 +48,12 @@ LOG: H=(test) [V4NET.9.8.7] F=<x@mxt10.test.ex> rejected RCPT <x@y>: Sender veri
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@ten-1.test.ex
 >>> calling domainlist router
->>> ten-1.test.ex in "*"?
->>>  list element: *
->>>  ten-1.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   ten-1.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   ten-1.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    ten-1.test.ex in dnssec_request_domains? yes (matched "*")
 >>> routed by domainlist router
 >>> ----------- end verify ------------
 >>> require: condition test succeeded in ACL "check_recipient"
@@ -56,9 +62,12 @@ LOG: H=(test) [V4NET.9.8.7] F=<x@mxt10.test.ex> rejected RCPT <x@y>: Sender veri
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@mxt10.test.ex
 >>> calling domainlist router
->>> mxt10.test.ex in "*"?
->>>  list element: *
->>>  mxt10.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   mxt10.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   mxt10.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    mxt10.test.ex in dnssec_request_domains? yes (matched "*")
 >>> domainlist router declined for x@mxt10.test.ex
 >>> "more" is false: skipping remaining routers
 >>> no more routers
index b2ae45a2574e822e5759602f63f12f6dbb910bcf..81bf94397b7d39d65c6cd6cdb4b62b0e1ec290a4 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -6,6 +7,8 @@ routing x@ten
 --------> domainlist1 router <--------
 local_part=x domain=ten
 checking domains
+ten in "<- test1 - test2-test3--4"? no (end of list)
+ten in domains? yes (end of list)
 calling domainlist1 router
 domainlist1 router called for x@ten
   domain = ten
@@ -30,10 +33,13 @@ routing y@two
 --------> domainlist1 router <--------
 local_part=y domain=two
 checking domains
+two in "<- test1 - test2-test3--4"? no (end of list)
+two in domains? yes (end of list)
 calling domainlist1 router
 domainlist1 router called for y@two
   domain = two
 route_item = ten <+V4NET.0.0.0+V4NET.0.0.1 byname
+two in "ten"? no (end of list)
 route_item = two   V4NET.0.0.2:V4NET.0.0.4 byname
 original list of hosts = 'V4NET.0.0.2:V4NET.0.0.4' options = 'byname'
 expanded list of hosts = 'V4NET.0.0.2:V4NET.0.0.4' options = 'byname'
@@ -122,19 +128,25 @@ routing x@one
 --------> domainlist1 router <--------
 local_part=x domain=one
 checking domains
+one in "<- test1 - test2-test3--4"? no (end of list)
+one in domains? yes (end of list)
 calling domainlist1 router
 domainlist1 router called for x@one
   domain = one
 route_item = ten <+V4NET.0.0.0+V4NET.0.0.1 byname
+one in "ten"? no (end of list)
 route_item = two   V4NET.0.0.2:V4NET.0.0.4 byname
+one in "two"? no (end of list)
 domainlist1 router declined for x@one
 --------> domainlist2 router <--------
 local_part=x domain=one
 checking domains
+one in domains? yes (end of list)
 calling domainlist2 router
 domainlist2 router called for x@one
   domain = one
 route_item = six <+V4NET.0.0.6+V4NET.0.0.7 byname
+one in "six"? no (end of list)
 route_item = one   V4NET.0.0.2:V4NET.0.0.4 byname
 original list of hosts = 'V4NET.0.0.2:V4NET.0.0.4' options = 'byname'
 expanded list of hosts = 'V4NET.0.0.2:V4NET.0.0.4' options = 'byname'
@@ -156,15 +168,20 @@ routing x@six
 --------> domainlist1 router <--------
 local_part=x domain=six
 checking domains
+six in "<- test1 - test2-test3--4"? no (end of list)
+six in domains? yes (end of list)
 calling domainlist1 router
 domainlist1 router called for x@six
   domain = six
 route_item = ten <+V4NET.0.0.0+V4NET.0.0.1 byname
+six in "ten"? no (end of list)
 route_item = two   V4NET.0.0.2:V4NET.0.0.4 byname
+six in "two"? no (end of list)
 domainlist1 router declined for x@six
 --------> domainlist2 router <--------
 local_part=x domain=six
 checking domains
+six in domains? yes (end of list)
 calling domainlist2 router
 domainlist2 router called for x@six
   domain = six
index 3a5a6fd65c6aa204ad9708db36dd597fee311e4e..e5f23273c8b137e511ba50726672ac6602609657 100644 (file)
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -50,9 +52,11 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -93,9 +97,11 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -108,10 +114,12 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "V4NET.0.0.1 : V4NET.0.0.2"?
->>>   list element: V4NET.0.0.1
->>>   list element: V4NET.0.0.2
->>>   host in "V4NET.0.0.1 : V4NET.0.0.2"? yes (matched "V4NET.0.0.2")
+>>>   start sublist relay_hosts
+>>>    host in "V4NET.0.0.1 : V4NET.0.0.2"?
+>>>    ╎list element: V4NET.0.0.1
+>>>    ╎list element: V4NET.0.0.2
+>>>    ╎host in "V4NET.0.0.1 : V4NET.0.0.2"? yes (matched "V4NET.0.0.2")
+>>>   end sublist relay_hosts
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -126,9 +134,11 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -141,6 +151,9 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
+>>>   start sublist relay_hosts
+>>>  cached yes match for +relay_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+relay_hosts"? yes (matched "+relay_hosts" - cached)
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -167,9 +180,11 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -182,10 +197,12 @@ LOG: H=(test) [V4NET.0.0.1] F=<x@y.z> rejected RCPT <a@b.c>: invalid sender
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "V4NET.0.0.1 : V4NET.0.0.2"?
->>>   list element: V4NET.0.0.1
->>>   list element: V4NET.0.0.2
->>>  host in "V4NET.0.0.1 : V4NET.0.0.2"? no (end of list)
+>>>   start sublist relay_hosts
+>>>    host in "V4NET.0.0.1 : V4NET.0.0.2"?
+>>>    ╎list element: V4NET.0.0.1
+>>>    ╎list element: V4NET.0.0.2
+>>>    host in "V4NET.0.0.1 : V4NET.0.0.2"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
@@ -204,9 +221,11 @@ LOG: H=(test) [V4NET.0.0.3] F=<x@y.z> rejected RCPT <a@b.c>: relay not permitted
 >>> check domains = +local_domains
 >>> b.c in "+local_domains"?
 >>>  list element: +local_domains
->>>  b.c in "test.ex"?
->>>   list element: test.ex
->>>  b.c in "test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    b.c in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    b.c in "test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> b.c in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 21)
@@ -219,6 +238,9 @@ LOG: H=(test) [V4NET.0.0.3] F=<x@y.z> rejected RCPT <a@b.c>: relay not permitted
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
+>>>   start sublist relay_hosts
+>>>  cached no match for +relay_hosts
+>>>  cached lookup data = NULL
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 26)
index dad95576f1a12eb2ea2fc9b8199db207363df8df..75986186e64161ec0ae770a650163036a2683c7b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -7,14 +8,19 @@ routing xx@mxt6.test.ex
 --------> failuphost router <--------
 local_part=xx domain=mxt6.test.ex
 checking domains
+mxt6.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt6.test.ex in domains? yes (end of list)
 checking local_parts
+xx in local_parts? no (end of list)
 failuphost router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xx domain=mxt6.test.ex
 checking domains
+mxt6.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@mxt6.test.ex
   domain = mxt6.test.ex
+main lookup for domain
 set transport remote_smtp
 queued for remote_smtp transport: local_part = xx
 domain = mxt6.test.ex
@@ -26,6 +32,7 @@ routed by lookuphost router
   host ten-1.test.ex [V4NET.0.0.1] MX=5 dnssec=no
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -34,24 +41,32 @@ routing myhost.test.ex@mxt1.test.ex
 --------> failuphost router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
+myhost.test.ex in local_parts? no (end of list)
 failuphost router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for myhost.test.ex@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: passed to next router (self = pass)
 lookuphost router passed for myhost.test.ex@mxt1.test.ex
 --------> fail router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
+myhost.test.ex in local_parts? no (end of list)
 fail router skipped: local_parts mismatch
 --------> self router <--------
 local_part=myhost.test.ex domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self router
 self router called for myhost.test.ex@mxt1.test.ex
@@ -72,6 +87,7 @@ routed by self router
   host myhost.test.ex [V4NET.10.10.10]
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -80,24 +96,32 @@ routing xx@mxt1.test.ex
 --------> failuphost router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
+xx in local_parts? no (end of list)
 failuphost router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: passed to next router (self = pass)
 lookuphost router passed for xx@mxt1.test.ex
 --------> fail router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
+xx in local_parts? no (end of list)
 fail router skipped: local_parts mismatch
 --------> self router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self router
 self router called for xx@mxt1.test.ex
@@ -112,6 +136,7 @@ self router passed for xx@mxt1.test.ex
 --------> self2 router <--------
 local_part=xx domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 self_hostname=eximtesthost.test.ex
 calling self2 router
 self2 router called for xx@mxt1.test.ex
@@ -132,6 +157,7 @@ routed by self2 router
   host myhost.test.ex [V4NET.10.10.10]
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -140,19 +166,25 @@ routing xx@not-exist.test.ex
 --------> failuphost router <--------
 local_part=xx domain=not-exist.test.ex
 checking domains
+not-exist.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+not-exist.test.ex in domains? yes (end of list)
 checking local_parts
+xx in local_parts? no (end of list)
 failuphost router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xx domain=not-exist.test.ex
 checking domains
+not-exist.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for xx@not-exist.test.ex
   domain = not-exist.test.ex
+main lookup for domain
 lookuphost router declined for xx@not-exist.test.ex
 "more" is false: skipping remaining routers
 no more routers
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -161,14 +193,18 @@ routing ff@mxt1.test.ex
 --------> failuphost router <--------
 local_part=ff domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
 calling failuphost router
 failuphost router called for ff@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: address failed (self = fail)
 failuphost router forced address failure
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -177,19 +213,25 @@ routing fff@mxt1.test.ex
 --------> failuphost router <--------
 local_part=fff domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in "test.ex : myhost.test.ex"? no (end of list)
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
+fff in local_parts? no (end of list)
 failuphost router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=fff domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 calling lookuphost router
 lookuphost router called for fff@mxt1.test.ex
   domain = mxt1.test.ex
+main lookup for domain
 lowest numbered MX record points to local host: mxt1.test.ex: passed to next router (self = pass)
 lookuphost router passed for fff@mxt1.test.ex
 --------> fail router <--------
 local_part=fff domain=mxt1.test.ex
 checking domains
+mxt1.test.ex in domains? yes (end of list)
 checking local_parts
 self_hostname=eximtesthost.test.ex
 calling fail router
index 55fd2bcb093293382ffe7b47ac47585d5682555e..5d4eb6dc19ab6d9e43a86b1e7e3c7c8d86917157 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -17,7 +19,7 @@ appendfile: mode=600 notify_comsat=0 quota=52428800 warning=41%
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -31,6 +33,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 quota = 52428800 threshold = 21495808 old size = sssss message size = sss
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 appendfile transport returned OK for userx@myhost.test.ex
 added retry item for T:userx@myhost.test.ex: errno=dd more_errno=dd flags=1
 LOG: MAIN
index b45971a07240cfc052ddedbdbbe80d04294d6de6..afaf051372ee5ee5257b88f02288c679cc47c8ff 100644 (file)
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing user@bad.domain
->>> bad.domain in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  bad.domain in "test.ex"?
->>>   list element: test.ex
->>>  bad.domain in "test.ex"? no (end of list)
->>> bad.domain in "! +local_domains"? yes (end of list)
+>>> bad.domain in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    bad.domain in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    bad.domain in "test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> bad.domain in domains? yes (end of list)
 >>> calling fail_sender router
 >>> bad.domain in "bad.domain"?
 >>>  list element: bad.domain
@@ -53,20 +55,25 @@ LOG: H=(test) [V4NET.0.0.0] F=<user@bad.domain> rejected RCPT <userx@test.ex>: S
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing user@bad.domain2
->>> bad.domain2 in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  bad.domain2 in "test.ex"?
->>>   list element: test.ex
->>>  bad.domain2 in "test.ex"? no (end of list)
->>> bad.domain2 in "! +local_domains"? yes (end of list)
+>>> bad.domain2 in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    bad.domain2 in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    bad.domain2 in "test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> bad.domain2 in domains? yes (end of list)
 >>> calling fail_sender router
 >>> bad.domain2 in "bad.domain"?
 >>>  list element: bad.domain
 >>> bad.domain2 in "bad.domain"? no (end of list)
 >>> fail_sender router declined for user@bad.domain2
->>> bad.domain2 in "! +local_domains"?
->>>  list element: ! +local_domains
->>> bad.domain2 in "! +local_domains"? yes (end of list)
+>>> bad.domain2 in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>  cached no match for +local_domains
+>>>  cached lookup data = NULL
+>>> bad.domain2 in domains? yes (end of list)
 >>> calling fail_sender2 router
 >>> bad.domain2 in "bad.domain2"?
 >>>  list element: bad.domain2
@@ -98,32 +105,43 @@ LOG: H=(test) [V4NET.0.0.0] F=<user@bad.domain2> rejected RCPT <userx@test.ex>:
 >>> check verify = sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing user@ten-1.test.ex
->>> ten-1.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  ten-1.test.ex in "test.ex"?
->>>   list element: test.ex
->>>  ten-1.test.ex in "test.ex"? no (end of list)
->>> ten-1.test.ex in "! +local_domains"? yes (end of list)
+>>> ten-1.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    ten-1.test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ten-1.test.ex in "test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> ten-1.test.ex in domains? yes (end of list)
 >>> calling fail_sender router
 >>> ten-1.test.ex in "bad.domain"?
 >>>  list element: bad.domain
 >>> ten-1.test.ex in "bad.domain"? no (end of list)
 >>> fail_sender router declined for user@ten-1.test.ex
->>> ten-1.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>> ten-1.test.ex in "! +local_domains"? yes (end of list)
+>>> ten-1.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>  cached no match for +local_domains
+>>>  cached lookup data = NULL
+>>> ten-1.test.ex in domains? yes (end of list)
 >>> calling fail_sender2 router
 >>> ten-1.test.ex in "bad.domain2"?
 >>>  list element: bad.domain2
 >>> ten-1.test.ex in "bad.domain2"? no (end of list)
 >>> fail_sender2 router declined for user@ten-1.test.ex
->>> ten-1.test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>> ten-1.test.ex in "! +local_domains"? yes (end of list)
+>>> ten-1.test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>  cached no match for +local_domains
+>>>  cached lookup data = NULL
+>>> ten-1.test.ex in domains? yes (end of list)
 >>> calling lookuphost router
->>> ten-1.test.ex in "*"?
->>>  list element: *
->>>  ten-1.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   ten-1.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   ten-1.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    ten-1.test.ex in dnssec_request_domains? yes (matched "*")
 >>> routed by lookuphost router
 >>> ----------- end verify ------------
 >>> require: condition test succeeded in ACL "check_recipient"
@@ -131,9 +149,12 @@ LOG: H=(test) [V4NET.0.0.0] F=<user@bad.domain2> rejected RCPT <userx@test.ex>:
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 36ab7a1b4f74026b72373456c0d1154de191fc5f..3501e48a7dd29c6726dbbaa67b5b8f7643c035e2 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -16,37 +17,42 @@ routing userx@test.again.dns
 --------> srv router <--------
 local_part=userx domain=test.again.dns
 checking local_parts
-userx in "^srv"?
+userx in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' not found in local cache
  compiled RE '^srv' saved in local cache
-userx in "^srv"? no (end of list)
+userx in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userx domain=test.again.dns
 checking local_parts
-userx in "usery:userz"?
+userx in local_parts?
  list element: usery
  list element: userz
-userx in "usery:userz"? no (end of list)
+userx in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=userx domain=test.again.dns
 checking local_parts
-userx in "!userd"?
+userx in local_parts?
  list element: !userd
-userx in "!userd"? yes (end of list)
+userx in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for userx@test.again.dns
   domain = test.again.dns
-test.again.dns in "*"?
- list element: *
- test.again.dns in "*"? yes (matched "*")
-DNS lookup of test.again.dns (MX) using fakens
-DNS lookup of test.again.dns (MX) gave TRY_AGAIN
-test.again.dns in dns_again_means_nonexist? no (option unset)
-returning DNS_AGAIN
- writing neg-cache entry for test.again.dns-MX-xxxx, ttl -1
+main lookup for domain
+ check dnssec require list
+  test.again.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.again.dns in dnssec_request_domains?
+   list element: *
+   test.again.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of test.again.dns (MX) using fakens
+ DNS lookup of test.again.dns (MX) gave TRY_AGAIN
+ test.again.dns in dns_again_means_nonexist? no (option unset)
+ returning DNS_AGAIN
+  writing neg-cache entry for test.again.dns-MX-xxxx, ttl -1
+ test.again.dns not in empty list (option unset? cannot trace name)
 lookuphost router: defer for userx@test.again.dns
   message: host lookup did not complete
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -58,32 +64,37 @@ routing abcd@test.again.dns
 --------> srv router <--------
 local_part=abcd domain=test.again.dns
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=test.again.dns
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=test.again.dns
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@test.again.dns
   domain = test.again.dns
-test.again.dns in "*"?
- list element: *
- test.again.dns in "*"? yes (matched "*")
-DNS lookup of test.again.dns (MX): using cached value DNS_AGAIN
+main lookup for domain
+ check dnssec require list
+  test.again.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.again.dns in dnssec_request_domains?
+   list element: *
+   test.again.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of test.again.dns (MX): using cached value DNS_AGAIN
+ test.again.dns not in empty list (option unset? cannot trace name)
 lookuphost router: defer for abcd@test.again.dns
   message: host lookup did not complete
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -95,42 +106,45 @@ routing abcd@ten-1.test.ex
 --------> srv router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX) using fakens
-DNS lookup of ten-1.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
-ten-1.test.ex (MX resp) DNSSEC
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX) using fakens
+ DNS lookup of ten-1.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
+ ten-1.test.ex (MX resp) DNSSEC
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 set transport smtp
 queued for smtp transport: local_part = abcd
 domain = ten-1.test.ex
@@ -149,17 +163,17 @@ routing usery@test.again.dns
 --------> srv router <--------
 local_part=usery domain=test.again.dns
 checking local_parts
-usery in "^srv"?
+usery in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-usery in "^srv"? no (end of list)
+usery in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=usery domain=test.again.dns
 checking local_parts
-usery in "usery:userz"?
+usery in local_parts?
  list element: usery
- usery in "usery:userz"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 calling useryz router
 useryz router called for usery@test.again.dns
   domain = test.again.dns
@@ -172,10 +186,12 @@ expanded list of hosts = 'test.again.dns' options = 'bydns'
 set transport smtp
 finding IP address for test.again.dns
 doing DNS lookup
-test.again.dns in "*"?
- list element: *
- test.again.dns in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ test.again.dns in dnssec_require_domains? no (option unset)
+check dnssec request list
+ test.again.dns in dnssec_request_domains?
+  list element: *
+  test.again.dns in dnssec_request_domains? yes (matched "*")
 DNS lookup of test.again.dns (A) using fakens
 DNS lookup of test.again.dns (A) gave TRY_AGAIN
 test.again.dns in dns_again_means_nonexist? no (option unset)
@@ -192,18 +208,18 @@ routing userz@test.again.dns
 --------> srv router <--------
 local_part=userz domain=test.again.dns
 checking local_parts
-userz in "^srv"?
+userz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-userz in "^srv"? no (end of list)
+userz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userz domain=test.again.dns
 checking local_parts
-userz in "usery:userz"?
+userz in local_parts?
  list element: usery
  list element: userz
- userz in "usery:userz"? yes (matched "userz")
+ userz in local_parts? yes (matched "userz")
 calling useryz router
 useryz router called for userz@test.again.dns
   domain = test.again.dns
@@ -215,10 +231,12 @@ original list of hosts = '$domain' options = 'bydns'
 expanded list of hosts = 'test.again.dns' options = 'bydns'
 finding IP address for test.again.dns
 doing DNS lookup
-test.again.dns in "*"?
- list element: *
- test.again.dns in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ test.again.dns in dnssec_require_domains? no (option unset)
+check dnssec request list
+ test.again.dns in dnssec_request_domains?
+  list element: *
+  test.again.dns in dnssec_request_domains? yes (matched "*")
 DNS lookup of test.again.dns (A): using cached value DNS_AGAIN
 useryz router: defer for userz@test.again.dns
   message: host lookup for test.again.dns did not complete (DNS timeout?)
@@ -231,37 +249,40 @@ routing xyz@ten-1.test.ex
 --------> srv router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "^srv"?
+xyz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-xyz in "^srv"? no (end of list)
+xyz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "usery:userz"?
+xyz in local_parts?
  list element: usery
  list element: userz
-xyz in "usery:userz"? no (end of list)
+xyz in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "!userd"?
+xyz in local_parts?
  list element: !userd
-xyz in "!userd"? yes (end of list)
+xyz in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for xyz@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 queued for smtp transport: local_part = xyz
 domain = ten-1.test.ex
   errors_to=NULL
@@ -273,6 +294,7 @@ routed by lookuphost router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -290,36 +312,41 @@ routing userx@test.fail.dns
 --------> srv router <--------
 local_part=userx domain=test.fail.dns
 checking local_parts
-userx in "^srv"?
+userx in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' not found in local cache
  compiled RE '^srv' saved in local cache
-userx in "^srv"? no (end of list)
+userx in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userx domain=test.fail.dns
 checking local_parts
-userx in "usery:userz"?
+userx in local_parts?
  list element: usery
  list element: userz
-userx in "usery:userz"? no (end of list)
+userx in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=userx domain=test.fail.dns
 checking local_parts
-userx in "!userd"?
+userx in local_parts?
  list element: !userd
-userx in "!userd"? yes (end of list)
+userx in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for userx@test.fail.dns
   domain = test.fail.dns
-test.fail.dns in "*"?
- list element: *
- test.fail.dns in "*"? yes (matched "*")
-DNS lookup of test.fail.dns (MX) using fakens
-DNS lookup of test.fail.dns (MX) gave NO_RECOVERY
-returning DNS_FAIL
- writing neg-cache entry for test.fail.dns-MX-xxxx, ttl -1
+main lookup for domain
+ check dnssec require list
+  test.fail.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.fail.dns in dnssec_request_domains?
+   list element: *
+   test.fail.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of test.fail.dns (MX) using fakens
+ DNS lookup of test.fail.dns (MX) gave NO_RECOVERY
+ returning DNS_FAIL
+  writing neg-cache entry for test.fail.dns-MX-xxxx, ttl -1
+ test.fail.dns not in empty list (option unset? cannot trace name)
 lookuphost router: defer for userx@test.fail.dns
   message: host lookup did not complete
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -331,32 +358,37 @@ routing abcd@test.fail.dns
 --------> srv router <--------
 local_part=abcd domain=test.fail.dns
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=test.fail.dns
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=test.fail.dns
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@test.fail.dns
   domain = test.fail.dns
-test.fail.dns in "*"?
- list element: *
- test.fail.dns in "*"? yes (matched "*")
-DNS lookup of test.fail.dns (MX): using cached value DNS_FAIL
+main lookup for domain
+ check dnssec require list
+  test.fail.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.fail.dns in dnssec_request_domains?
+   list element: *
+   test.fail.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of test.fail.dns (MX): using cached value DNS_FAIL
+ test.fail.dns not in empty list (option unset? cannot trace name)
 lookuphost router: defer for abcd@test.fail.dns
   message: host lookup did not complete
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -368,42 +400,45 @@ routing abcd@ten-1.test.ex
 --------> srv router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX) using fakens
-DNS lookup of ten-1.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
-ten-1.test.ex (MX resp) DNSSEC
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX) using fakens
+ DNS lookup of ten-1.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
+ ten-1.test.ex (MX resp) DNSSEC
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 set transport smtp
 queued for smtp transport: local_part = abcd
 domain = ten-1.test.ex
@@ -422,17 +457,17 @@ routing usery@test.fail.dns
 --------> srv router <--------
 local_part=usery domain=test.fail.dns
 checking local_parts
-usery in "^srv"?
+usery in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-usery in "^srv"? no (end of list)
+usery in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=usery domain=test.fail.dns
 checking local_parts
-usery in "usery:userz"?
+usery in local_parts?
  list element: usery
- usery in "usery:userz"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 calling useryz router
 useryz router called for usery@test.fail.dns
   domain = test.fail.dns
@@ -445,10 +480,12 @@ expanded list of hosts = 'test.fail.dns' options = 'bydns'
 set transport smtp
 finding IP address for test.fail.dns
 doing DNS lookup
-test.fail.dns in "*"?
- list element: *
- test.fail.dns in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ test.fail.dns in dnssec_require_domains? no (option unset)
+check dnssec request list
+ test.fail.dns in dnssec_request_domains?
+  list element: *
+  test.fail.dns in dnssec_request_domains? yes (matched "*")
 DNS lookup of test.fail.dns (A) using fakens
 DNS lookup of test.fail.dns (A) gave NO_RECOVERY
 returning DNS_FAIL
@@ -464,18 +501,18 @@ routing userz@test.fail.dns
 --------> srv router <--------
 local_part=userz domain=test.fail.dns
 checking local_parts
-userz in "^srv"?
+userz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-userz in "^srv"? no (end of list)
+userz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userz domain=test.fail.dns
 checking local_parts
-userz in "usery:userz"?
+userz in local_parts?
  list element: usery
  list element: userz
- userz in "usery:userz"? yes (matched "userz")
+ userz in local_parts? yes (matched "userz")
 calling useryz router
 useryz router called for userz@test.fail.dns
   domain = test.fail.dns
@@ -487,10 +524,12 @@ original list of hosts = '$domain' options = 'bydns'
 expanded list of hosts = 'test.fail.dns' options = 'bydns'
 finding IP address for test.fail.dns
 doing DNS lookup
-test.fail.dns in "*"?
- list element: *
- test.fail.dns in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ test.fail.dns in dnssec_require_domains? no (option unset)
+check dnssec request list
+ test.fail.dns in dnssec_request_domains?
+  list element: *
+  test.fail.dns in dnssec_request_domains? yes (matched "*")
 DNS lookup of test.fail.dns (A): using cached value DNS_FAIL
 useryz router: defer for userz@test.fail.dns
   message: host lookup for test.fail.dns did not complete (DNS timeout?)
@@ -503,37 +542,40 @@ routing xyz@ten-1.test.ex
 --------> srv router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "^srv"?
+xyz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-xyz in "^srv"? no (end of list)
+xyz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "usery:userz"?
+xyz in local_parts?
  list element: usery
  list element: userz
-xyz in "usery:userz"? no (end of list)
+xyz in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "!userd"?
+xyz in local_parts?
  list element: !userd
-xyz in "!userd"? yes (end of list)
+xyz in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for xyz@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 queued for smtp transport: local_part = xyz
 domain = ten-1.test.ex
   errors_to=NULL
@@ -545,6 +587,7 @@ routed by lookuphost router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -562,37 +605,41 @@ routing userx@nonexist.test.ex
 --------> srv router <--------
 local_part=userx domain=nonexist.test.ex
 checking local_parts
-userx in "^srv"?
+userx in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' not found in local cache
  compiled RE '^srv' saved in local cache
-userx in "^srv"? no (end of list)
+userx in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userx domain=nonexist.test.ex
 checking local_parts
-userx in "usery:userz"?
+userx in local_parts?
  list element: usery
  list element: userz
-userx in "usery:userz"? no (end of list)
+userx in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=userx domain=nonexist.test.ex
 checking local_parts
-userx in "!userd"?
+userx in local_parts?
  list element: !userd
-userx in "!userd"? yes (end of list)
+userx in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for userx@nonexist.test.ex
   domain = nonexist.test.ex
-nonexist.test.ex in "*"?
- list element: *
- nonexist.test.ex in "*"? yes (matched "*")
-DNS lookup of nonexist.test.ex (MX) using fakens
-DNS lookup of nonexist.test.ex (MX) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-faking res_search(MX) response length as 65535
- writing neg-cache entry for nonexist.test.ex-MX-xxxx, ttl 3000
+main lookup for domain
+ check dnssec require list
+  nonexist.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  nonexist.test.ex in dnssec_request_domains?
+   list element: *
+   nonexist.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of nonexist.test.ex (MX) using fakens
+ DNS lookup of nonexist.test.ex (MX) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for nonexist.test.ex-MX-xxxx, ttl 3000
 lookuphost router declined for userx@nonexist.test.ex
 "more" is false: skipping remaining routers
 no more routers
@@ -605,32 +652,36 @@ routing abcd@nonexist.test.ex
 --------> srv router <--------
 local_part=abcd domain=nonexist.test.ex
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=nonexist.test.ex
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=nonexist.test.ex
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@nonexist.test.ex
   domain = nonexist.test.ex
-nonexist.test.ex in "*"?
- list element: *
- nonexist.test.ex in "*"? yes (matched "*")
-DNS lookup of nonexist.test.ex (MX): using cached value DNS_NOMATCH
+main lookup for domain
+ check dnssec require list
+  nonexist.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  nonexist.test.ex in dnssec_request_domains?
+   list element: *
+   nonexist.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of nonexist.test.ex (MX): using cached value DNS_NOMATCH
 lookuphost router declined for abcd@nonexist.test.ex
 "more" is false: skipping remaining routers
 no more routers
@@ -643,42 +694,45 @@ routing abcd@ten-1.test.ex
 --------> srv router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "^srv"?
+abcd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-abcd in "^srv"? no (end of list)
+abcd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "usery:userz"?
+abcd in local_parts?
  list element: usery
  list element: userz
-abcd in "usery:userz"? no (end of list)
+abcd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=abcd domain=ten-1.test.ex
 checking local_parts
-abcd in "!userd"?
+abcd in local_parts?
  list element: !userd
-abcd in "!userd"? yes (end of list)
+abcd in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for abcd@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX) using fakens
-DNS lookup of ten-1.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
-ten-1.test.ex (MX resp) DNSSEC
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX) using fakens
+ DNS lookup of ten-1.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
+ ten-1.test.ex (MX resp) DNSSEC
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 set transport smtp
 queued for smtp transport: local_part = abcd
 domain = ten-1.test.ex
@@ -697,17 +751,17 @@ routing usery@nonexist.test.ex
 --------> srv router <--------
 local_part=usery domain=nonexist.test.ex
 checking local_parts
-usery in "^srv"?
+usery in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-usery in "^srv"? no (end of list)
+usery in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=usery domain=nonexist.test.ex
 checking local_parts
-usery in "usery:userz"?
+usery in local_parts?
  list element: usery
- usery in "usery:userz"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 calling useryz router
 useryz router called for usery@nonexist.test.ex
   domain = nonexist.test.ex
@@ -720,10 +774,12 @@ expanded list of hosts = 'nonexist.test.ex' options = 'bydns'
 set transport smtp
 finding IP address for nonexist.test.ex
 doing DNS lookup
-nonexist.test.ex in "*"?
- list element: *
- nonexist.test.ex in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ nonexist.test.ex in dnssec_require_domains? no (option unset)
+check dnssec request list
+ nonexist.test.ex in dnssec_request_domains?
+  list element: *
+  nonexist.test.ex in dnssec_request_domains? yes (matched "*")
 DNS lookup of nonexist.test.ex (A) using fakens
 DNS lookup of nonexist.test.ex (A) gave HOST_NOT_FOUND
 returning DNS_NOMATCH
@@ -740,18 +796,18 @@ routing userz@nonexist.test.ex
 --------> srv router <--------
 local_part=userz domain=nonexist.test.ex
 checking local_parts
-userz in "^srv"?
+userz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-userz in "^srv"? no (end of list)
+userz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userz domain=nonexist.test.ex
 checking local_parts
-userz in "usery:userz"?
+userz in local_parts?
  list element: usery
  list element: userz
- userz in "usery:userz"? yes (matched "userz")
+ userz in local_parts? yes (matched "userz")
 calling useryz router
 useryz router called for userz@nonexist.test.ex
   domain = nonexist.test.ex
@@ -763,10 +819,12 @@ original list of hosts = '$domain' options = 'bydns'
 expanded list of hosts = 'nonexist.test.ex' options = 'bydns'
 finding IP address for nonexist.test.ex
 doing DNS lookup
-nonexist.test.ex in "*"?
- list element: *
- nonexist.test.ex in "*"? yes (matched "*")
- list element: *
+check dnssec require list
+ nonexist.test.ex in dnssec_require_domains? no (option unset)
+check dnssec request list
+ nonexist.test.ex in dnssec_request_domains?
+  list element: *
+  nonexist.test.ex in dnssec_request_domains? yes (matched "*")
 DNS lookup of nonexist.test.ex (A): using cached value DNS_NOMATCH
 useryz router: defer for userz@nonexist.test.ex
   message: lookup of host "nonexist.test.ex" failed in useryz router
@@ -779,37 +837,40 @@ routing xyz@ten-1.test.ex
 --------> srv router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "^srv"?
+xyz in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-xyz in "^srv"? no (end of list)
+xyz in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "usery:userz"?
+xyz in local_parts?
  list element: usery
  list element: userz
-xyz in "usery:userz"? no (end of list)
+xyz in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=xyz domain=ten-1.test.ex
 checking local_parts
-xyz in "!userd"?
+xyz in local_parts?
  list element: !userd
-xyz in "!userd"? yes (end of list)
+xyz in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for xyz@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
- list element: *
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX): using cached value DNS_NODATA
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 queued for smtp transport: local_part = xyz
 domain = ten-1.test.ex
   errors_to=NULL
@@ -821,6 +882,7 @@ routed by lookuphost router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -838,25 +900,29 @@ routing srv@test.again.dns
 --------> srv router <--------
 local_part=srv domain=test.again.dns
 checking local_parts
-srv in "^srv"?
+srv in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' not found in local cache
  compiled RE '^srv' saved in local cache
- srv in "^srv"? yes (matched "^srv")
+ srv in local_parts? yes (matched "^srv")
 calling srv router
 srv router called for srv@test.again.dns
   domain = test.again.dns
-test.again.dns in "*"?
- list element: *
- test.again.dns in "*"? yes (matched "*")
-DNS lookup of _smtp._tcp.test.again.dns (SRV) using fakens
-DNS lookup of _smtp._tcp.test.again.dns (SRV) gave TRY_AGAIN
-_smtp._tcp.test.again.dns in dns_again_means_nonexist? no (option unset)
-returning DNS_AGAIN
- writing neg-cache entry for _smtp._tcp.test.again.dns-SRV-xxxx, ttl -1
-test.again.dns in "test.fail.dns"?
- list element: test.fail.dns
-test.again.dns in "test.fail.dns"? no (end of list)
+main lookup for domain
+ check dnssec require list
+  test.again.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.again.dns in dnssec_request_domains?
+   list element: *
+   test.again.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of _smtp._tcp.test.again.dns (SRV) using fakens
+ DNS lookup of _smtp._tcp.test.again.dns (SRV) gave TRY_AGAIN
+ _smtp._tcp.test.again.dns in dns_again_means_nonexist? no (option unset)
+ returning DNS_AGAIN
+  writing neg-cache entry for _smtp._tcp.test.again.dns-SRV-xxxx, ttl -1
+ test.again.dns in srv_fail_domains?
+  list element: test.fail.dns
+ test.again.dns in srv_fail_domains? no (end of list)
 srv router: defer for srv@test.again.dns
   message: host lookup did not complete
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -868,42 +934,46 @@ routing srv@test.fail.dns
 --------> srv router <--------
 local_part=srv domain=test.fail.dns
 checking local_parts
-srv in "^srv"?
+srv in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
- srv in "^srv"? yes (matched "^srv")
+ srv in local_parts? yes (matched "^srv")
 calling srv router
 srv router called for srv@test.fail.dns
   domain = test.fail.dns
-test.fail.dns in "*"?
- list element: *
- test.fail.dns in "*"? yes (matched "*")
-DNS lookup of _smtp._tcp.test.fail.dns (SRV) using fakens
-DNS lookup of _smtp._tcp.test.fail.dns (SRV) gave NO_RECOVERY
-returning DNS_FAIL
- writing neg-cache entry for _smtp._tcp.test.fail.dns-SRV-xxxx, ttl -1
-test.fail.dns in "test.fail.dns"?
- list element: test.fail.dns
- test.fail.dns in "test.fail.dns"? yes (matched "test.fail.dns")
-DNS_FAIL treated as DNS_NODATA (domain in srv_fail_domains)
-DNS lookup of test.fail.dns (MX) using fakens
-DNS lookup of test.fail.dns (MX) gave NO_RECOVERY
-returning DNS_FAIL
- writing neg-cache entry for test.fail.dns-MX-xxxx, ttl -1
-test.fail.dns in "test.fail.dns"?
- list element: test.fail.dns
- test.fail.dns in "test.fail.dns"? yes (matched "test.fail.dns")
-DNS_FAIL treated as DNS_NODATA (domain in mx_fail_domains)
- list element: *
-DNS lookup of test.fail.dns (A) using fakens
-DNS lookup of test.fail.dns (A) gave NO_RECOVERY
-returning DNS_FAIL
- writing neg-cache entry for test.fail.dns-A-xxxx, ttl -1
+main lookup for domain
+ check dnssec require list
+  test.fail.dns in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.fail.dns in dnssec_request_domains?
+   list element: *
+   test.fail.dns in dnssec_request_domains? yes (matched "*")
+ DNS lookup of _smtp._tcp.test.fail.dns (SRV) using fakens
+ DNS lookup of _smtp._tcp.test.fail.dns (SRV) gave NO_RECOVERY
+ returning DNS_FAIL
+  writing neg-cache entry for _smtp._tcp.test.fail.dns-SRV-xxxx, ttl -1
+ test.fail.dns in srv_fail_domains?
+  list element: test.fail.dns
+  test.fail.dns in srv_fail_domains? yes (matched "test.fail.dns")
+ DNS_FAIL treated as DNS_NODATA (domain in srv_fail_domains)
+ DNS lookup of test.fail.dns (MX) using fakens
+ DNS lookup of test.fail.dns (MX) gave NO_RECOVERY
+ returning DNS_FAIL
+  writing neg-cache entry for test.fail.dns-MX-xxxx, ttl -1
+ test.fail.dns in mx_fail_domains?
+  list element: test.fail.dns
+  test.fail.dns in mx_fail_domains? yes (matched "test.fail.dns")
+ DNS_FAIL treated as DNS_NODATA (domain in mx_fail_domains)
+ DNS lookup of test.fail.dns (A) using fakens
+ DNS lookup of test.fail.dns (A) gave NO_RECOVERY
+ returning DNS_FAIL
+  writing neg-cache entry for test.fail.dns-A-xxxx, ttl -1
 srv router: defer for srv@test.fail.dns
   message: host lookup did not complete
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -921,37 +991,41 @@ routing userx@nonexist.example.com
 --------> srv router <--------
 local_part=userx domain=nonexist.example.com
 checking local_parts
-userx in "^srv"?
+userx in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' not found in local cache
  compiled RE '^srv' saved in local cache
-userx in "^srv"? no (end of list)
+userx in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userx domain=nonexist.example.com
 checking local_parts
-userx in "usery:userz"?
+userx in local_parts?
  list element: usery
  list element: userz
-userx in "usery:userz"? no (end of list)
+userx in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=userx domain=nonexist.example.com
 checking local_parts
-userx in "!userd"?
+userx in local_parts?
  list element: !userd
-userx in "!userd"? yes (end of list)
+userx in local_parts? yes (end of list)
 calling lookuphost router
 lookuphost router called for userx@nonexist.example.com
   domain = nonexist.example.com
-nonexist.example.com in "*"?
- list element: *
- nonexist.example.com in "*"? yes (matched "*")
-DNS lookup of nonexist.example.com (MX) using fakens
-DNS lookup of nonexist.example.com (MX) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-faking res_search(MX) response length as 65535
- writing neg-cache entry for nonexist.example.com-MX-xxxx, ttl 2
+main lookup for domain
+ check dnssec require list
+  nonexist.example.com in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  nonexist.example.com in dnssec_request_domains?
+   list element: *
+   nonexist.example.com in dnssec_request_domains? yes (matched "*")
+ DNS lookup of nonexist.example.com (MX) using fakens
+ DNS lookup of nonexist.example.com (MX) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for nonexist.example.com-MX-xxxx, ttl 2
 lookuphost router declined for userx@nonexist.example.com
 "more" is false: skipping remaining routers
 no more routers
@@ -964,25 +1038,25 @@ routing userd@nonexist.example.com
 --------> srv router <--------
 local_part=userd domain=nonexist.example.com
 checking local_parts
-userd in "^srv"?
+userd in local_parts?
  list element: ^srv
  compiled caseless RE '^srv' found in local cache
-userd in "^srv"? no (end of list)
+userd in local_parts? no (end of list)
 srv router skipped: local_parts mismatch
 --------> useryz router <--------
 local_part=userd domain=nonexist.example.com
 checking local_parts
-userd in "usery:userz"?
+userd in local_parts?
  list element: usery
  list element: userz
-userd in "usery:userz"? no (end of list)
+userd in local_parts? no (end of list)
 useryz router skipped: local_parts mismatch
 --------> lookuphost router <--------
 local_part=userd domain=nonexist.example.com
 checking local_parts
-userd in "!userd"?
+userd in local_parts?
  list element: !userd
- userd in "!userd"? no (matched "!userd")
+ userd in local_parts? no (matched "!userd")
 lookuphost router skipped: local_parts mismatch
 --------> delay router <--------
 local_part=userd domain=nonexist.example.com
@@ -997,15 +1071,19 @@ checking "condition" "${acl {delay}}"...
 calling delay router
 delay router called for userd@nonexist.example.com
   domain = nonexist.example.com
-nonexist.example.com in "*"?
- list element: *
- nonexist.example.com in "*"? yes (matched "*")
-DNS lookup of nonexist.example.com (MX): cached value DNS_NOMATCH past valid time
-DNS lookup of nonexist.example.com (MX) using fakens
-DNS lookup of nonexist.example.com (MX) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-faking res_search(MX) response length as 65535
- update neg-cache entry for nonexist.example.com-MX-xxxx, ttl 2
+main lookup for domain
+ check dnssec require list
+  nonexist.example.com in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  nonexist.example.com in dnssec_request_domains?
+   list element: *
+   nonexist.example.com in dnssec_request_domains? yes (matched "*")
+ DNS lookup of nonexist.example.com (MX): cached value DNS_NOMATCH past valid time
+ DNS lookup of nonexist.example.com (MX) using fakens
+ DNS lookup of nonexist.example.com (MX) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ faking res_search(MX) response length as 65535
+  update neg-cache entry for nonexist.example.com-MX-xxxx, ttl 2
 delay router declined for userd@nonexist.example.com
 "more" is false: skipping remaining routers
 no more routers
index ad5b632f18174fe4b54648dc3b6dd5d1e92edce1..c03f53a2d6f3aa3376d89e626e2f97daa0ee26df 100644 (file)
@@ -1,7 +1,8 @@
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 delivering 10HmbL-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -834,7 +835,8 @@ LOG: MAIN
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 delivering 10HmbP-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
index f791c35cc9e95676b1e46aae03027ab1e992780a..f725b6d3a18c7eadb7231e5f5ae584069bdf9b4e 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -8,19 +9,28 @@ LOG: queue_run MAIN
 queue running combined directories
 looking in TESTSUITE/spool//input
 delivering 10HmaX-000000005vi-0000 (queue run pid p1234)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmaY-000000005vi-0000 (queue run pid p1234)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1240 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 queue running combined directories
 looking in TESTSUITE/spool//input
 delivering 10HmaX-000000005vi-0000 (queue run pid p1234)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -36,17 +46,21 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:351:.:250'
+>>>>>>>>>>>>>>>> Exim pid=p1241 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => a@test.ex F=<CALLER@test.ex> R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 OK"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmaY-000000005vi-0000 (queue run pid p1234)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
   SMTP|> MAIL FROM:<CALLER@test.ex>
@@ -63,15 +77,17 @@ T: send_to_server  (ACL)
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:351:.:QUIT+:250:250'
+>>>>>>>>>>>>>>>> Exim pid=p1244 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => b@test.ex F=<CALLER@test.ex> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* L C="250 OK"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1240 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1243 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qq
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -81,19 +97,28 @@ LOG: queue_run MAIN
 queue running combined directories
 looking in TESTSUITE/spool//input
 delivering 10HmaZ-000000005vi-0000 (queue run pid p1235)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1245 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1246 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmbA-000000005vi-0000 (queue run pid p1235)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1242 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1247 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1248 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 queue running combined directories
 looking in TESTSUITE/spool//input
 delivering 10HmaZ-000000005vi-0000 (queue run pid p1235)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -109,40 +134,50 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:550:503:503:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1249 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** a@test.ex F=<CALLER@test.ex> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after pipelined MAIL FROM:<CALLER@test.ex>: 550 NO
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmaZ-000000005vi-0000 U=EXIMUSER P=local S=sss
->>>>>>>>>>>>>>>> Exim pid=p1243 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1250 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1244 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1251 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmbA-000000005vi-0000 (queue run pid p1235)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
+>>>>>>>>>>>>>>>> Exim pid=p1252 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == b@test.ex R=client T=send_to_server defer (dd): Connection refused
->>>>>>>>>>>>>>>> Exim pid=p1245 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1253 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1235 -qq
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1236 -qqf
 delivering 10HmbA-000000005vi-0000 (queue run pid p1236)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1246 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1254 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1255 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmbB-000000005vi-0000 (queue run pid p1236)
 R: bounce  (ACL)
 LOG: MAIN
@@ -151,15 +186,21 @@ LOG: MAIN
   CALLER@test.ex: error ignored
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1247 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1256 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmbC-000000005vi-0000 (queue run pid p1236)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
->>>>>>>>>>>>>>>> Exim pid=p1248 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1257 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1258 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 delivering 10HmbA-000000005vi-0000 (queue run pid p1236)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -174,24 +215,29 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:550:503:RSET:250'
+>>>>>>>>>>>>>>>> Exim pid=p1259 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** b@test.ex F=<CALLER@test.ex> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<b@test.ex>: 550 Unknown
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmbA-000000005vi-0000 U=EXIMUSER P=local S=sss
->>>>>>>>>>>>>>>> Exim pid=p1249 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1260 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1250 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1261 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmbC-000000005vi-0000 (queue run pid p1236)
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 R: client  (ACL)
 T: send_to_server  (ACL)
   SMTP|> MAIL FROM:<CALLER@test.ex>
@@ -208,11 +254,12 @@ T: send_to_server  (ACL)
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:351:.:QUIT+:250:250'
+>>>>>>>>>>>>>>>> Exim pid=p1263 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => c@test.ex F=<CALLER@test.ex> R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* L C="250 OK"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1251 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1262 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1236 -qqf
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 0a4c4f1df623eac4b1d260a51d2c58815eb9b40d..87667b9f105f3b607a09c4224993bd73de4e8a57 100644 (file)
@@ -1,6 +1,7 @@
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -20,7 +21,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -40,7 +42,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -60,7 +63,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -78,7 +82,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -97,7 +102,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -115,7 +121,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from 1.1.1.1 ... LOG: MAIN
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from 1.1.1.1 ...
+LOG: MAIN
   bind of [1.1.1.1]:1111 failed
 unable to bind outgoing SMTP call to 1.1.1.1: Netwk addr not available
  failed: Netwk addr not available
@@ -129,7 +136,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -147,7 +155,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -166,7 +175,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -184,15 +194,18 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
-Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
+Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN REJECT
   H=(test) [V4NET.0.0.3] U=root F=<uncheckable@localhost1> temporarily rejected RCPT <z@remote.domain>: Could not complete recipient verify callout
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -210,7 +223,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -228,7 +242,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -253,7 +268,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -280,7 +296,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250- wotcher sverifier
@@ -298,7 +315,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250- wotcher rverifier
@@ -318,7 +336,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250- wotcher rverifier
@@ -338,7 +357,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250- wotcher rverifier
@@ -364,7 +384,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> LHLO myhost.test.ex
   SMTP<< 250 OK
@@ -382,7 +403,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP(closed)<<
   SMTP(close)>>
 cmdlog: '(unset)'
@@ -394,7 +416,8 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 LOG: smtp_connection MAIN
   SMTP connection from root
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN REJECT
   H=(test) [V4NET.0.0.1] U=root sender verify defer for <bad@localhost1>: Could not complete sender verify callout: 127.0.0.1 [127.0.0.1] : Connection refused
 LOG: MAIN REJECT
index 2a618bd17a8de2b2362da50913a59c19d65c8570..211211964c092d45fb8863590836d9e6a7222532 100644 (file)
 >>> check domains = +relay_domains
 >>> d in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  d in "@mx_any"?
->>>   list element: @mx_any
->>>  d in "@mx_any"? no (end of list)
+>>>   start sublist relay_domains
+>>>    d in "@mx_any"?
+>>>    ╎list element: @mx_any
+>>>    ╎check dnssec require list
+>>>    ╎check dnssec request list
+>>>    d in "@mx_any"? no (end of list)
+>>>   end sublist relay_domains
 >>> d in "+relay_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 20)
@@ -30,10 +34,15 @@ LOG: H=(test) [V4NET.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
 >>> check domains = +relay_domains
 >>> mxt1.test.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  mxt1.test.ex in "@mx_any"?
->>>   list element: @mx_any
+>>>   start sublist relay_domains
+>>>    mxt1.test.ex in "@mx_any"?
+>>>    ╎list element: @mx_any
+>>>    ╎check dnssec require list
+>>>    ╎check dnssec request list
 >>> local host has lowest MX
->>>   mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
+>>>    ╎mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'mxt1.test.ex' value '@mx_any'
 >>>  mxt1.test.ex in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -42,12 +51,17 @@ LOG: H=(test) [V4NET.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
 >>> check domains = +relay_domains
 >>> mxt6.test.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  mxt6.test.ex in "@mx_any"?
->>>   list element: @mx_any
+>>>   start sublist relay_domains
+>>>    mxt6.test.ex in "@mx_any"?
+>>>    ╎list element: @mx_any
+>>>    ╎check dnssec require list
+>>>    ╎check dnssec request list
 >>> local host in host list - removed hosts:
 >>>   ten-2.test.ex V4NET.0.0.2 6
 >>>   eximtesthost.test.ex ip4.ip4.ip4.ip4 6
->>>   mxt6.test.ex in "@mx_any"? yes (matched "@mx_any")
+>>>    ╎mxt6.test.ex in "@mx_any"? yes (matched "@mx_any")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'mxt6.test.ex' value '@mx_any'
 >>>  mxt6.test.ex in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 3e3f2678b863a5f105684a60887fb01573f2c778..c92fc3e09df3e3e48f9c40db089b43d40c9be878 100644 (file)
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing faq@nl.demon.net
->>> nl.demon.net in "*.demon.net"?
+>>> nl.demon.net in domains?
 >>>  list element: *.demon.net
->>>  nl.demon.net in "*.demon.net"? yes (matched "*.demon.net")
+>>>  nl.demon.net in domains? yes (matched "*.demon.net")
 >>> calling auto_antwoord router
 >>> routed by auto_antwoord router (unseen)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing faq@nl.demon.net
->>> nl.demon.net in "nl.demon.net:*.nl.demon.net:fax-gw.demon.nl: www-3.demon.nl : localhost"?
+>>> nl.demon.net in domains?
 >>>  list element: nl.demon.net
->>>  nl.demon.net in "nl.demon.net:*.nl.demon.net:fax-gw.demon.nl: www-3.demon.nl : localhost"? yes (matched "nl.demon.net")
+>>>  nl.demon.net in domains? yes (matched "nl.demon.net")
 >>> calling algemeen_aliases router
 >>> routed by algemeen_aliases router
 >>> ----------- end verify ------------
 >>> check domains = +local_domains
 >>> nl.demon.net in "+local_domains"?
 >>>  list element: +local_domains
->>>  nl.demon.net in "nl.demon.net"?
->>>   list element: nl.demon.net
->>>   nl.demon.net in "nl.demon.net"? yes (matched "nl.demon.net")
+>>>   start sublist local_domains
+>>>    nl.demon.net in "nl.demon.net"?
+>>>    ╎list element: nl.demon.net
+>>>    ╎nl.demon.net in "nl.demon.net"? yes (matched "nl.demon.net")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'nl.demon.net' value 'nl.demon.net'
 >>>  nl.demon.net in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index ff905a491adb785cb1013af9941b56eb5778b2ae..879ba7eebebb6f18684bb969d5175d7560ebcbc4 100644 (file)
@@ -1,22 +1,40 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from sender: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from from: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from to: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from cc: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from bcc: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from reply-to: rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from env-from rewritten as "User@d.domain" by rule 2
+c.domain in "a.domain"? no (end of list)
+User@c.domain in "*@a.domain"? no (end of list)
 LOG: address_rewrite MAIN
   "User@c.domain" from env-to rewritten as "User@d.domain" by rule 2
+User@d.domain in "a@b"? no (end of list)
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
index 558b3675e82985f7a754b894d24455bfc4f0e5cb..816d4dd1a95043196c66f3dc0c821cfc636145d2 100644 (file)
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing oklist@listr.test.ex
->>> listr.test.ex in "listr.test.ex"?
+>>> listr.test.ex in domains?
 >>>  list element: listr.test.ex
->>>  listr.test.ex in "listr.test.ex"? yes (matched "listr.test.ex")
->>> ok@sender in "TESTSUITE/aux-fixed/0251.restrict.oklist"?
+>>>  listr.test.ex in domains? yes (matched "listr.test.ex")
+>>> ok@sender in senders?
 >>>  list element: TESTSUITE/aux-fixed/0251.restrict.oklist
 >>>  sender in "sender"?
 >>>   list element: sender
 >>>   sender in "sender"? yes (matched "sender")
->>>  ok@sender in "TESTSUITE/aux-fixed/0251.restrict.oklist"? yes (matched "ok@sender" in TESTSUITE/aux-fixed/0251.restrict.oklist)
+>>>  ok@sender in senders? yes (matched "ok@sender" in TESTSUITE/aux-fixed/0251.restrict.oklist)
 >>> calling exeter_listr router
 >>> routed by exeter_listr router
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing xxx@listr.test.ex
->>> listr.test.ex in "listr.test.ex"?
+>>> listr.test.ex in domains?
 >>>  list element: listr.test.ex
->>>  listr.test.ex in "listr.test.ex"? yes (matched "listr.test.ex")
->>> ok@sender in "zzzz"?
+>>>  listr.test.ex in domains? yes (matched "listr.test.ex")
+>>> ok@sender in senders?
 >>>  list element: zzzz
 >>>  sender in "zzzz"?
 >>>   list element: zzzz
 >>>  sender in "zzzz"? no (end of list)
->>> ok@sender in "zzzz"? no (end of list)
->>> listr.test.ex in "listr.test.ex"?
+>>> ok@sender in senders? no (end of list)
+>>> listr.test.ex in domains?
 >>>  list element: listr.test.ex
->>>  listr.test.ex in "listr.test.ex"? yes (matched "listr.test.ex")
+>>>  listr.test.ex in domains? yes (matched "listr.test.ex")
 >>> calling exeter_listf router
 >>> routed by exeter_listf router
 >>> ----------- end verify ------------
 >>> check domains = +local_domains
 >>> listr.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  listr.test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>   listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   start sublist local_domains
+>>>    listr.test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    ╎listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'listr.test.ex' value '*.test.ex'
 >>>  listr.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
 >>> check !verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing oklist@listr.test.ex
->>> listr.test.ex in "listr.test.ex"?
+>>> listr.test.ex in domains?
 >>>  list element: listr.test.ex
->>>  listr.test.ex in "listr.test.ex"? yes (matched "listr.test.ex")
->>> bad@sender in "TESTSUITE/aux-fixed/0251.restrict.oklist"?
+>>>  listr.test.ex in domains? yes (matched "listr.test.ex")
+>>> bad@sender in senders?
 >>>  list element: TESTSUITE/aux-fixed/0251.restrict.oklist
->>> bad@sender in "TESTSUITE/aux-fixed/0251.restrict.oklist"? no (end of list)
->>> listr.test.ex in "listr.test.ex"?
+>>> bad@sender in senders? no (end of list)
+>>> listr.test.ex in domains?
 >>>  list element: listr.test.ex
->>>  listr.test.ex in "listr.test.ex"? yes (matched "listr.test.ex")
+>>>  listr.test.ex in domains? yes (matched "listr.test.ex")
 >>> calling exeter_listf router
 >>> routed by exeter_listf router
 >>> ----------- end verify ------------
 >>> check domains = +local_domains
 >>> listr.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  listr.test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>   listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   start sublist local_domains
+>>>    listr.test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    ╎listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'listr.test.ex' value '*.test.ex'
 >>>  listr.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 8a7b911e2f525294f51d1f926b06d2e88a54530b..f44b1e97fafc8589d956cd00b5842b352662633f 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 Writing spool header file: TESTSUITE/spool//input//hdr.10HmbJ-000000005vi-0000
@@ -7,6 +8,7 @@ Renaming spool header file: TESTSUITE/spool//input//10HmbJ-000000005vi-0000-H
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -25,7 +27,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   rz.b@outside 
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: rz.b@outside
 unique = rz.b@outside
@@ -37,22 +38,27 @@ routing rz.b@outside
 --------> r1 router <--------
 local_part=rz.b domain=outside
 checking domains
+outside in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=rz.b domain=outside
 checking domains
+outside in domains? no (end of list)
 r2 router skipped: domains mismatch
 --------> r3 router <--------
 local_part=rz.b domain=outside
 checking local_parts
+rz.b in local_parts? no (end of list)
 r3 router skipped: local_parts mismatch
 --------> r4 router <--------
 local_part=rz.b domain=outside
 checking local_parts
+rz.b in local_parts? no (end of list)
 r4 router skipped: local_parts mismatch
 --------> r5 router <--------
 local_part=rz.b domain=outside
 checking local_parts
+rz.b in local_parts? no (end of list)
 r5 router skipped: local_parts mismatch
 --------> r_remain router <--------
 local_part=rz.b domain=outside
@@ -81,7 +87,10 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  rz.b@outside
-locking TESTSUITE/spool/db/retry.lockfile
+*@outside in "^\*@r5domain.ex"? no (end of list)
+*@outside in "userx@test.ex"? no (end of list)
+outside in "test.ex"? no (end of list)
+*@outside in "test.ex"? no (end of list)
 retry for R:outside = * 0 0
 failing_interval=ttt message_age=ttt
 Writing retry data for R:outside
index 6e0b933663ce3f0abd491ae7dcc20b1b0f8bcc5a..7016b59740eaec1f7687fba71dd5dd7a922df358 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -17,7 +18,7 @@ test.ex in percent_hack_domains?
  list element: +hold_domains
   start sublist hold_domains
    test.ex in "! *.ex"?
-   ╎list element: ! *.ex
+   ╎list element: !*.ex
    ╎test.ex in "! *.ex"? no (matched "! *.ex")
   end sublist hold_domains
  list element: +not_queue_domains
@@ -32,31 +33,31 @@ routing userx@test.ex
 --------> r00 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache"?
+test.ex in domains?
  list element: +nocache
   start sublist nocache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist nocache
-test.ex in "+nocache"? no (end of list)
+test.ex in domains? no (end of list)
 r00 router skipped: domains mismatch
 --------> r01 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache"?
+test.ex in domains?
  list element: +nocache
   start sublist nocache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist nocache
-test.ex in "+nocache"? no (end of list)
+test.ex in domains? no (end of list)
 r01 router skipped: domains mismatch
 --------> r02 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache2"?
+test.ex in domains?
  list element: +nocache2
   start sublist nocache2
    test.ex in "+nocache"?
@@ -68,12 +69,12 @@ test.ex in "+nocache2"?
    ╎ end sublist nocache
    test.ex in "+nocache"? no (end of list)
   end sublist nocache2
-test.ex in "+nocache2"? no (end of list)
+test.ex in domains? no (end of list)
 r02 router skipped: domains mismatch
 --------> r03 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache2"?
+test.ex in domains?
  list element: +nocache2
   start sublist nocache2
    test.ex in "+nocache"?
@@ -85,34 +86,34 @@ test.ex in "+nocache2"?
    ╎ end sublist nocache
    test.ex in "+nocache"? no (end of list)
   end sublist nocache2
-test.ex in "+nocache2"? no (end of list)
+test.ex in domains? no (end of list)
 r03 router skipped: domains mismatch
 --------> r04 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+forcecache"?
+test.ex in domains?
  list element: +forcecache
   start sublist forcecache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist forcecache
-test.ex in "+forcecache"? no (end of list)
+test.ex in domains? no (end of list)
 r04 router skipped: domains mismatch
 --------> r05 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+forcecache"?
+test.ex in domains?
  list element: +forcecache
   start sublist forcecache
  cached no match for +forcecache
  cached lookup data = NULL
-test.ex in "+forcecache"? no (end of list)
+test.ex in domains? no (end of list)
 r05 router skipped: domains mismatch
 --------> r1 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+never_domains : +n1_domains : ! +local_domains"?
+test.ex in domains?
  list element: +never_domains
   start sublist never_domains
    test.ex in "never.ex"?
@@ -125,19 +126,19 @@ test.ex in "+never_domains : +n1_domains : ! +local_domains"?
    ╎list element: never1.ex
    test.ex in "never1.ex"? no (end of list)
   end sublist n1_domains
- list element: ! +local_domains
+ list element: !+local_domains
   start sublist local_domains
    test.ex in "test.ex"?
    ╎list element: test.ex
    ╎test.ex in "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 "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
+ test.ex in domains? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+never_domains : +n2_domains : !+local_domains"?
+test.ex in domains?
  list element: +never_domains
   start sublist never_domains
  cached no match for +never_domains
@@ -156,21 +157,21 @@ test.ex in "+never_domains : +n2_domains : !+local_domains"?
   start sublist local_domains
  cached yes match for +local_domains
  cached lookup data = test.ex
- test.ex in "+never_domains : +n2_domains : !+local_domains"? no (matched "!+local_domains" - cached)
+ test.ex in domains? no (matched "!+local_domains" - cached)
 r2 router skipped: domains mismatch
 --------> r3 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+local_domains"?
+test.ex in domains?
  list element: +local_domains
   start sublist local_domains
  cached yes match for +local_domains
  cached lookup data = test.ex
- test.ex in "+local_domains"? yes (matched "+local_domains" - cached)
+ test.ex in domains? yes (matched "+local_domains" - cached)
 checking local_parts
-userx in "userx"?
+userx in local_parts?
  list element: userx
- userx in "userx"? yes (matched "userx")
+ userx in local_parts? yes (matched "userx")
 calling r3 router
 r3 router called for userx@test.ex
   domain = test.ex
@@ -185,6 +186,7 @@ routed by r3 router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -233,6 +235,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -256,8 +259,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -268,7 +269,7 @@ test.ex in percent_hack_domains?
  list element: +hold_domains
   start sublist hold_domains
    test.ex in "! *.ex"?
-   ╎list element: ! *.ex
+   ╎list element: !*.ex
    ╎test.ex in "! *.ex"? no (matched "! *.ex")
   end sublist hold_domains
  list element: +not_queue_domains
@@ -297,31 +298,31 @@ routing userx@test.ex
 --------> r00 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache"?
+test.ex in domains?
  list element: +nocache
   start sublist nocache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist nocache
-test.ex in "+nocache"? no (end of list)
+test.ex in domains? no (end of list)
 r00 router skipped: domains mismatch
 --------> r01 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache"?
+test.ex in domains?
  list element: +nocache
   start sublist nocache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist nocache
-test.ex in "+nocache"? no (end of list)
+test.ex in domains? no (end of list)
 r01 router skipped: domains mismatch
 --------> r02 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache2"?
+test.ex in domains?
  list element: +nocache2
   start sublist nocache2
    test.ex in "+nocache"?
@@ -333,12 +334,12 @@ test.ex in "+nocache2"?
    ╎ end sublist nocache
    test.ex in "+nocache"? no (end of list)
   end sublist nocache2
-test.ex in "+nocache2"? no (end of list)
+test.ex in domains? no (end of list)
 r02 router skipped: domains mismatch
 --------> r03 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+nocache2"?
+test.ex in domains?
  list element: +nocache2
   start sublist nocache2
    test.ex in "+nocache"?
@@ -350,34 +351,34 @@ test.ex in "+nocache2"?
    ╎ end sublist nocache
    test.ex in "+nocache"? no (end of list)
   end sublist nocache2
-test.ex in "+nocache2"? no (end of list)
+test.ex in domains? no (end of list)
 r03 router skipped: domains mismatch
 --------> r04 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+forcecache"?
+test.ex in domains?
  list element: +forcecache
   start sublist forcecache
    test.ex in "userx"?
    ╎list element: userx
    test.ex in "userx"? no (end of list)
   end sublist forcecache
-test.ex in "+forcecache"? no (end of list)
+test.ex in domains? no (end of list)
 r04 router skipped: domains mismatch
 --------> r05 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+forcecache"?
+test.ex in domains?
  list element: +forcecache
   start sublist forcecache
  cached no match for +forcecache
  cached lookup data = NULL
-test.ex in "+forcecache"? no (end of list)
+test.ex in domains? no (end of list)
 r05 router skipped: domains mismatch
 --------> r1 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+never_domains : +n1_domains : ! +local_domains"?
+test.ex in domains?
  list element: +never_domains
   start sublist never_domains
    test.ex in "never.ex"?
@@ -390,19 +391,19 @@ test.ex in "+never_domains : +n1_domains : ! +local_domains"?
    ╎list element: never1.ex
    test.ex in "never1.ex"? no (end of list)
   end sublist n1_domains
- list element: ! +local_domains
+ list element: !+local_domains
   start sublist local_domains
    test.ex in "test.ex"?
    ╎list element: test.ex
    ╎test.ex in "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 "+never_domains : +n1_domains : ! +local_domains"? no (matched "! +local_domains")
+ test.ex in domains? no (matched "! +local_domains")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+never_domains : +n2_domains : !+local_domains"?
+test.ex in domains?
  list element: +never_domains
   start sublist never_domains
  cached no match for +never_domains
@@ -421,21 +422,21 @@ test.ex in "+never_domains : +n2_domains : !+local_domains"?
   start sublist local_domains
  cached yes match for +local_domains
  cached lookup data = test.ex
- test.ex in "+never_domains : +n2_domains : !+local_domains"? no (matched "!+local_domains" - cached)
+ test.ex in domains? no (matched "!+local_domains" - cached)
 r2 router skipped: domains mismatch
 --------> r3 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "+local_domains"?
+test.ex in domains?
  list element: +local_domains
   start sublist local_domains
  cached yes match for +local_domains
  cached lookup data = test.ex
- test.ex in "+local_domains"? yes (matched "+local_domains" - cached)
+ test.ex in domains? yes (matched "+local_domains" - cached)
 checking local_parts
-userx in "userx"?
+userx in local_parts?
  list element: userx
- userx in "userx"? yes (matched "userx")
+ userx in local_parts? yes (matched "userx")
 calling r3 router
 r3 router called for userx@test.ex
   domain = test.ex
@@ -457,8 +458,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -476,6 +475,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   maildir_use_size_file=no
   locking by lockfile fcntl 
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@test.ex
 t1 transport returned OK for userx@test.ex
 post-process userx@test.ex (0)
@@ -509,6 +509,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -552,7 +553,7 @@ test.ex in percent_hack_domains?
  list element: +hold_domains
   start sublist hold_domains
    test.ex in "! *.ex"?
-   ╎list element: ! *.ex
+   ╎list element: !*.ex
    ╎test.ex in "! *.ex"? no (matched "! *.ex")
   end sublist hold_domains
  list element: +not_queue_domains
@@ -581,12 +582,12 @@ routing error@test.ex
 --------> r0f router <--------
 local_part=error domain=test.ex
 checking domains
-test.ex in "+no_such_list"?
+test.ex in domains?
  list element: +no_such_list
   start sublist no_such_list
 LOG: MAIN PANIC
   unknown named domain list "+no_such_list"
-  test.ex in "+no_such_list"? list match deferred for +no_such_list
+  test.ex in domains? list match deferred for +no_such_list
 domains check lookup or other defer
   ----------- end verify ------------
   accept: condition test deferred in inline ACL
index 34088f60ce00166973c0ef5a9e97c63cfcafbf2e..d19af1f2f99a60e3379e32ecdf09d28cc47fd4a0 100644 (file)
@@ -1,7 +1,8 @@
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 delivering 10HmaX-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-server id
@@ -23,7 +24,8 @@ LOG: MAIN
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 delivering 10HmaY-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 LOG: MAIN
@@ -39,7 +41,8 @@ LOG: MAIN
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 delivering 10HmaZ-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-server id
@@ -60,7 +63,8 @@ LOG: MAIN
 LOG: MAIN
   <= <> R=10HmaZ-000000005vi-0000 U=EXIMUSER P=local S=sss
 delivering 10HmbA-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 LOG: MAIN
index 12c462e5601745fe4cb7b2c237c2ee0d6f5fd865..b92d4d832fc767f5e7e016f4f3a68f70d118d2cf 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -21,12 +22,12 @@ host in host_lookup?
   end sublist lookup_hosts
   host in host_lookup? yes (matched "+lookup_hosts")
 looking up host name for V4NET.2.3.4
-DNS lookup of 4.3.2.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 4.3.2.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for 4.3.2.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
+ DNS lookup of 4.3.2.V4NET.in-addr.arpa (PTR) using fakens
+ DNS lookup of 4.3.2.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for 4.3.2.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
 LOG: host_lookup_failed MAIN
   no host name found for IP address V4NET.2.3.4
 sender_fullhost = [V4NET.2.3.4]
@@ -51,6 +52,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -110,6 +112,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -138,12 +141,12 @@ host in host_lookup?
   end sublist never_hosts
 host in host_lookup? yes (end of list)
 looking up host name for V4NET.10.11.12
-DNS lookup of 12.11.10.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 12.11.10.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for 12.11.10.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
+ DNS lookup of 12.11.10.V4NET.in-addr.arpa (PTR) using fakens
+ DNS lookup of 12.11.10.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for 12.11.10.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
 LOG: host_lookup_failed MAIN
   no host name found for IP address V4NET.10.11.12
 sender_fullhost = [V4NET.10.11.12]
@@ -180,6 +183,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -208,12 +212,12 @@ host in host_lookup?
   end sublist never_hosts
 host in host_lookup? yes (end of list)
 looking up host name for V4NET.1.1.1
-DNS lookup of 1.1.1.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 1.1.1.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for 1.1.1.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
+ DNS lookup of 1.1.1.V4NET.in-addr.arpa (PTR) using fakens
+ DNS lookup of 1.1.1.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for 1.1.1.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
 LOG: host_lookup_failed MAIN
   no host name found for IP address V4NET.1.1.1
 sender_fullhost = [V4NET.1.1.1]
@@ -250,6 +254,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -278,12 +283,12 @@ host in host_lookup?
   end sublist never_hosts
 host in host_lookup? yes (end of list)
 looking up host name for V4NET.2.2.2
-DNS lookup of 2.2.2.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 2.2.2.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for 2.2.2.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
+ DNS lookup of 2.2.2.V4NET.in-addr.arpa (PTR) using fakens
+ DNS lookup of 2.2.2.V4NET.in-addr.arpa (PTR) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for 2.2.2.V4NET.in-addr.arpa-PTR-xxxx, ttl -1
 LOG: host_lookup_failed MAIN
   no host name found for IP address V4NET.2.2.2
 sender_fullhost = [V4NET.2.2.2]
index 6f80654b34e5c945a79a1f4c8ffe110a8c2c9c35..1910c262eec74742455d65720e8dff48145c0f75 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -18,7 +19,7 @@ routing CALLER@test.ex
 --------> r1 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"?
+CALLER in local_parts?
  list element: +never_localparts
   start sublist never_localparts
    CALLER in "never"?
@@ -31,19 +32,19 @@ CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"?
    ╎list element: never1
    CALLER in "never1"? no (end of list)
   end sublist n1_localparts
- list element: ! +local_localparts
+ list element: !+local_localparts
   start sublist local_localparts
    CALLER in "CALLER"?
    ╎list element: CALLER
    ╎CALLER in "CALLER"? yes (matched "CALLER")
   end sublist local_localparts
  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")
+ CALLER in local_parts? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+never_localparts : +n2_localparts : !+local_localparts"?
+CALLER in local_parts?
  list element: +never_localparts
   start sublist never_localparts
  cached no match for +never_localparts
@@ -62,17 +63,17 @@ CALLER in "+never_localparts : +n2_localparts : !+local_localparts"?
   start sublist local_localparts
  cached yes match for +local_localparts
  cached lookup data = CALLER
- CALLER in "+never_localparts : +n2_localparts : !+local_localparts"? no (matched "!+local_localparts" - cached)
+ CALLER in local_parts? no (matched "!+local_localparts" - cached)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+local_localparts"?
+CALLER in local_parts?
  list element: +local_localparts
   start sublist local_localparts
  cached yes match for +local_localparts
  cached lookup data = CALLER
- CALLER in "+local_localparts"? yes (matched "+local_localparts" - cached)
+ CALLER in local_parts? yes (matched "+local_localparts" - cached)
 checking for local user
 seeking password data for user "CALLER": using cached result
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
@@ -90,6 +91,7 @@ routed by r3 router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -138,6 +140,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -161,8 +164,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   CALLER@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -178,7 +179,7 @@ routing CALLER@test.ex
 --------> r1 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"?
+CALLER in local_parts?
  list element: +never_localparts
   start sublist never_localparts
    CALLER in "never"?
@@ -191,19 +192,19 @@ CALLER in "+never_localparts : +n1_localparts : ! +local_localparts"?
    ╎list element: never1
    CALLER in "never1"? no (end of list)
   end sublist n1_localparts
- list element: ! +local_localparts
+ list element: !+local_localparts
   start sublist local_localparts
    CALLER in "CALLER"?
    ╎list element: CALLER
    ╎CALLER in "CALLER"? yes (matched "CALLER")
   end sublist local_localparts
  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")
+ CALLER in local_parts? no (matched "! +local_localparts")
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+never_localparts : +n2_localparts : !+local_localparts"?
+CALLER in local_parts?
  list element: +never_localparts
   start sublist never_localparts
  cached no match for +never_localparts
@@ -222,17 +223,17 @@ CALLER in "+never_localparts : +n2_localparts : !+local_localparts"?
   start sublist local_localparts
  cached yes match for +local_localparts
  cached lookup data = CALLER
- CALLER in "+never_localparts : +n2_localparts : !+local_localparts"? no (matched "!+local_localparts" - cached)
+ CALLER in local_parts? no (matched "!+local_localparts" - cached)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "+local_localparts"?
+CALLER in local_parts?
  list element: +local_localparts
   start sublist local_localparts
  cached yes match for +local_localparts
  cached lookup data = CALLER
- CALLER in "+local_localparts"? yes (matched "+local_localparts" - cached)
+ CALLER in local_parts? yes (matched "+local_localparts" - cached)
 checking for local user
 seeking password data for user "CALLER": using cached result
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
@@ -257,8 +258,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> CALLER@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -276,6 +275,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   maildir_use_size_file=no
   locking by lockfile fcntl 
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling CALLER@test.ex
 t1 transport returned OK for CALLER@test.ex
 post-process CALLER@test.ex (0)
@@ -309,6 +309,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -328,7 +329,7 @@ routing unknown@test.ex
 --------> r1 router <--------
 local_part=unknown domain=test.ex
 checking local_parts
-unknown in "+never_localparts : +n1_localparts : ! +local_localparts"?
+unknown in local_parts?
  list element: +never_localparts
   start sublist never_localparts
    unknown in "never"?
@@ -341,13 +342,13 @@ unknown in "+never_localparts : +n1_localparts : ! +local_localparts"?
    ╎list element: never1
    unknown in "never1"? no (end of list)
   end sublist n1_localparts
- list element: ! +local_localparts
+ list element: !+local_localparts
   start sublist local_localparts
    unknown in "CALLER"?
    ╎list element: CALLER
    unknown in "CALLER"? no (end of list)
   end sublist local_localparts
-unknown in "+never_localparts : +n1_localparts : ! +local_localparts"? yes (end of list)
+unknown in local_parts? yes (end of list)
 calling r1 router
 r1 router called for unknown@test.ex
   domain = test.ex
@@ -359,7 +360,7 @@ r1 router declined for unknown@test.ex
 --------> r2 router <--------
 local_part=unknown domain=test.ex
 checking local_parts
-unknown in "+never_localparts : +n2_localparts : !+local_localparts"?
+unknown in local_parts?
  list element: +never_localparts
   start sublist never_localparts
  cached no match for +never_localparts
@@ -378,39 +379,43 @@ unknown in "+never_localparts : +n2_localparts : !+local_localparts"?
   start sublist local_localparts
  cached no match for +local_localparts
  cached lookup data = NULL
-unknown in "+never_localparts : +n2_localparts : !+local_localparts"? yes (end of list)
+unknown in local_parts? yes (end of list)
 calling r2 router
 r2 router called for unknown@test.ex
   domain = test.ex
-test.ex in "*"?
- list element: *
- test.ex in "*"? yes (matched "*")
-DNS lookup of test.ex (MX) using fakens
-DNS lookup of test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for test.ex-MX-xxxx, ttl 3000
-test.ex (MX resp) DNSSEC
-DNS lookup of test.ex (A) using fakens
-DNS lookup of test.ex (A) gave NO_DATA
-returning DNS_NODATA
-faking res_search(A) response length as 65535
- writing neg-cache entry for test.ex-A-xxxx, ttl 3000
+main lookup for domain
+ check dnssec require list
+  test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  test.ex in dnssec_request_domains?
+   list element: *
+   test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of test.ex (MX) using fakens
+ DNS lookup of test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for test.ex-MX-xxxx, ttl 3000
+ test.ex (MX resp) DNSSEC
+ DNS lookup of test.ex (A) using fakens
+ DNS lookup of test.ex (A) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(A) response length as 65535
+  writing neg-cache entry for test.ex-A-xxxx, ttl 3000
 r2 router declined for unknown@test.ex
 --------> r3 router <--------
 local_part=unknown domain=test.ex
 checking local_parts
-unknown in "+local_localparts"?
+unknown in local_parts?
  list element: +local_localparts
   start sublist local_localparts
  cached no match for +local_localparts
  cached lookup data = NULL
-unknown in "+local_localparts"? no (end of list)
+unknown in local_parts? no (end of list)
 r3 router skipped: local_parts mismatch
 --------> r4 router <--------
 local_part=unknown domain=test.ex
 checking local_parts
-unknown in "+local_localparts : +expanded : +unexpanded"?
+unknown in local_parts?
  list element: +local_localparts
   start sublist local_localparts
  cached no match for +local_localparts
@@ -427,12 +432,12 @@ unknown in "+local_localparts : +expanded : +unexpanded"?
    ╎list element: unexpanded
    unknown in "unexpanded"? no (end of list)
   end sublist unexpanded
-unknown in "+local_localparts : +expanded : +unexpanded"? no (end of list)
+unknown in local_parts? no (end of list)
 r4 router skipped: local_parts mismatch
 --------> r5 router <--------
 local_part=unknown domain=test.ex
 checking local_parts
-unknown in "+local_localparts : +expanded : +unexpanded"?
+unknown in local_parts?
  list element: +local_localparts
   start sublist local_localparts
  cached no match for +local_localparts
@@ -447,7 +452,7 @@ unknown in "+local_localparts : +expanded : +unexpanded"?
   start sublist unexpanded
  cached no match for +unexpanded
  cached lookup data = NULL
-unknown in "+local_localparts : +expanded : +unexpanded"? no (end of list)
+unknown in local_parts? no (end of list)
 r5 router skipped: local_parts mismatch
 no more routers
 search_tidyup called
index 1885579cbe51cc0ee04807117b855d852f5c2c8b..bbd8765683c4ab9345d76b23971d40366898c5b8 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -21,15 +22,15 @@ routing CALLER@test.ex
 --------> rr1 router <--------
 local_part=CALLER domain=test.ex
 checking senders
-CALLER@test.ex in "user1@+funny_domains"?
+CALLER@test.ex in senders?
  list element: user1@+funny_domains
  address match test: subject=CALLER@test.ex pattern=user1@+funny_domains
-CALLER@test.ex in "user1@+funny_domains"? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 rr1 router skipped: senders mismatch
 --------> r1 router <--------
 local_part=CALLER domain=test.ex
 checking senders
-CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"?
+CALLER@test.ex in senders?
  list element: +never_addresses
   start sublist never_addresses
    CALLER@test.ex in "never@test.ex"?
@@ -44,7 +45,7 @@ CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"?
    ╎address match test: subject=CALLER@test.ex pattern=never1@test.ex
    CALLER@test.ex in "never1@test.ex"? no (end of list)
   end sublist n1_addresses
- list element: ! +local_addresses
+ list element: !+local_addresses
   start sublist local_addresses
    CALLER@test.ex in "CALLER@test.ex"?
    ╎list element: CALLER@test.ex
@@ -55,12 +56,12 @@ CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"?
    ╎CALLER@test.ex in "CALLER@test.ex"? yes (matched "CALLER@test.ex")
   end sublist local_addresses
  data from lookup saved for cache for +local_addresses: key 'CALLER@test.ex' value 'CALLER@test.ex'
- CALLER@test.ex in "+never_addresses : +n1_addresses : ! +local_addresses"? no (matched "! +local_addresses")
+ CALLER@test.ex in senders? no (matched "! +local_addresses")
 r1 router skipped: senders mismatch
 --------> r2 router <--------
 local_part=CALLER domain=test.ex
 checking senders
-CALLER@test.ex in "+never_addresses : +n2_addresses : !+local_addresses"?
+CALLER@test.ex in senders?
  list element: +never_addresses
   start sublist never_addresses
  cached no match for +never_addresses
@@ -80,7 +81,7 @@ CALLER@test.ex in "+never_addresses : +n2_addresses : !+local_addresses"?
   start sublist local_addresses
  cached yes match for +local_addresses
  cached lookup data = CALLER@test.ex
- CALLER@test.ex in "+never_addresses : +n2_addresses : !+local_addresses"? no (matched "!+local_addresses" - cached)
+ CALLER@test.ex in senders? no (matched "!+local_addresses" - cached)
 r2 router skipped: senders mismatch
 --------> r3 router <--------
 local_part=CALLER domain=test.ex
@@ -88,12 +89,12 @@ checking for local user
 seeking password data for user "CALLER": using cached result
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 checking senders
-CALLER@test.ex in "+local_addresses"?
+CALLER@test.ex in senders?
  list element: +local_addresses
   start sublist local_addresses
  cached yes match for +local_addresses
  cached lookup data = CALLER@test.ex
- CALLER@test.ex in "+local_addresses"? yes (matched "+local_addresses" - cached)
+ CALLER@test.ex in senders? yes (matched "+local_addresses" - cached)
 calling r3 router
 r3 router called for CALLER@test.ex
   domain = test.ex
@@ -108,6 +109,7 @@ routed by r3 router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 seeking password data for user "CALLER": cache not available
@@ -130,7 +132,7 @@ routing CALLER@test.ex
 --------> rr1 router <--------
 local_part=CALLER domain=test.ex
 checking senders
-user1@fun.1 in "user1@+funny_domains"?
+user1@fun.1 in senders?
  list element: user1@+funny_domains
  address match test: subject=user1@fun.1 pattern=user1@+funny_domains
  fun.1 in "+funny_domains"?
@@ -141,7 +143,7 @@ user1@fun.1 in "user1@+funny_domains"?
    ╎ fun.1 in "fun.1 : fun.2"? yes (matched "fun.1")
    end sublist funny_domains
   fun.1 in "+funny_domains"? yes (matched "+funny_domains")
- user1@fun.1 in "user1@+funny_domains"? yes (matched "user1@+funny_domains")
+ user1@fun.1 in senders? yes (matched "user1@+funny_domains")
 calling rr1 router
 rda_interpret (string): ':fail: matched *@+funny_domains'
 expanded: ':fail: matched *@+funny_domains'
index 0d9e1a3beab5fbf0baa4bb85a13b6700d987e711..ade9584450b1ab9272e3525caed106966a6202d9 100644 (file)
@@ -50,6 +50,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <1@else.where>: domain doesn't
 >>> check domains = @mx_any
 >>> mxt13.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  other1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>   other1.test.ex in hosts_treat_as_local? yes (matched "other1.test.ex")
@@ -65,6 +67,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <1@else.where>: domain doesn't
 >>> check domains = @mx_any
 >>> mxt1.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  eximtesthost.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  eximtesthost.test.ex in hosts_treat_as_local? no (end of list)
@@ -80,6 +84,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <1@else.where>: domain doesn't
 >>> check domains = @mx_any
 >>> mxt6.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -100,6 +106,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <1@else.where>: domain doesn't
 >>> check domains = @mx_any
 >>> mxt9.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -119,6 +127,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <2@mxt9.test.ex>: domain doesn
 >>> check domains = @mx_any
 >>> mxnone.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>> mxnone.test.ex in "@mx_any"? no (end of list)
 >>> require: condition test failed in ACL "acl_rcpt_2"
 >>> end of ACL "acl_rcpt_2": not OK
@@ -129,6 +139,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <2@mxnone.test.ex>: domain doe
 >>> check domains = @mx_primary
 >>> mxt5.test.ex in "@mx_primary"?
 >>>  list element: @mx_primary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -147,6 +159,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <2@mxnone.test.ex>: domain doe
 >>> check domains = @mx_primary
 >>> mxt6.test.ex in "@mx_primary"?
 >>>  list element: @mx_primary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -169,6 +183,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt6.test.ex>: domain doesn
 >>> check domains = @mx_primary
 >>> mxt9.test.ex in "@mx_primary"?
 >>>  list element: @mx_primary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -188,6 +204,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt9.test.ex>: domain doesn
 >>> check domains = @mx_primary
 >>> mxnone.test.ex in "@mx_primary"?
 >>>  list element: @mx_primary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>> mxnone.test.ex in "@mx_primary"? no (end of list)
 >>> require: condition test failed in ACL "acl_rcpt_3"
 >>> end of ACL "acl_rcpt_3": not OK
@@ -198,6 +216,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxnone.test.ex>: domain doe
 >>> check domains = @mx_secondary
 >>> mxt5.test.ex in "@mx_secondary"?
 >>>  list element: @mx_secondary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  eximtesthost.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  eximtesthost.test.ex in hosts_treat_as_local? no (end of list)
@@ -212,6 +232,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxt5.test.ex>: domain doesn
 >>> check domains = @mx_secondary
 >>> mxt6.test.ex in "@mx_secondary"?
 >>>  list element: @mx_secondary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -235,6 +257,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxt5.test.ex>: domain doesn
 >>> check domains = @mx_secondary
 >>> mxt9.test.ex in "@mx_secondary"?
 >>>  list element: @mx_secondary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ten-1.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  ten-1.test.ex in hosts_treat_as_local? no (end of list)
@@ -254,6 +278,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxt9.test.ex>: domain doesn
 >>> check domains = @mx_secondary
 >>> mxnone.test.ex in "@mx_secondary"?
 >>>  list element: @mx_secondary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>> mxnone.test.ex in "@mx_secondary"? no (end of list)
 >>> require: condition test failed in ACL "acl_rcpt_4"
 >>> end of ACL "acl_rcpt_4": not OK
@@ -343,6 +369,8 @@ MUNGED: ::1 will be omitted in what follows
 >>> check domains = @mx_any
 >>> mxt3.test.ex in "@mx_any"?
 >>>  list element: @mx_any
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  not-exist.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  not-exist.test.ex in hosts_treat_as_local? no (end of list)
@@ -362,6 +390,8 @@ MUNGED: ::1 will be omitted in what follows
 >>> check domains = @mx_primary
 >>> mxt3.test.ex in "@mx_primary"?
 >>>  list element: @mx_primary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  not-exist.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  not-exist.test.ex in hosts_treat_as_local? no (end of list)
@@ -380,6 +410,8 @@ LOG: H=(test) [V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt3.test.ex>: domain doesn
 >>> check domains = @mx_secondary
 >>> mxt3.test.ex in "@mx_secondary"?
 >>>  list element: @mx_secondary
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  not-exist.test.ex in hosts_treat_as_local?
 >>>   list element: other1.test.ex
 >>>  not-exist.test.ex in hosts_treat_as_local? no (end of list)
index a41907c738c1cc58f49d9df2b28a9454d8b13314..e4799ceb5e18eb7a2c97202f0a48a1946e86cbbb 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "root": cache not available
@@ -15,6 +16,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 seeking password data for user "root": cache not available
@@ -27,14 +29,18 @@ seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 seeking password data for user "root": cache not available
 getpwnam() succeeded uid=uuuu gid=gggg
+somebody in local_parts? no (end of list)
+somebody in local_parts? no (end of list)
 changed uid/gid: local delivery to somebody <somebody@myhost.test.ex> transport=t1
   uid=EXIM_UID gid=EXIM_GID pid=p1236
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** somebody@myhost.test.ex R=rest T=t1: return message generated
 changed uid/gid: post-delivery tidying
   uid=EXIM_UID gid=EXIM_GID pid=p1235
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1237
 seeking password data for user "root": cache not available
@@ -51,6 +57,7 @@ getpwnam() succeeded uid=uuuu gid=gggg
 LOG: MAIN
   <= <> R=10HmaY-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1238
 seeking password data for user "root": cache not available
@@ -63,8 +70,10 @@ seeking password data for user "CALLER": cache not available
 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID
 seeking password data for user "root": cache not available
 getpwnam() succeeded uid=uuuu gid=gggg
+CALLER in local_parts? no (end of list)
 changed uid/gid: local delivery to CALLER <CALLER@myhost.test.ex> transport=t2
   uid=CALLER_UID gid=CALLER_GID pid=p1239
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => CALLER <CALLER@myhost.test.ex> R=caller T=t2
 changed uid/gid: post-delivery tidying
@@ -78,6 +87,7 @@ LOG: MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1240
 seeking password data for user "root": cache not available
@@ -93,6 +103,7 @@ getpwnam() succeeded uid=uuuu gid=gggg
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1241
 seeking password data for user "root": cache not available
index 2ec78fb58df1db06b251ca4214ec60cbd59e6cca..fb876330cfae117e1421f8f2945b3e119c27c148 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -15,18 +16,23 @@ spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
 log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
 SMTP>> 250 OK
 SMTP<< rcpt to:<one@z>
+one in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< rcpt to:<one@z>
 rate limit RCPT: delay 0.25 sec
+one in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< rcpt to:<one@z>
 rate limit RCPT: delay 0.263 sec
+one in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< rcpt to:<one@z>
 rate limit RCPT: delay 0.276 sec
+one in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< rcpt to:<one@z>
 rate limit RCPT: delay 0.289 sec
+one in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< data
 SMTP>> 354 Enter message, ending with "." on a line by itself
@@ -59,6 +65,7 @@ spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
 log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100
 SMTP>> 250 OK
 SMTP<< rcpt to:<two@z>
+two in "reject"? no (end of list)
 SMTP>> 250 Accepted
 SMTP<< data
 SMTP>> 354 Enter message, ending with "." on a line by itself
@@ -96,6 +103,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -155,6 +163,7 @@ LOG: smtp_connection MAIN
   SMTP connection from (test) [1.2.3.4] D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -215,6 +224,7 @@ LOG: smtp_connection MAIN
   SMTP connection from (test) [V4NET.9.8.7] D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
index b902d1b1fe832c7f6027be8993e59198c98f614d..dc7e0c020d4e4bfd48953bb96fb9d7704221ff65 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -23,6 +24,7 @@ routed by r1 router
   transport: <none>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
index 60c8bba9721c51d2d15220fe0dc2ecc07b2e8888..72553dcd869cd2b33c0fc2e56612589ffd09557f 100644 (file)
 >>>  myhost.test.ex in helo_lookup_domains? yes (matched "@")
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>  check dnssec require list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>> host in hosts_connection_nolog? no (option unset)
 >>>  [127.0.0.1] in helo_lookup_domains? yes (matched "@[]")
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>  check dnssec require list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>>  list element: *
@@ -50,6 +58,7 @@
 >>>  list element: @[]
 >>> rhubarb.custard in helo_lookup_domains? no (end of list)
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -137,6 +146,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 seeking password data for user "CALLER": cache not available
index 5da648d5074b4f2f99a046943e2f36f5a3cdae45..0deee2c7592fd7aa2a0e49aaffd293c9b7481d89 100644 (file)
 >>> check domains = +ok_domains
 >>> ten-1.test.ex in "+ok_domains"?
 >>>  list element: +ok_domains
->>>  ten-1.test.ex in "ten-1.test.ex"?
->>>   list element: ten-1.test.ex
->>>   ten-1.test.ex in "ten-1.test.ex"? yes (matched "ten-1.test.ex")
+>>>   start sublist ok_domains
+>>>    ten-1.test.ex in "ten-1.test.ex"?
+>>>    ╎list element: ten-1.test.ex
+>>>    ╎ten-1.test.ex in "ten-1.test.ex"? yes (matched "ten-1.test.ex")
+>>>   end sublist ok_domains
 >>>  ten-1.test.ex in "+ok_domains"? yes (matched "+ok_domains")
 >>> accept: condition test succeeded in ACL "acl1"
 >>> end of ACL "acl1": ACCEPT
 >>> check domains = +ok_domains
 >>> junk.junk in "+ok_domains"?
 >>>  list element: +ok_domains
->>>  junk.junk in ""?
->>>  junk.junk in ""? no (end of list)
+>>>   start sublist ok_domains
+>>>    junk.junk in ""?
+>>>    junk.junk in ""? no (end of list)
+>>>   end sublist ok_domains
 >>> junk.junk in "+ok_domains"? no (end of list)
 >>> accept: condition test failed in ACL "acl1"
 >>> end of ACL "acl1": implicit DENY
index 37b5cd6416e9ba9b540d611b7235dc4dcd963fe9..b2d3b50b3d1de70081b594ea372959379124ddd8 100644 (file)
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing list1-request@lists.test.ex
->>> lists.test.ex in "lists.test.ex"?
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
 >>> calling r1 router
 >>> routed by r1 router
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing manager-list1@test.ex
->>> test.ex in "lists.test.ex"?
+>>> test.ex in domains?
 >>>  list element: lists.test.ex
->>> test.ex in "lists.test.ex"? no (end of list)
->>> test.ex in "lists.test.ex"?
+>>> test.ex in domains? no (end of list)
+>>> test.ex in domains?
 >>>  list element: lists.test.ex
->>> test.ex in "lists.test.ex"? no (end of list)
->>> anyone@anywhere in ":"?
+>>> test.ex in domains? no (end of list)
+>>> anyone@anywhere in senders?
 >>>  list element: 
 >>>  anywhere in ""?
 >>>  anywhere in ""? no (end of list)
->>> anyone@anywhere in ":"? no (end of list)
+>>> anyone@anywhere in senders? no (end of list)
 >>> calling r5 router
 >>> routed by r5 router
 >>> ----------- end verify ------------
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing list1@lists.test.ex
->>> lists.test.ex in "lists.test.ex"?
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
->>> sub1@test.ex in "lsearch;TESTSUITE/aux-fixed/0306/list1"?
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
+>>> sub1@test.ex in senders?
 >>>  list element: lsearch;TESTSUITE/aux-fixed/0306/list1
->>>  sub1@test.ex in "lsearch;TESTSUITE/aux-fixed/0306/list1"? yes (matched "lsearch;TESTSUITE/aux-fixed/0306/list1")
+>>>  sub1@test.ex in senders? yes (matched "lsearch;TESTSUITE/aux-fixed/0306/list1")
 >>> calling r2 router
 >>> routed by r2 router
 >>> ----------- end verify ------------
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing list1@lists.test.ex
->>> lists.test.ex in "lists.test.ex"?
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
->>> anyone@anywhere in "lsearch;TESTSUITE/aux-fixed/0306/list1"?
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
+>>> anyone@anywhere in senders?
 >>>  list element: lsearch;TESTSUITE/aux-fixed/0306/list1
->>> anyone@anywhere in "lsearch;TESTSUITE/aux-fixed/0306/list1"? no (end of list)
->>> lists.test.ex in "lists.test.ex"?
+>>> anyone@anywhere in senders? no (end of list)
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
 >>> calling r3 router
 >>> r3 router forced address failure
 >>> ----------- end verify ------------
@@ -82,20 +82,20 @@ LOG: H=(test) [1.2.3.4] F=<anyone@anywhere> rejected RCPT <list1@lists.test.ex>:
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing nonlist@lists.test.ex
->>> lists.test.ex in "lists.test.ex"?
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
->>> anyone@anywhere in "*"?
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
+>>> anyone@anywhere in senders?
 >>>  list element: *
 >>>  anywhere in "*"?
 >>>   list element: *
 >>>   anywhere in "*"? yes (matched "*")
->>>  anyone@anywhere in "*"? yes (matched "*")
+>>>  anyone@anywhere in senders? yes (matched "*")
 >>> calling r2 router
 >>> r2 router declined for nonlist@lists.test.ex
->>> lists.test.ex in "lists.test.ex"?
+>>> lists.test.ex in domains?
 >>>  list element: lists.test.ex
->>>  lists.test.ex in "lists.test.ex"? yes (matched "lists.test.ex")
+>>>  lists.test.ex in domains? yes (matched "lists.test.ex")
 >>> calling r3 router
 >>> r3 router forced address failure
 >>> ----------- end verify ------------
index 369fcf453377a0682f773417cce0139f3c0978b3..c030e82321e45303bc32c8698885994a60fd5d60 100644 (file)
@@ -47,6 +47,10 @@ LOG: no host name found for IP address V4NET.0.0.97
 >>> sender host name required, to match against *.test.ex
 >>> looking up host name for V4NET.0.0.1
 >>> IP address lookup yielded "ten-1.test.ex"
+>>>   check dnssec require list
+>>>    ten-1.test.ex not in empty list (option unset? cannot trace name)
+>>>   check dnssec request list
+>>>    ten-1.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for ten-1.test.ex
 >>>   V4NET.0.0.1 OK
 >>>  host in "*.test.ex"? yes (matched "*.test.ex")
index 4dc506af420906357de2e8843c3792ec330380b5..7495a8145c083e5700cdb3f1193e640a4f4b4e17 100644 (file)
@@ -1,16 +1,17 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@the.local.host.name U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmaX-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@ten-1.test.ex
@@ -28,6 +29,7 @@ checking domains
 calling r1 router
 r1 router called for y@ten-1.test.ex
   domain = ten-1.test.ex
+main lookup for domain
 set transport t1
 queued for t1 transport: local_part = y
 domain = ten-1.test.ex
@@ -48,7 +50,7 @@ After routing:
     y@ten-1.test.ex
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   *> x@ten-1.test.ex R=r1 T=t1 H=ten-1.test.ex [V4NET.0.0.1] C="delivery bypassed by -N option"
 LOG: MAIN
@@ -58,17 +60,18 @@ LOG: MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@the.local.host.name U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmaY-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@ten-2.test.ex
@@ -83,12 +86,14 @@ routing y@ten-2.test.ex
 --------> r1 router <--------
 local_part=y domain=ten-2.test.ex
 checking domains
+ten-2.test.ex in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=y domain=ten-2.test.ex
 calling r2 router
 r2 router called for y@ten-2.test.ex
   domain = ten-2.test.ex
+main lookup for domain
 set transport t1
 queued for t1 transport: local_part = y
 domain = ten-2.test.ex
@@ -103,12 +108,14 @@ routing x@ten-2.test.ex
 --------> r1 router <--------
 local_part=x domain=ten-2.test.ex
 checking domains
+ten-2.test.ex in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=x domain=ten-2.test.ex
 calling r2 router
 r2 router called for x@ten-2.test.ex
   domain = ten-2.test.ex
+main lookup for domain
 queued for t1 transport: local_part = x
 domain = ten-2.test.ex
   errors_to=NULL
@@ -125,12 +132,12 @@ After routing:
     y@ten-2.test.ex
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   *> x@ten-2.test.ex R=r2 T=t1 H=ten-2.test.ex [V4NET.0.0.2] C="delivery bypassed by -N option"
 LOG: MAIN
   *> y@ten-2.test.ex R=r2 T=t1 H=ten-2.test.ex [V4NET.0.0.2] C="delivery bypassed by -N option"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index b736cd1603f851cfb21c2be3e3745e8a7489abf0..c3e17caccdc540902cbb0df65b64ca65fdc42c6b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
@@ -34,6 +35,7 @@ LOG: MAIN
 created log directory TESTSUITE/spool/log
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
index d5550ea885e5c9abf264bed0a811937dce36665b..633a5b0abfca80a8a737fe4b304d399b8665b0cd 100644 (file)
@@ -23,16 +23,22 @@ r4: $local_part_data = LOCAL PART DATA
 >>> check domains = +test_domains
 >>> a.b.c in "+test_domains"?
 >>>  list element: +test_domains
->>>  a.b.c in "lsearch; TESTSUITE/aux-fixed/0325.data"?
->>>   list element: lsearch; TESTSUITE/aux-fixed/0325.data
->>>   a.b.c in "lsearch; TESTSUITE/aux-fixed/0325.data"? yes (matched "lsearch; TESTSUITE/aux-fixed/0325.data")
+>>>   start sublist test_domains
+>>>    a.b.c in "lsearch; TESTSUITE/aux-fixed/0325.data"?
+>>>    ╎list element: lsearch;░TESTSUITE/aux-fixed/0325.data
+>>>    ╎a.b.c in "lsearch; TESTSUITE/aux-fixed/0325.data"? yes (matched "lsearch; TESTSUITE/aux-fixed/0325.data")
+>>>   end sublist test_domains
+>>>  data from lookup saved for cache for +test_domains: key 'a.b.c' value 'DOMAIN DATA'
 >>>  a.b.c in "+test_domains"? yes (matched "+test_domains")
 >>> check local_parts = +test_local_parts
 >>> xxx in "+test_local_parts"?
 >>>  list element: +test_local_parts
->>>  xxx in "lsearch;TESTSUITE/aux-fixed/0325.data"?
->>>   list element: lsearch;TESTSUITE/aux-fixed/0325.data
->>>   xxx in "lsearch;TESTSUITE/aux-fixed/0325.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0325.data")
+>>>   start sublist test_local_parts
+>>>    xxx in "lsearch;TESTSUITE/aux-fixed/0325.data"?
+>>>    ╎list element: lsearch;TESTSUITE/aux-fixed/0325.data
+>>>    ╎xxx in "lsearch;TESTSUITE/aux-fixed/0325.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0325.data")
+>>>   end sublist test_local_parts
+>>>  data from lookup saved for cache for +test_local_parts: key 'xxx' value 'LOCAL PART DATA'
 >>>  xxx in "+test_local_parts"? yes (matched "+test_local_parts")
 >>> check condition = ${if eq{$domain_data/$local_part_data}{DOMAIN DATA/LOCAL PART DATA}{no}{yes}}
 >>>                 = no
@@ -41,10 +47,16 @@ r4: $local_part_data = LOCAL PART DATA
 >>> check domains = +test_domains
 >>> a.b.c in "+test_domains"?
 >>>  list element: +test_domains
+>>>   start sublist test_domains
+>>>  cached yes match for +test_domains
+>>>  cached lookup data = DOMAIN DATA
 >>>  a.b.c in "+test_domains"? yes (matched "+test_domains" - cached)
 >>> check local_parts = +test_local_parts
 >>> xxx in "+test_local_parts"?
 >>>  list element: +test_local_parts
+>>>   start sublist test_local_parts
+>>>  cached yes match for +test_local_parts
+>>>  cached lookup data = LOCAL PART DATA
 >>>  xxx in "+test_local_parts"? yes (matched "+test_local_parts" - cached)
 >>>   message: \$domain_data=$domain_data \$local_part_data=$local_part_data
 >>> deny: condition test succeeded in ACL "a1"
index 8cff3bd214f3b8a4bcc27f5cbf98ca7180fed339..70dc4bddb0b1a782087e883b46e9d90c5767f653 100644 (file)
@@ -1,10 +1,10 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: ok@no.delay
 unique = ok@no.delay
@@ -32,20 +32,19 @@ After routing:
     ok@no.delay
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250'
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => ok@no.delay R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1235 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: delay@test.again.dns
 unique = delay@test.again.dns
@@ -79,13 +78,11 @@ After routing:
   Failed addresses:
   Deferred addresses:
     delay@test.again.dns
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => ok@no.delay R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
->>>>>>>>>>>>>>>> Exim pid=p1236 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1237 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: delay@test.again.dns
 unique = delay@test.again.dns
@@ -98,7 +95,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     delay@test.again.dns
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 0ddd349a332e6758b90d231795a99c15ab75067b..8a7d6dd4200c07d35b48dbb493e7dbccaa495e93 100644 (file)
@@ -1,8 +1,8 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: ok@no.delay
 unique = ok@no.delay
@@ -30,20 +30,19 @@ After routing:
     ok@no.delay
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250'
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => ok@no.delay R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK"
 LOG: MAIN
   Completed
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: delay@test.again.dns
 unique = delay@test.again.dns
@@ -77,9 +76,8 @@ After routing:
   Failed addresses:
   Deferred addresses:
     delay@test.again.dns
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => ok@no.delay R=r1 T=t1 H=127.0.0.1 [127.0.0.1]* C="250 OK"
->>>>>>>>>>>>>>>> Exim pid=p1235 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
index c4414fe0c9d66da04dff44c0e1213c5e46ab8be2..454d93956d9ad0aed444be0bce0bb49fbdb8f285 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@ten-1
 >>> calling dnslookup router
->>> ten-1 in "*"?
->>>  list element: *
->>>  ten-1 in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   ten-1 in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   ten-1 in dnssec_request_domains?
+>>>    list element: *
+>>>    ten-1 in dnssec_request_domains? yes (matched "*")
 >>> re-routed to x@ten-1.test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@ten-1.test.ex
 >>> calling dnslookup router
->>> ten-1.test.ex in "*"?
->>>  list element: *
->>>  ten-1.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   ten-1.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   ten-1.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    ten-1.test.ex in dnssec_request_domains? yes (matched "*")
 >>> routed by dnslookup router
 >>> ----------- end verify ------------
 >>> deny: condition test failed in ACL "check_rcpt"
index 0e16a6e37422170c00f6ddc5f969f2bf58c719aa..cde038b41727241c09f0ff884b6f10bbdf190fd1 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
@@ -23,10 +24,10 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:userx@test.ex:<CALLER@test.ex> from subprocess
   added retry item
 LOG: MAIN
@@ -36,7 +37,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  userx@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 retry for R:userx@test.ex:<CALLER@test.ex> = * 0 0
 failing_interval=ttt message_age=ttt
 Writing retry data for R:userx@test.ex:<CALLER@test.ex>
@@ -46,12 +46,12 @@ end of retry processing
 >>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
 no   domain  retry record
@@ -67,11 +67,11 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no host retry record
 no message retry record
 added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1240 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:userx@test.ex:<CALLER@test.ex> from subprocess
   existing delete item dropped
   added retry item
@@ -90,7 +90,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  userx@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 deleted retry information for R:userx@test.ex
 deleted retry information for R:test.ex
 retry for R:userx@test.ex:<CALLER@test.ex> = * 0 0
@@ -99,17 +98,17 @@ Writing retry data for R:userx@test.ex:<CALLER@test.ex>
   first failed=dddd last try=dddd next try=+2 expired=0
   errno=-44 more_errno=dd,A H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Temporary error
 end of retry processing
->>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1235
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
 no   domain  retry record
@@ -125,11 +124,11 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no host retry record
 no message retry record
 added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1242 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:userx@test.ex:<CALLER@test.ex> from subprocess
   existing delete item dropped
   added retry item
@@ -148,7 +147,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  userx@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 deleted retry information for R:userx@test.ex
 deleted retry information for R:test.ex
 retry for R:userx@test.ex:<CALLER@test.ex> = * 0 0
@@ -157,17 +155,17 @@ Writing retry data for R:userx@test.ex:<CALLER@test.ex>
   first failed=dddd last try=dddd next try=+4 expired=0
   errno=-44 more_errno=dd,A H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Temporary error
 end of retry processing
->>>>>>>>>>>>>>>> Exim pid=p1240 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1243 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1235
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1236
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
 no   domain  retry record
@@ -190,7 +188,7 @@ Failed addresses:
 Deferred addresses:
  userx@test.ex: no retry items
 end of retry processing
->>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1244 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1236
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 8dbb1f66f673a0571072570613dfef2058a6ff6c..f7cfee1f8cf5bf7b928e6cd85b9a59556a162610 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
@@ -28,11 +29,11 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 added retry item for R:usery@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:userx@test.ex:<CALLER@test.ex> from subprocess
   added retry item
 reading retry information for R:usery@test.ex:<CALLER@test.ex> from subprocess
@@ -46,7 +47,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  usery@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 retry for R:usery@test.ex:<CALLER@test.ex> = * 0 0
 failing_interval=ttt message_age=ttt
 Writing retry data for R:usery@test.ex:<CALLER@test.ex>
@@ -62,12 +62,12 @@ end of retry processing
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@test.ex
 no   domain  retry record
@@ -91,12 +91,12 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no host retry record
 no message retry record
 added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 added retry item for R:usery@test.ex:<CALLER@test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:userx@test.ex:<CALLER@test.ex> from subprocess
   existing delete item dropped
   added retry item
@@ -128,7 +128,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  usery@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 deleted retry information for R:usery@test.ex
 deleted retry information for R:test.ex
 retry for R:usery@test.ex:<CALLER@test.ex> = * 0 0
@@ -145,7 +144,7 @@ Writing retry data for R:userx@test.ex:<CALLER@test.ex>
   first failed=dddd last try=dddd next try=+4 expired=0
   errno=-44 more_errno=dd,A H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 451 Temporary error
 end of retry processing
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 7e30058bc21f809b02b11875ce1d2fc9b2203e77..724a67d02a77db7462a99de9413ffa1bc740447f 100644 (file)
@@ -1,16 +1,17 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
 delivering 10HmaX-000000005vi-0000
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cms@test.ex
@@ -61,7 +62,6 @@ routed by r2 router
   envelope to: cms@test.ex
   transport: <none>
   errors to postmaster@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: unknown@recurse.test.ex
@@ -100,14 +100,16 @@ v0 router skipped: verify_only set
 --------> r1 router <--------
 local_part=unknown domain=recurse.test.ex
 checking domains
+recurse.test.ex in domains? yes (end of list)
 calling r1 router
 r1 router called for unknown@recurse.test.ex
   domain = recurse.test.ex
+main lookup for domain
 r1 router widened recurse.test.ex to recurse.test.ex.test.ex
+main lookup for domain
 domain changed to recurse.test.ex.test.ex
 rewriting header lines
 re-routed to unknown@recurse.test.ex.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: unknown@recurse.test.ex.test.ex
@@ -121,9 +123,11 @@ v0 router skipped: verify_only set
 --------> r1 router <--------
 local_part=unknown domain=recurse.test.ex.test.ex
 checking domains
+recurse.test.ex.test.ex in domains? yes (end of list)
 calling r1 router
 r1 router called for unknown@recurse.test.ex.test.ex
   domain = recurse.test.ex.test.ex
+main lookup for domain
 set transport t1
 queued for t1 transport: local_part = unknown
 domain = recurse.test.ex.test.ex
@@ -142,18 +146,18 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   *> unknown@recurse.test.ex.test.ex <cms@test.ex> R=r1 T=t1 H=recurse.test.ex.test.ex [V4NET.99.0.2] C="delivery bypassed by -N option"
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cms@test.ex
@@ -204,7 +208,6 @@ routed by r2 router
   envelope to: cms@test.ex
   transport: <none>
   errors to postmaster@test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: unknown@recurse.test.ex
@@ -242,7 +245,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@test.ex
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 7a4f90d9a666b6bc1d48f7992012748cf27ecbd7..f84c58517069c24bed47162787b46d74cb3dcdf7 100644 (file)
@@ -6,6 +6,7 @@ LOG: MAIN
 LOG: MAIN
   Completed
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -53,6 +54,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -N -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -76,8 +78,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   kilos@recurse.test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -93,42 +93,48 @@ routing kilos@recurse.test.ex
 --------> r1 router <--------
 local_part=kilos domain=recurse.test.ex
 checking domains
-recurse.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"?
+recurse.test.ex in domains?
  list element: !thishost.test.ex
  list element: !recurse.test.ex.test.ex
-recurse.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"? yes (end of list)
+recurse.test.ex in domains? yes (end of list)
 calling r1 router
 r1 router called for kilos@recurse.test.ex
   domain = recurse.test.ex
-recurse.test.ex in "*"?
- list element: *
- recurse.test.ex in "*"? yes (matched "*")
-DNS lookup of recurse.test.ex (MX) using fakens
-DNS lookup of recurse.test.ex (MX) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-faking res_search(MX) response length as 65535
- writing neg-cache entry for recurse.test.ex-MX-xxxx, ttl 3000
+main lookup for domain
+ check dnssec require list
+  recurse.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  recurse.test.ex in dnssec_request_domains?
+   list element: *
+   recurse.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of recurse.test.ex (MX) using fakens
+ DNS lookup of recurse.test.ex (MX) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for recurse.test.ex-MX-xxxx, ttl 3000
 r1 router widened recurse.test.ex to recurse.test.ex.test.ex
-recurse.test.ex.test.ex in "*"?
- list element: *
- recurse.test.ex.test.ex in "*"? yes (matched "*")
-DNS lookup of recurse.test.ex.test.ex (MX) using fakens
-DNS lookup of recurse.test.ex.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for recurse.test.ex.test.ex-MX-xxxx, ttl 3000
-recurse.test.ex.test.ex (MX resp) DNSSEC
-DNS lookup of recurse.test.ex.test.ex (A) using fakens
-DNS lookup of recurse.test.ex.test.ex (A) succeeded
-fully qualified name = recurse.test.ex.test.ex
-recurse.test.ex.test.ex V4NET.99.0.2 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  recurse.test.ex.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  recurse.test.ex.test.ex in dnssec_request_domains?
+   list element: *
+   recurse.test.ex.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of recurse.test.ex.test.ex (MX) using fakens
+ DNS lookup of recurse.test.ex.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for recurse.test.ex.test.ex-MX-xxxx, ttl 3000
+ recurse.test.ex.test.ex (MX resp) DNSSEC
+ DNS lookup of recurse.test.ex.test.ex (A) using fakens
+ DNS lookup of recurse.test.ex.test.ex (A) succeeded
+ fully qualified name = recurse.test.ex.test.ex
+ recurse.test.ex.test.ex V4NET.99.0.2 mx=-1 sort=xx 
 domain changed to recurse.test.ex.test.ex
 rewriting header lines
 rewrite_one_header: type=F:
   From: CALLER_NAME <CALLER@test.ex>
 re-routed to kilos@recurse.test.ex.test.ex
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -144,24 +150,24 @@ routing kilos@recurse.test.ex.test.ex
 --------> r1 router <--------
 local_part=kilos domain=recurse.test.ex.test.ex
 checking domains
-recurse.test.ex.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"?
+recurse.test.ex.test.ex in domains?
  list element: !thishost.test.ex
  list element: !recurse.test.ex.test.ex
- recurse.test.ex.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"? no (matched "!recurse.test.ex.test.ex")
+ recurse.test.ex.test.ex in domains? no (matched "!recurse.test.ex.test.ex")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=kilos domain=recurse.test.ex.test.ex
 checking local_parts
-kilos in "miles"?
+kilos in local_parts?
  list element: miles
-kilos in "miles"? no (end of list)
+kilos in local_parts? no (end of list)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=kilos domain=recurse.test.ex.test.ex
 checking local_parts
-kilos in "kilos"?
+kilos in local_parts?
  list element: kilos
- kilos in "kilos"? yes (matched "kilos")
+ kilos in local_parts? yes (matched "kilos")
 calling r3 router
 rda_interpret (string): '$local_part@$domain'
 expanded: 'kilos@recurse.test.ex.test.ex' (tainted)
@@ -174,8 +180,6 @@ r3 router generated kilos@recurse.test.ex.test.ex
 routed by r3 router
   envelope to: kilos@recurse.test.ex.test.ex
   transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -191,17 +195,17 @@ routing kilos@recurse.test.ex.test.ex
 --------> r1 router <--------
 local_part=kilos domain=recurse.test.ex.test.ex
 checking domains
-recurse.test.ex.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"?
+recurse.test.ex.test.ex in domains?
  list element: !thishost.test.ex
  list element: !recurse.test.ex.test.ex
- recurse.test.ex.test.ex in "!thishost.test.ex : !recurse.test.ex.test.ex"? no (matched "!recurse.test.ex.test.ex")
+ recurse.test.ex.test.ex in domains? no (matched "!recurse.test.ex.test.ex")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=kilos domain=recurse.test.ex.test.ex
 checking local_parts
-kilos in "miles"?
+kilos in local_parts?
  list element: miles
-kilos in "miles"? no (end of list)
+kilos in local_parts? no (end of list)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 r3 router skipped: previously routed kilos@recurse.test.ex.test.ex
@@ -228,8 +232,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> kilos@recurse.test.ex.test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -248,6 +250,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   locking by lockfile fcntl 
 *** delivery by t2 transport bypassed by -N option
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling kilos@recurse.test.ex.test.ex/t2
 t2 transport returned OK for kilos@recurse.test.ex.test.ex
 post-process kilos@recurse.test.ex.test.ex (0)
index 35e64615b085fed1f9f29149360a0e0a0cda01b6..84d28eb82102d3a515f3169694b67540f6e9cd9f 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -80,19 +81,19 @@ routing x@x.test.ex
 --------> r1 router <--------
 local_part=x domain=x.test.ex
 checking domains
-x.test.ex in "+relay_domains"?
+x.test.ex in domains?
  list element: +relay_domains
   start sublist relay_domains
    x.test.ex in "a.b.c"?
    ╎list element: a.b.c
    x.test.ex in "a.b.c"? no (end of list)
   end sublist relay_domains
-x.test.ex in "+relay_domains"? no (end of list)
+x.test.ex in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=x domain=x.test.ex
 checking domains
-x.test.ex in "+local_domains"?
+x.test.ex in domains?
  list element: +local_domains
   start sublist local_domains
    x.test.ex in "*.test.ex"?
@@ -100,7 +101,7 @@ x.test.ex in "+local_domains"?
    ╎x.test.ex in "*.test.ex"? yes (matched "*.test.ex")
   end sublist local_domains
  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")
+ x.test.ex in domains? yes (matched "+local_domains")
 calling r2 router
 r2 router called for x@x.test.ex
   domain = x.test.ex
index a094006597d584652f3e5df1abf29acf6911caed..4a33285162300375ace5815159d895f9d7bb479c 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -70,13 +71,16 @@ routing solik@otherhost.test.ex
 --------> r2 router <--------
 local_part=solik domain=otherhost.test.ex
 checking domains
+otherhost.test.ex in domains? yes (end of list)
 calling r2 router
 r2 router called for solik@otherhost.test.ex
   domain = otherhost.test.ex
+main lookup for domain
 r2 router declined for solik@otherhost.test.ex
 --------> r3 router <--------
 local_part=solik domain=otherhost.test.ex
 checking domains
+otherhost.test.ex in domains? yes (end of list)
 checking "condition" "${if eq{$address_data}{}{no}{yes}}"...
 processing address_data
 calling r3 router
@@ -96,18 +100,22 @@ routing solik@otherhost.sub.test.ex
 --------> r2 router <--------
 local_part=solik domain=otherhost.sub.test.ex
 checking domains
+otherhost.sub.test.ex in domains? yes (end of list)
 calling r2 router
 r2 router called for solik@otherhost.sub.test.ex
   domain = otherhost.sub.test.ex
+main lookup for domain
 r2 router declined for solik@otherhost.sub.test.ex
 --------> r3 router <--------
 local_part=solik domain=otherhost.sub.test.ex
 checking domains
+otherhost.sub.test.ex in domains? yes (end of list)
 checking "condition" "${if eq{$address_data}{}{no}{yes}}"...
 r3 router skipped: condition failure
 --------> r4 router <--------
 local_part=solik domain=otherhost.sub.test.ex
 checking domains
+otherhost.sub.test.ex in domains? yes (end of list)
 calling r4 router
 rda_interpret (string): ':fail:Can't route to $domain'
 expanded: ':fail:Can't route to otherhost.sub.test.ex' (tainted)
@@ -138,9 +146,11 @@ routing xxx@ten-1.test.ex
 --------> r2 router <--------
 local_part=xxx domain=ten-1.test.ex
 checking domains
+ten-1.test.ex in domains? yes (end of list)
 calling r2 router
 r2 router called for xxx@ten-1.test.ex
   domain = ten-1.test.ex
+main lookup for domain
 set transport t1
 queued for t1 transport: local_part = xxx
 domain = ten-1.test.ex
@@ -173,13 +183,16 @@ routing xxx@testsub.test.ex
 --------> r2 router <--------
 local_part=xxx domain=testsub.test.ex
 checking domains
+testsub.test.ex in domains? yes (end of list)
 calling r2 router
 r2 router called for xxx@testsub.test.ex
   domain = testsub.test.ex
+main lookup for domain
 r2 router declined for xxx@testsub.test.ex
 --------> r3 router <--------
 local_part=xxx domain=testsub.test.ex
 checking domains
+testsub.test.ex in domains? yes (end of list)
 checking "condition" "${if eq{$address_data}{}{no}{yes}}"...
 processing address_data
 calling r3 router
@@ -199,9 +212,11 @@ routing xxx@testsub.sub.test.ex
 --------> r2 router <--------
 local_part=xxx domain=testsub.sub.test.ex
 checking domains
+testsub.sub.test.ex in domains? yes (end of list)
 calling r2 router
 r2 router called for xxx@testsub.sub.test.ex
   domain = testsub.sub.test.ex
+main lookup for domain
 queued for t1 transport: local_part = xxx
 domain = testsub.sub.test.ex
   errors_to=NULL
index 0d3ccb719458da512cf801bd901eb48868e04b0e..e67722e26bee372c9f0da1adc279c66c2c173ada 100644 (file)
@@ -1,29 +1,42 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-discarded duplicate host ten-1.test.ex (MX=8)
-fully qualified name = mxt9.test.ex
-host_find_bydns yield = HOST_FOUND (3); returned hosts:
-  ten-1.test.ex V4NET.0.0.1 MX=5 
-  ten-2.test.ex V4NET.0.0.2 MX=6 
-  ten-3.test.ex V4NET.0.0.3 MX=7 
+mxt9.test.ex in domains? no (end of list)
+ check dnssec require list
+ check dnssec request list
+ discarded duplicate host ten-1.test.ex (MX=8)
+ fully qualified name = mxt9.test.ex
+ host_find_bydns yield = HOST_FOUND (3); returned hosts:
+   ten-1.test.ex V4NET.0.0.1 MX=5 
+   ten-2.test.ex V4NET.0.0.2 MX=6 
+   ten-3.test.ex V4NET.0.0.3 MX=7 
+mxt14.test.ex in domains? no (end of list)
+ check dnssec require list
+ check dnssec request list
 duplicate IP address V4NET.0.0.5 (MX=5) removed
 duplicate IP address V4NET.0.0.6 (MX=6) removed
-fully qualified name = mxt14.test.ex
-host_find_bydns yield = HOST_FOUND (3); returned hosts:
-  ten-5-6.test.ex V4NET.0.0.5 MX=4 
-  ten-5-6.test.ex V4NET.0.0.6 MX=4 
+ fully qualified name = mxt14.test.ex
+ host_find_bydns yield = HOST_FOUND (3); returned hosts:
+   ten-5-6.test.ex V4NET.0.0.5 MX=4 
+   ten-5-6.test.ex V4NET.0.0.6 MX=4 
 finding IP address for ten-1.test.ex
 doing DNS lookup
+check dnssec require list
+check dnssec request list
 fully qualified name = ten-1.test.ex
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 finding IP address for ten-1.test.ex
 doing DNS lookup
+check dnssec require list
+check dnssec request list
 fully qualified name = ten-1.test.ex
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 finding IP address for ten-2.test.ex
 doing DNS lookup
+check dnssec require list
+check dnssec request list
 fully qualified name = ten-2.test.ex
 ten-2.test.ex V4NET.0.0.2 mx=-1 sort=xx 
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index c2de395fa333516a2273f92ce483185ec1d6296e..5b619f8f6a696863c25dd385f4ac52d6d0a77ce2 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -9,6 +10,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -27,6 +29,7 @@ writing data block fd=dddd size=sss timeout=3600
 writing error EEE: Broken pipe
 transport error EPIPE ignored
 t1 transport yielded 0
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for |TESTSUITE/bin/iefbr14
 LOG: MAIN
   => |TESTSUITE/bin/iefbr14 <userx@test.ex> R=r1 T=t1
index c1f96114fb2e18596ef44b422bd161416271cf1d..6795f8dac51509630c0590f90cfd500a6b00136e 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index dc55b780a70e5a3db103cbbecda4027ad11c0871..3c8f9d6d8ad5c95e3abcc89bf6da6b290b5dce8e 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: a1@myhost.test.ex
@@ -40,14 +41,17 @@ routing d3@myhost.test.ex
 --------> u1 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d3 domain=myhost.test.ex
@@ -69,14 +73,17 @@ routing d2@myhost.test.ex
 --------> u1 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d2 domain=myhost.test.ex
@@ -97,14 +104,17 @@ routing d1@myhost.test.ex
 --------> u1 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d1 domain=myhost.test.ex
@@ -125,10 +135,12 @@ routing c1@myhost.test.ex
 --------> u1 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=c1 domain=myhost.test.ex
@@ -150,6 +162,7 @@ routing b1@myhost.test.ex
 --------> u1 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=b1 domain=myhost.test.ex
@@ -183,7 +196,6 @@ routed by u1 router (unseen)
   envelope to: a1@myhost.test.ex
   transport: ut1
 "unseen" set: replicated a1@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: a1@myhost.test.ex
@@ -257,6 +269,7 @@ routing c1@myhost.test.ex
 --------> ut4 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=c1 domain=myhost.test.ex
@@ -275,10 +288,12 @@ routing b1@myhost.test.ex
 --------> ut3 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=b1 domain=myhost.test.ex
@@ -297,14 +312,17 @@ routing a1@myhost.test.ex
 --------> ut2 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=a1 domain=myhost.test.ex
@@ -336,62 +354,60 @@ After routing:
     d3@myhost.test.ex
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => a1 <a1@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => b1 <b1@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => c1 <c1@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d1 <d1@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1241 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d2 <d2@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1242 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d3 <d3@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1243 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => a1 <a1@myhost.test.ex> R=u1 T=ut1
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1244 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** b1@myhost.test.ex R=ut2 T=ut2: Child process of ut2 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1245 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == c1@myhost.test.ex R=ut3 T=ut3 defer (0): Child process of ut3 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1246 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d1@myhost.test.ex R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1] C="250 OK"
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1247 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == d2@myhost.test.ex R=ut4 T=ut4 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d2@myhost.test.ex>: 450 soft error
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1248 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** d3@myhost.test.ex R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d3@myhost.test.ex>: 550 hard error
-locking TESTSUITE/spool/db/retry.lockfile
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@myhost.test.ex
 unique = CALLER@myhost.test.ex
@@ -401,18 +417,22 @@ routing CALLER@myhost.test.ex
 --------> u1 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=CALLER domain=myhost.test.ex
@@ -434,12 +454,12 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1251 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => CALLER <CALLER@myhost.test.ex> R=real T=real
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1237 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1250 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1249 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 138e9ecc94cc607a212141c3c77550c9e9ecd7d9..e6a7b94029fc6de92a429e8cf87f7687f888fead 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: a1@myhost.test.ex
@@ -60,26 +61,32 @@ routing g1@myhost.test.ex
 --------> u1 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=g1 domain=myhost.test.ex
 checking local_parts
+g1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=g1 domain=myhost.test.ex
@@ -93,22 +100,27 @@ routing f3@myhost.test.ex
 --------> u1 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=f3 domain=myhost.test.ex
@@ -132,22 +144,27 @@ routing f2@myhost.test.ex
 --------> u1 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=f2 domain=myhost.test.ex
@@ -170,22 +187,27 @@ routing f1@myhost.test.ex
 --------> u1 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=f1 domain=myhost.test.ex
@@ -208,18 +230,22 @@ routing e1@myhost.test.ex
 --------> u1 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=e1 domain=myhost.test.ex
@@ -241,14 +267,17 @@ routing d3@myhost.test.ex
 --------> u1 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d3 domain=myhost.test.ex
@@ -271,14 +300,17 @@ routing d2@myhost.test.ex
 --------> u1 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d2 domain=myhost.test.ex
@@ -300,14 +332,17 @@ routing d1@myhost.test.ex
 --------> u1 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=d1 domain=myhost.test.ex
@@ -329,10 +364,12 @@ routing c1@myhost.test.ex
 --------> u1 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=c1 domain=myhost.test.ex
@@ -355,6 +392,7 @@ routing b1@myhost.test.ex
 --------> u1 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=b1 domain=myhost.test.ex
@@ -390,7 +428,6 @@ routed by u1 router (unseen)
   transport: ut1
   errors to 
 "unseen" set: replicated a1@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: a1@myhost.test.ex
@@ -437,10 +474,12 @@ routing f3@myhost.test.ex
 --------> ut7 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=f3 domain=myhost.test.ex
 checking local_parts
+f3 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=f3 domain=myhost.test.ex
@@ -460,10 +499,12 @@ routing f2@myhost.test.ex
 --------> ut7 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=f2 domain=myhost.test.ex
 checking local_parts
+f2 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=f2 domain=myhost.test.ex
@@ -482,10 +523,12 @@ routing f1@myhost.test.ex
 --------> ut7 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=f1 domain=myhost.test.ex
 checking local_parts
+f1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=f1 domain=myhost.test.ex
@@ -504,14 +547,17 @@ routing e1@myhost.test.ex
 --------> ut6 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=e1 domain=myhost.test.ex
 checking local_parts
+e1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=e1 domain=myhost.test.ex
@@ -530,18 +576,22 @@ routing d3@myhost.test.ex
 --------> ut5 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=d3 domain=myhost.test.ex
 checking local_parts
+d3 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=d3 domain=myhost.test.ex
@@ -560,18 +610,22 @@ routing d2@myhost.test.ex
 --------> ut5 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=d2 domain=myhost.test.ex
 checking local_parts
+d2 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=d2 domain=myhost.test.ex
@@ -590,18 +644,22 @@ routing d1@myhost.test.ex
 --------> ut5 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=d1 domain=myhost.test.ex
 checking local_parts
+d1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=d1 domain=myhost.test.ex
@@ -620,22 +678,27 @@ routing c1@myhost.test.ex
 --------> ut4 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=c1 domain=myhost.test.ex
 checking local_parts
+c1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=c1 domain=myhost.test.ex
@@ -654,26 +717,32 @@ routing b1@myhost.test.ex
 --------> ut3 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=b1 domain=myhost.test.ex
 checking local_parts
+b1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=b1 domain=myhost.test.ex
@@ -692,30 +761,37 @@ routing a1@myhost.test.ex
 --------> ut2 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=a1 domain=myhost.test.ex
 checking local_parts
+a1 in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=a1 domain=myhost.test.ex
@@ -756,106 +832,101 @@ After routing:
   Failed addresses:
   Deferred addresses:
     g1@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => a1 <a1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => b1 <b1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => c1 <c1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d1 <d1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1241 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d2 <d2@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1242 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d3 <d3@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1243 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => e1 <e1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1244 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => f1 <f1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1245 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => f2 <f2@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1246 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => f3 <f3@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1247 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => a1 <a1@myhost.test.ex> P=<> R=u1 T=ut1
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1248 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** b1@myhost.test.ex P=<> R=ut2 T=ut2: Child process of ut2 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1249 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == c1@myhost.test.ex R=ut3 T=ut3 defer (0): Child process of ut3 transport returned 127 (could mean unable to exec or command does not exist) from command: /non/existent/file
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1250 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d1@myhost.test.ex P=<> R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1] C="250 OK"
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1251 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == d2@myhost.test.ex R=ut4 T=ut4 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d2@myhost.test.ex>: 450 soft error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut4.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1252 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** d3@myhost.test.ex P=<> R=ut4 T=ut4 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<d3@myhost.test.ex>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut5.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1253 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** e1@myhost.test.ex P=<> R=ut5 T=ut5 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<e1@myhost.test.ex>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut6.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1254 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => f1@myhost.test.ex P=<CALLER@myhost.test.ex> R=ut6 T=ut6 H=127.0.0.1 [127.0.0.1] C="250 OK"
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1255 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == f2@myhost.test.ex R=ut6 T=ut6 defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<f2@myhost.test.ex>: 450 soft error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-ut6.lockfile
 cmdlog: '220'
+>>>>>>>>>>>>>>>> Exim pid=p1256 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** f3@myhost.test.ex P=<CALLER@myhost.test.ex> R=ut6 T=ut6 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<f3@myhost.test.ex>: 550 hard error
 log writing disabled
-locking TESTSUITE/spool/db/retry.lockfile
 LOG: MAIN
   f3@myhost.test.ex <f3@myhost.test.ex>: error ignored
 log writing disabled
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@myhost.test.ex
 unique = CALLER@myhost.test.ex
@@ -865,34 +936,42 @@ routing CALLER@myhost.test.ex
 --------> u1 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
+CALLER in local_parts? no (end of list)
 ut8 router skipped: local_parts mismatch
 --------> real router <--------
 local_part=CALLER domain=myhost.test.ex
@@ -914,13 +993,13 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1259 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => CALLER <CALLER@myhost.test.ex> P=<> R=real T=real
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1237 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1258 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1257 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   d3@myhost.test.ex <d3@myhost.test.ex>: error ignored
 log writing disabled
@@ -930,16 +1009,17 @@ log writing disabled
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: h1@myhost.test.ex
 unique = h1@myhost.test.ex
@@ -949,30 +1029,37 @@ routing h1@myhost.test.ex
 --------> u1 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 u1 router skipped: local_parts mismatch
 --------> ut2 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut2 router skipped: local_parts mismatch
 --------> ut3 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut3 router skipped: local_parts mismatch
 --------> ut4 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut4 router skipped: local_parts mismatch
 --------> ut5 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut5 router skipped: local_parts mismatch
 --------> ut6 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut6 router skipped: local_parts mismatch
 --------> ut7 router <--------
 local_part=h1 domain=myhost.test.ex
 checking local_parts
+h1 in local_parts? no (end of list)
 ut7 router skipped: local_parts mismatch
 --------> ut8 router <--------
 local_part=h1 domain=myhost.test.ex
@@ -990,7 +1077,6 @@ routed by ut8 router (unseen)
   envelope to: h1@myhost.test.ex
   transport: ut1
 "unseen" set: replicated h1@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: h1@myhost.test.ex
 unique = \0\h1@myhost.test.ex
@@ -1018,14 +1104,14 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1262 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => h1 <h1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=real T=real
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1263 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => h1 <h1@myhost.test.ex> P=<CALLER@myhost.test.ex> R=ut8 T=ut1
 log writing disabled
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1240 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1261 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1260 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index c8cd1b9dac9ca3c19633827e8c5ba8fdee0dc75f..9ef0c67a39affa6dc9c6b129498415b9d647c2bb 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -12,7 +14,8 @@ Attempting full verification using callout
 callout cache: no domain record found for localhost
 callout cache: no address record found for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -27,15 +30,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for localhost:
   result=1 postmaster=0 random=0
 wrote positive callout cache address record for ok@localhost
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -44,15 +57,25 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: found address record for ok@localhost
 callout cache: address record is positive
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -61,7 +84,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: address record expired for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN REJECT
   H=(test) [V4NET.0.0.1] U=root sender verify defer for <ok@localhost>: Could not complete sender verify callout: 127.0.0.1 [127.0.0.1] : Connection refused
 created log directory TESTSUITE/spool/log
@@ -71,11 +95,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying bad@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -84,7 +110,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: no address record found for bad@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -107,11 +134,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying bad@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -128,11 +157,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -141,7 +172,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: address record expired for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -161,11 +193,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -181,11 +215,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -194,7 +231,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost
 callout cache: no address record found for ok@otherhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -224,11 +262,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1241 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -244,11 +285,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1242 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost2
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -257,7 +301,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost2
 callout cache: no address record found for ok@otherhost2
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -279,15 +324,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:RSET:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost2:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost2
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1243 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost2
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -297,15 +352,26 @@ callout cache: found domain record for otherhost2
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: found address record for ok@otherhost2
 callout cache: address record is positive
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1244 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost3
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -314,7 +380,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost3
 callout cache: no address record found for ok@otherhost3
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -328,17 +395,27 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost3:
   result=1 postmaster=0 random=1
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1245 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying otherok@otherhost3
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -346,17 +423,28 @@ Considering otherok@otherhost3
 Attempting full verification using callout
 callout cache: found domain record for otherhost3
 callout cache: domain accepts random addresses
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1246 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost4
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -365,7 +453,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost4
 callout cache: no address record found for ok@otherhost4
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -379,17 +468,27 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost4:
   result=1 postmaster=0 random=1
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1247 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost4
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -397,17 +496,27 @@ Considering ok@otherhost4
 Attempting full verification using callout
 callout cache: found domain record for otherhost4
 callout cache: domain accepts random addresses
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1248 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost41
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -416,7 +525,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost41
 callout cache: no address record found for ok@otherhost41
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -444,15 +554,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:RSET:250:MAIL:250:RCPT:250:RSET:250:MAIL
 wrote callout cache domain record for otherhost41:
   result=1 postmaster=1 random=2
 wrote positive callout cache address record for ok@otherhost41
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1249 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost41
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -463,15 +583,23 @@ callout cache: domain rejects random addresses
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: found address record for ok@otherhost41
 callout cache: address record is positive
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1250 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost21
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -480,7 +608,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost21
 callout cache: no address record found for ok@otherhost21
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -502,15 +631,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:RSET:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost21:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost21
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1251 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok2@otherhost21
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -520,7 +659,8 @@ callout cache: found domain record for otherhost21
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: no address record found for ok2@otherhost21
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -535,15 +675,26 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost21:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok2@otherhost21
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1252 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -552,7 +703,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost31
 callout cache: no address record found for ok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -573,15 +725,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:RSET:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for ok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1253 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -591,7 +753,8 @@ callout cache: found domain record for otherhost31
 callout cache: domain rejects random addresses
 callout cache: no address record found for okok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -606,15 +769,25 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for okok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1254 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okokok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -623,7 +796,8 @@ Attempting full verification using callout
 callout cache: domain record expired for otherhost31
 callout cache: no address record found for okokok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -644,15 +818,27 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:RSET:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for okokok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1255 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okok@otherhost51
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -661,7 +847,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost51
 callout cache: no address record found for okok@otherhost51
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -682,11 +869,18 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1256 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okokok@otherhost52
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -695,7 +889,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost52
 callout cache: no address record found for okokok@otherhost52
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -717,15 +912,29 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:RSET:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for otherhost52:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for okokok@otherhost52
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1257 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 verifying Reply-To: header address abcd@x.y.z
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying abcd@x.y.z
@@ -735,7 +944,8 @@ Attempting full verification using callout
 callout cache: no domain record found for x.y.z
 callout cache: no address record found for abcd@x.y.z/<somesender@a.domain>
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -750,17 +960,30 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:250'
 wrote callout cache domain record for x.y.z:
   result=1 postmaster=0 random=0
 wrote positive callout cache address record for abcd@x.y.z/<somesender@a.domain>
+host in "V4NET.0.0.8"? no (end of list)
 LOG: MAIN
   <= ok7@otherhost53 H=(test) [V4NET.0.0.7] U=root P=smtp S=sss
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1258 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.7"? no (end of list)
 verifying Reply-To: header address abcd@x.y.z
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying abcd@x.y.z
@@ -770,7 +993,8 @@ Attempting full verification using callout
 callout cache: found domain record for x.y.z
 callout cache: no address record found for abcd@x.y.z
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -789,11 +1013,19 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1259 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost9
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -802,7 +1034,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost9
 callout cache: no address record found for ok@otherhost9
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -826,15 +1059,26 @@ cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:RSET:250:MAIL:250:RCPT:550:RCPT:250:QUIT
 wrote callout cache domain record for otherhost9:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost9
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1260 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying z@test.ex
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -843,7 +1087,8 @@ Attempting full verification using callout
 callout cache: no domain record found for test.ex
 callout cache: no address record found for z@test.ex/<postmaster@myhost.test.ex>
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
index 192d87f43b12b2684df58501a9db7e95e775fa35..f212cdb2ee0867607a3c1da81e6e0acd8fc50171 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
@@ -28,22 +29,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 local_part=cccc domain=myhost.test.ex
@@ -74,14 +80,17 @@ routing bbbb@myhost.test.ex
 --------> defer router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=bbbb domain=myhost.test.ex
@@ -108,6 +117,7 @@ routing aaaa@myhost.test.ex
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -126,7 +136,6 @@ routed by unseen_aaaa router (unseen)
   envelope to: aaaa@myhost.test.ex
   transport: <none>
 "unseen" set: replicated aaaa@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
@@ -172,22 +181,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 local_part=cccc domain=myhost.test.ex
@@ -230,14 +244,17 @@ routing bbbb@myhost.test.ex
 --------> defer router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 bbbb router skipped: previously routed bbbb@myhost.test.ex
@@ -298,25 +315,24 @@ After routing:
     defer_aaaa@myhost.test.ex
     defer_bbbb@myhost.test.ex
     defer_cccc@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => aaaa <aaaa@myhost.test.ex> R=seen_aaaa T=t1
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => bbbb <bbbb@myhost.test.ex> R=bbbb_0 T=t1
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => cccc <cccc@myhost.test.ex> R=cccc_accept T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
 unique = aaaa@myhost.test.ex
@@ -334,22 +350,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 local_part=cccc domain=myhost.test.ex
@@ -372,14 +393,17 @@ routing bbbb@myhost.test.ex
 --------> defer router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=bbbb domain=myhost.test.ex
@@ -405,6 +429,7 @@ routing aaaa@myhost.test.ex
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -425,7 +450,6 @@ domain = myhost.test.ex
 routed by seen_aaaa router
   envelope to: aaaa@myhost.test.ex
   transport: t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cccc@myhost.test.ex
 unique = \0\cccc@myhost.test.ex
@@ -435,22 +459,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 cccc_2nd_time router skipped: previously routed cccc@myhost.test.ex
@@ -473,7 +502,6 @@ cccc_redirect router generated cccc@myhost.test.ex
 routed by cccc_redirect router
   envelope to: cccc@myhost.test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cccc@myhost.test.ex
 unique = \1\cccc@myhost.test.ex
@@ -502,22 +530,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 cccc_2nd_time router skipped: previously routed cccc@myhost.test.ex
@@ -550,18 +583,17 @@ After routing:
 cccc@myhost.test.ex was previously delivered (t1 transport): discarded
 aaaa@myhost.test.ex was previously delivered (t1 transport): discarded
 bbbb@myhost.test.ex was previously delivered (t1 transport): discarded
-locking TESTSUITE/spool/db/retry.lockfile
->>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1235 -qf
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
 unique = aaaa@myhost.test.ex
@@ -579,22 +611,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 local_part=cccc domain=myhost.test.ex
@@ -617,14 +654,17 @@ routing bbbb@myhost.test.ex
 --------> defer router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=bbbb domain=myhost.test.ex
@@ -650,6 +690,7 @@ routing aaaa@myhost.test.ex
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -670,7 +711,6 @@ domain = myhost.test.ex
 routed by seen_aaaa router
   envelope to: aaaa@myhost.test.ex
   transport: t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cccc@myhost.test.ex
 unique = \0\cccc@myhost.test.ex
@@ -680,22 +720,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 cccc_2nd_time router skipped: previously routed cccc@myhost.test.ex
@@ -718,7 +763,6 @@ cccc_redirect router generated cccc@myhost.test.ex
 routed by cccc_redirect router
   envelope to: cccc@myhost.test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: cccc@myhost.test.ex
 unique = \1\cccc@myhost.test.ex
@@ -747,22 +791,27 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> unseen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 unseen_aaaa router skipped: local_parts mismatch
 --------> seen_aaaa router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 seen_aaaa router skipped: local_parts mismatch
 --------> bbbb router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb router skipped: local_parts mismatch
 --------> bbbb_0 router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 bbbb_0 router skipped: local_parts mismatch
 --------> cccc_2nd_time router <--------
 cccc_2nd_time router skipped: previously routed cccc@myhost.test.ex
@@ -795,8 +844,7 @@ After routing:
 cccc@myhost.test.ex was previously delivered (t1 transport): discarded
 aaaa@myhost.test.ex was previously delivered (t1 transport): discarded
 bbbb@myhost.test.ex was previously delivered (t1 transport): discarded
-locking TESTSUITE/spool/db/retry.lockfile
->>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1235 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 845da3cb226f726ec45b67f5af40df90fc24b0f2..b3ab37ec9e9d72a3237407db3c8e713c1ec0600c 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
@@ -20,10 +21,13 @@ routing aaaa@myhost.test.ex
 --------> bounce router <--------
 local_part=aaaa domain=myhost.test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 bounce router skipped: senders mismatch
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_2nd_time router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -67,7 +71,6 @@ aaaa router generated defer_aaaa@myhost.test.ex
 routed by aaaa router
   envelope to: aaaa@myhost.test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: defer_aaaa@myhost.test.ex
@@ -90,6 +93,8 @@ routing defer_aaaa@myhost.test.ex
 --------> bounce router <--------
 local_part=defer_aaaa domain=myhost.test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 bounce router skipped: senders mismatch
 --------> defer router <--------
 local_part=defer_aaaa domain=myhost.test.ex
@@ -114,18 +119,18 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer_aaaa@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@myhost.test.ex
@@ -155,25 +160,25 @@ LOG: MAIN
   Completed
 >>>>>>>>>>>>>>>> Exim pid=p1239 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1238 (autoreply) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => >CALLER@myhost.test.ex <aaaa@myhost.test.ex> R=aaaa T=t3
-locking TESTSUITE/spool/db/retry.lockfile
 transport error EPIPE ignored
+>>>>>>>>>>>>>>>> Exim pid=p1241 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => |/bin/sh -c exit <aaaa@myhost.test.ex> R=aaaa T=t2
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1242 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => TESTSUITE/test-mail/file <aaaa@myhost.test.ex> R=aaaa T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
 unique = aaaa@myhost.test.ex
@@ -183,10 +188,13 @@ routing aaaa@myhost.test.ex
 --------> bounce router <--------
 local_part=aaaa domain=myhost.test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 bounce router skipped: senders mismatch
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_2nd_time router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -204,7 +212,6 @@ aaaa_2nd_time router generated aaaa@myhost.test.ex
 routed by aaaa_2nd_time router
   envelope to: aaaa@myhost.test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
 unique = \0\aaaa@myhost.test.ex
@@ -214,10 +221,13 @@ routing aaaa@myhost.test.ex
 --------> bounce router <--------
 local_part=aaaa domain=myhost.test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 bounce router skipped: senders mismatch
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_2nd_time router <--------
 aaaa_2nd_time router skipped: previously routed aaaa@myhost.test.ex
@@ -235,7 +245,7 @@ text "This is an autoreply"' (tainted)
 data is an Exim filter program
 Filter: start of processing
 Filter: end of processing
->>>>>>>>>>>>>>>> Exim pid=p1240 (router-interpret) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1243 (router-interpret) terminating with rc=0 >>>>>>>>>>>>>>>>
 rda_interpret: subprocess yield=0 error=NULL
 set transport t3
 aaaa router generated >CALLER@myhost.test.ex
@@ -258,7 +268,6 @@ aaaa router generated defer_aaaa@myhost.test.ex
 routed by aaaa router
   envelope to: aaaa@myhost.test.ex
   transport: <none>
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: defer_aaaa@myhost.test.ex
 unique = defer_aaaa@myhost.test.ex
@@ -280,6 +289,8 @@ routing defer_aaaa@myhost.test.ex
 --------> bounce router <--------
 local_part=defer_aaaa domain=myhost.test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 bounce router skipped: senders mismatch
 --------> defer router <--------
 local_part=defer_aaaa domain=myhost.test.ex
@@ -301,8 +312,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer_aaaa@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
->>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1244 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index f37cea959d3459c607b0ba32e5b040d24a5e9862..2440d10ad5ae98439f3f8c28295119ebd29f26bf 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: defer@myhost.test.ex
@@ -24,6 +25,7 @@ routing aaaa@myhost.test.ex
 --------> defer router <--------
 local_part=aaaa domain=myhost.test.ex
 checking local_parts
+aaaa in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_redirect router <--------
 local_part=aaaa domain=myhost.test.ex
@@ -59,7 +61,6 @@ defer router: defer for defer@myhost.test.ex
   message: forced defer
 LOG: MAIN
   == defer@myhost.test.ex R=defer defer (-1): forced defer
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: bbbb@myhost.test.ex
@@ -74,10 +75,12 @@ routing cccc@myhost.test.ex
 --------> defer router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_redirect router <--------
 local_part=cccc domain=myhost.test.ex
 checking local_parts
+cccc in local_parts? no (end of list)
 aaaa_redirect router skipped: local_parts mismatch
 --------> bc router <--------
 local_part=cccc domain=myhost.test.ex
@@ -98,10 +101,12 @@ routing bbbb@myhost.test.ex
 --------> defer router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 defer router skipped: local_parts mismatch
 --------> aaaa_redirect router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 aaaa_redirect router skipped: local_parts mismatch
 --------> bc router <--------
 local_part=bbbb domain=myhost.test.ex
@@ -125,22 +130,21 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => bbbb <aaaa@myhost.test.ex> R=bc T=t1
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => cccc <aaaa@myhost.test.ex> R=bc T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: defer@myhost.test.ex
 unique = defer@myhost.test.ex
@@ -167,8 +171,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     defer@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 835ef21adfae77b0014262d6ba40d0f7b51f6207..38bbcd1be6caf3e941a6f00d34f08183d19e1fd2 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: aaaa@myhost.test.ex
@@ -28,6 +29,7 @@ forced failure in expansion of "${if eq {a}{b}{x}fail}" (address_data): decline
 --------> r1 router <--------
 local_part=bbbb domain=myhost.test.ex
 checking local_parts
+bbbb in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=bbbb domain=myhost.test.ex
@@ -78,9 +80,8 @@ After routing:
   Failed addresses:
   Deferred addresses:
     aaaa@myhost.test.ex
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => bbbb <bbbb@myhost.test.ex> R=r3 T=t1
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 550e2dab977b96267206270e42aefc5ceec12668..d35fb626190ba7f4605240f4a697d6fd0bce26aa 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -48,19 +49,27 @@ host in "*.gov.uk.test.ex"?
  list element: *.gov.uk.test.ex
 sender host name required, to match against *.gov.uk.test.ex
 looking up host name for V4NET.99.99.97
-DNS lookup of 97.99.99.V4NET.in-addr.arpa (PTR) using fakens
-DNS lookup of 97.99.99.V4NET.in-addr.arpa (PTR) succeeded
+  DNS lookup of 97.99.99.V4NET.in-addr.arpa (PTR) using fakens
+  DNS lookup of 97.99.99.V4NET.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "x.gov.uk.test.ex"
   alias "x.co.uk.test.ex"
-DNS lookup of x.gov.uk.test.ex (A) using fakens
-DNS lookup of x.gov.uk.test.ex (A) succeeded
-x.gov.uk.test.ex V4NET.99.99.97 mx=-1 sort=xx 
+  check dnssec require list
+   x.gov.uk.test.ex not in empty list (option unset? cannot trace name)
+  check dnssec request list
+   x.gov.uk.test.ex not in empty list (option unset? cannot trace name)
+  DNS lookup of x.gov.uk.test.ex (A) using fakens
+  DNS lookup of x.gov.uk.test.ex (A) succeeded
+  x.gov.uk.test.ex V4NET.99.99.97 mx=-1 sort=xx 
 checking addresses for x.gov.uk.test.ex
 Forward DNS security status: unverified
   V4NET.99.99.97 OK
-DNS lookup of x.co.uk.test.ex (A) using fakens
-DNS lookup of x.co.uk.test.ex (A) succeeded
-x.co.uk.test.ex V4NET.99.99.97 mx=-1 sort=xx 
+  check dnssec require list
+   x.co.uk.test.ex not in empty list (option unset? cannot trace name)
+  check dnssec request list
+   x.co.uk.test.ex not in empty list (option unset? cannot trace name)
+  DNS lookup of x.co.uk.test.ex (A) using fakens
+  DNS lookup of x.co.uk.test.ex (A) succeeded
+  x.co.uk.test.ex V4NET.99.99.97 mx=-1 sort=xx 
 checking addresses for x.co.uk.test.ex
 Forward DNS security status: unverified
   V4NET.99.99.97 OK
index 6ab4d74659b297026b8ddf3912d0efd6a80525ea..6da513f1f3d5740afa847e2ec26ae74c3ac4d8f7 100644 (file)
@@ -1,10 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -13,15 +15,19 @@ running system filter
  Filtering did not set up a significant delivery.
  Normal delivery will occur.
 system filter returned 1
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? yes (end of list)
 LOG: MAIN
   ** userx@test.ex R=r1: forced fail
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -41,6 +47,7 @@ LOG: MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
index ace0dc69cef464d06cf1da94fc6d3306916b248b..bb322c8a49a48c39416ded81c1c44cdbdbadb760 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -167,6 +168,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 seeking password data for user "CALLER": cache not available
@@ -231,12 +233,12 @@ check acl = TESTSUITE/aux-fixed/0386.acl2
  check dnslists = rbl.test.ex 
 dnslists check: rbl.test.ex
 new DNS lookup for 13.12.11.V4NET.rbl.test.ex
-DNS lookup of 13.12.11.V4NET.rbl.test.ex (A) using fakens
-DNS lookup of 13.12.11.V4NET.rbl.test.ex (A) succeeded
+ DNS lookup of 13.12.11.V4NET.rbl.test.ex (A) using fakens
+ DNS lookup of 13.12.11.V4NET.rbl.test.ex (A) succeeded
 dnslists: wrote cache entry, ttl=3
 DNS lookup for 13.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
-DNS lookup of 13.12.11.V4NET.rbl.test.ex (TXT) using fakens
-DNS lookup of 13.12.11.V4NET.rbl.test.ex (TXT) succeeded
+ DNS lookup of 13.12.11.V4NET.rbl.test.ex (TXT) using fakens
+ DNS lookup of 13.12.11.V4NET.rbl.test.ex (TXT) succeeded
 => that means V4NET.11.12.13 is listed at rbl.test.ex
  warn: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl2"
 LOG: MAIN
@@ -282,6 +284,7 @@ SMTP>> 250 OK id=10HmaX-000000005vi-0000
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1236
 seeking password data for user "CALLER": cache not available
@@ -309,8 +312,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   2@b 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -346,8 +347,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> 2@b <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -364,7 +363,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/2'
+below-home: de-tainting path 'TESTSUITE/test-mail/2'
 lock name: TESTSUITE/test-mail/2.lock
 hitch name: TESTSUITE/test-mail/2.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -376,6 +375,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling 2@b
 t1 transport returned OK for 2@b
 post-process 2@b (0)
@@ -479,6 +479,7 @@ SMTP>> 250 OK id=10HmaY-000000005vi-0000
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1238
 seeking password data for user "CALLER": cache not available
@@ -506,8 +507,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   2@b 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -543,8 +542,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> 2@b <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -561,7 +558,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/2'
+below-home: de-tainting path 'TESTSUITE/test-mail/2'
 lock name: TESTSUITE/test-mail/2.lock
 hitch name: TESTSUITE/test-mail/2.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -573,6 +570,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling 2@b
 t1 transport returned OK for 2@b
 post-process 2@b (0)
index 2b78fcea462095f6e6e6778b6938288de6e34584..901d53d55103bf16cf6b7cfed9c802956d352985 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
index 92b85e55828e4a3d3bc56dd9417949a8ebc0325c..78be65faf8428da22c9f633b2b4fca2a30b2ae1b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -6,8 +7,6 @@ admin user
 dropping to exim gid; retaining priv uid
 set_process_info: pppp delivering specified messages
 set_process_info: pppp delivering 10HmaX-000000005vi-0000
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -23,9 +22,9 @@ routing x@y
 --------> r0 router <--------
 local_part=x domain=y
 checking local_parts
-x in "CALLER"?
+x in local_parts?
  list element: CALLER
-x in "CALLER"? no (end of list)
+x in local_parts? no (end of list)
 r0 router skipped: local_parts mismatch
 --------> r1 router <--------
 local_part=x domain=y
@@ -77,17 +76,16 @@ changed uid/gid: remote delivery to x@y with transport=smtp
   uid=EXIM_UID gid=EXIM_GID pid=p1235
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 using smtp
 checking retry status of 127.0.0.1
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
 127.0.0.1 in serialize_hosts? no (option unset)
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1]:PORT_S (x@y)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... 127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
   SMTP<< 220 Server ready
 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
   SMTP>> EHLO myhost.test.ex
@@ -119,15 +117,14 @@ set_process_info: pppp delivering 10HmaX-000000005vi-0000: just tried 127.0.0.1
  *@127.0.0.1 in "*"? yes (matched "*")
 Clearing TFO as not first host for message
 checking retry status of V4NET.0.0.0
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 no retry data available
 V4NET.0.0.0 in serialize_hosts? no (option unset)
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 to V4NET.0.0.0 [V4NET.0.0.0]:PORT_S (x@y)
-Connecting to V4NET.0.0.0 [V4NET.0.0.0]:PORT_S ... V4NET.0.0.0 in hosts_try_fastopen?
+Connecting to V4NET.0.0.0 [V4NET.0.0.0]:PORT_S ...
+ V4NET.0.0.0 in hosts_try_fastopen?
  failed: Network Error
 LOG: MAIN
   H=V4NET.0.0.0 [V4NET.0.0.0] Network Error
@@ -136,6 +133,8 @@ added retry item for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S: errno=dd more_errno=dd,
 set_process_info: pppp delivering 10HmaX-000000005vi-0000: waiting for a remote delivery subprocess to finish
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 (just run smtp for x@y in subprocess)
 search_tidyup called
+search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S from subprocess
   added retry item
 reading retry information for R:x@y from subprocess
@@ -151,8 +150,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  x@y
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -165,11 +162,12 @@ Deferred addresses:
   x@y in "*"? yes (matched "*")
 retry for R:x@y = * 0 0
  dbfn_read: key=R:x@y
+ dbfn_read: null return
 failing_interval=ttt message_age=ttt
 Writing retry data for R:x@y
   first failed=dddd last try=dddd next try=+1 expired=1
   errno=-44 more_errno=dd,A H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<x@y>: 451 Temporary error
- dbfn_write: key=R:x@y
+ dbfn_write: key=R:x@y datalen 148
  *@V4NET.0.0.0 in "*"?
   list element: *
   address match test: subject=*@V4NET.0.0.0 pattern=*
@@ -179,20 +177,22 @@ Writing retry data for R:x@y
   *@V4NET.0.0.0 in "*"? yes (matched "*")
 retry for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S (y) = * 0 0
  dbfn_read: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
+ dbfn_read: null return
 failing_interval=ttt message_age=ttt
 on queue longer than maximum retry
 Writing retry data for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
   first failed=dddd last try=dddd next try=+0 expired=0
   errno=dd more_errno=dd,A Network Error
- dbfn_write: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
+ dbfn_write: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S datalen 70
 timed out: all retries expired
 LOG: MAIN
   ** x@y: retry timeout exceeded
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 end of retry processing
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xd7715ced -MCd bounce-message -odi -odi -t -oem -oi -f <> -E10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -252,6 +252,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xd7715ced -MCd local-accept-delivery -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -260,8 +261,6 @@ admin user
 dropping to exim gid; retaining priv uid
 set_process_info: pppp delivering specified messages
 set_process_info: pppp delivering 10HmaY-000000005vi-0000
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
@@ -269,26 +268,29 @@ set_process_info: pppp delivering 10HmaY-000000005vi-0000
 Considering: CALLER@myhost.test.ex
 unique = CALLER@myhost.test.ex
  dbfn_read: key=R:myhost.test.ex
+ dbfn_read: null return
  dbfn_read: key=R:CALLER@myhost.test.ex
+ dbfn_read: null return
  dbfn_read: key=R:CALLER@myhost.test.ex:<>
+ dbfn_read: null return
 no   domain  retry record
 no   address retry record
 CALLER@myhost.test.ex: queued for routing
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 routing CALLER@myhost.test.ex
 --------> r0 router <--------
 local_part=CALLER domain=myhost.test.ex
 checking local_parts
-CALLER in "CALLER"?
+CALLER in local_parts?
  list element: CALLER
- CALLER in "CALLER"? yes (matched "CALLER")
+ CALLER in local_parts? yes (matched "CALLER")
 checking senders
- in ":"?
+ in senders?
  list element: 
  address match test: subject= pattern=
-  in ":"? yes (matched "")
+  in senders? yes (matched "")
 calling r0 router
 rda_interpret (string): ':blackhole:'
 expanded: ':blackhole:'
index b7873266f427ae857b4e96e8fdcc5b29263bd477..884ffd32aedd0422124cb9dd9dc8bba873c8c812 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index 75f92b9e14e6364fb1087d089ec91215f526e8b2..9efcb548cb4537842a401de28f243d87b13e85f7 100644 (file)
@@ -1,10 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -22,7 +24,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -41,6 +43,7 @@ writing data block fd=dddd size=sss timeout=0
 end of filtering transport writing: yield=1
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for userx@test.ex
 LOG: MAIN
   => userx <userx@test.ex> R=r1 T=t1
@@ -49,11 +52,13 @@ LOG: MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -69,7 +74,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -80,19 +85,22 @@ cannot use sendfile for body: spoolfile not wireformat
 writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for userx@test.ex
 LOG: MAIN
   => userx <userx@test.ex> R=r1 T=t1
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -110,7 +118,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -121,10 +129,11 @@ cannot use sendfile for body: spoolfile not wireformat
 writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1243 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for userx@test.ex
 LOG: MAIN
   => userx <userx@test.ex> R=r1 T=t1
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1240 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 75b64878a23050b374ec019329b038e4c192521c..e2f6cf70bbf2dd0f697f263e5cafd148c944b21b 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index 604e791b69e90689e9489b58e5ddbd09f5e1df9c..745b5bb120ae1621880f57414ace8a2609e872ec 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -42,16 +43,16 @@ routing qq@remote
 --------> r1 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "local"?
+remote in domains?
  list element: local
-remote in "local"? no (end of list)
+remote in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "remote"?
+remote in domains?
  list element: remote
- remote in "remote"? yes (matched "remote")
+ remote in domains? yes (matched "remote")
 calling r2 router
 r2 router called for qq@remote
   domain = remote
@@ -101,16 +102,16 @@ routing qq@remote
 --------> r1 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "local"?
+remote in domains?
  list element: local
-remote in "local"? no (end of list)
+remote in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "remote"?
+remote in domains?
  list element: remote
- remote in "remote"? yes (matched "remote")
+ remote in domains? yes (matched "remote")
 calling r2 router
 r2 router called for qq@remote
   domain = remote
@@ -138,21 +139,22 @@ routed by r2 router
   transport: t2
   host 127.0.0.1 [127.0.0.1]
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
  dbfn_read: key=remote
+ dbfn_read: size 40 return
  callout cache: found domain record for remote
  dbfn_read: key=qq@remote
+ dbfn_read: null return
  callout cache: no address record found for qq@remote
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... 127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
   SMTP<< 220 Server ready
 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
   SMTP>> EHLO mail.test.ex
@@ -173,18 +175,16 @@ cmd buf flush ddd bytes
   SMTP<< 250 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:QUIT:250'
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
- EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR|O_CREAT
+ EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
- opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR|O_CREAT
- dbfn_write: key=remote
+ opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
+ dbfn_write: key=remote datalen 40
  wrote callout cache domain record for remote:
    result=1 postmaster=0 random=0
- dbfn_write: key=qq@remote
+ dbfn_write: key=qq@remote datalen 16
  wrote negative callout cache address record for qq@remote
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 l_message: $acl_verify_message
 warn: condition test succeeded in ACL "rcpt"
@@ -235,16 +235,16 @@ routing qq@remote
 --------> r1 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "local"?
+remote in domains?
  list element: local
-remote in "local"? no (end of list)
+remote in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=qq domain=remote
 checking domains
-remote in "remote"?
+remote in domains?
  list element: remote
- remote in "remote"? yes (matched "remote")
+ remote in domains? yes (matched "remote")
 calling r2 router
 r2 router called for qq@remote
   domain = remote
@@ -272,18 +272,18 @@ routed by r2 router
   transport: t2
   host 127.0.0.1 [127.0.0.1]
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
  dbfn_read: key=remote
+ dbfn_read: size 40 return
  callout cache: found domain record for remote
  dbfn_read: key=qq@remote
+ dbfn_read: size 16 return
  callout cache: found address record for qq@remote
  callout cache: address record is negative
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 l_message: $acl_verify_message
 warn: condition test succeeded in ACL "rcpt"
index a3b583e116965e1226f82ab39b84f45e8be4d392..cbcfb336b05f54d1b3d47d5eaf504e97417d43de 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index 0d00c73e5a2d04d30917c0a05b1a9d52480a59bd..e92ec9019e09e8d1d6277471b558fcf33967061e 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 environment after trimming:
@@ -55,331 +56,331 @@ Data file written for message 10HmaX-000000005vi-0000
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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)↩
-       }}}}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}}
+   }}}}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: (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}}
+   }}}}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}}
    ├──────value: 
    ├───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}}
+   }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ├─────result:  ◀skipped▶
    ╰───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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ${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}}
}}(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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: mail.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 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}}
+  }}(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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local░
  ├───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}}
-       ${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}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───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}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───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}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (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}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaX-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: false
   ╭───scanning: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├───scanning: $received_for}}
   ├──────value: 
   ├───scanning: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░by░mail.test.ex░with░local░(Exim░x.yz)↩
      (envelope-from░<CALLER@test.ex>)↩
      id░10HmaX-000000005vi-0000
(envelope-from░<CALLER@test.ex>)↩
id░10HmaX-000000005vi-0000
 >>Generated Received: header line
 P Received: from CALLER by mail.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@test.ex>)
@@ -403,6 +404,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715dfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 environment after trimming:
@@ -445,8 +447,6 @@ Delivery address list:
   userz@test.ex 
   rd+CALLER@test.ex 
   rd+usery@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -486,39 +486,39 @@ routing rd+usery@test.ex
 --------> r1 router <--------
 local_part=rd+usery domain=test.ex
 checking local_parts
-rd+usery in "CALLER"?
+rd+usery in local_parts?
  list element: CALLER
-rd+usery in "CALLER"? no (end of list)
+rd+usery in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=rd+usery domain=test.ex
 checking local_parts
-rd+usery in "usery"?
+rd+usery in local_parts?
  list element: usery
-rd+usery in "usery"? no (end of list)
+rd+usery in local_parts? no (end of list)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=rd+usery domain=test.ex
 checking local_parts
-rd+usery in "userz"?
+rd+usery in local_parts?
  list element: userz
-rd+usery in "userz"? no (end of list)
+rd+usery in local_parts? no (end of list)
 r3 router skipped: local_parts mismatch
 --------> r4 router <--------
 local_part=rd+usery domain=test.ex
 stripped prefix rd+
 checking local_parts
-usery in "CALLER"?
+usery in local_parts?
  list element: CALLER
-usery in "CALLER"? no (end of list)
+usery in local_parts? no (end of list)
 r4 router skipped: local_parts mismatch
 --------> r5 router <--------
 local_part=rd+usery domain=test.ex
 stripped prefix rd+
 checking local_parts
-usery in "usery"?
+usery in local_parts?
  list element: usery
- usery in "usery"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 try option router_home_directory
  ╭considering: /non-exist/$domain
  ├───────text: /non-exist/
@@ -544,7 +544,6 @@ r5 router generated TESTSUITE/test-mail/junk
   errors_to=NULL transport=ft1
   uid=unset gid=unset home=/non-exist/$local_part
 try option unseen
-try option unseen
 routed by r5 router
   envelope to: rd+usery@test.ex
   transport: <none>
@@ -553,31 +552,31 @@ routing rd+CALLER@test.ex
 --------> r1 router <--------
 local_part=rd+CALLER domain=test.ex
 checking local_parts
-rd+CALLER in "CALLER"?
+rd+CALLER in local_parts?
  list element: CALLER
-rd+CALLER in "CALLER"? no (end of list)
+rd+CALLER in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=rd+CALLER domain=test.ex
 checking local_parts
-rd+CALLER in "usery"?
+rd+CALLER in local_parts?
  list element: usery
-rd+CALLER in "usery"? no (end of list)
+rd+CALLER in local_parts? no (end of list)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=rd+CALLER domain=test.ex
 checking local_parts
-rd+CALLER in "userz"?
+rd+CALLER in local_parts?
  list element: userz
-rd+CALLER in "userz"? no (end of list)
+rd+CALLER in local_parts? no (end of list)
 r3 router skipped: local_parts mismatch
 --------> r4 router <--------
 local_part=rd+CALLER domain=test.ex
 stripped prefix rd+
 checking local_parts
-CALLER in "CALLER"?
+CALLER in local_parts?
  list element: CALLER
- CALLER in "CALLER"? yes (matched "CALLER")
+ CALLER in local_parts? yes (matched "CALLER")
 try option router_home_directory
  ╭considering: /non-exist/$local_part
  ├───────text: /non-exist/
@@ -603,7 +602,6 @@ r4 router generated TESTSUITE/test-mail/junk
   errors_to=NULL transport=ft1
   uid=unset gid=unset home=/non-exist/CALLER
 try option unseen
-try option unseen
 routed by r4 router
   envelope to: rd+CALLER@test.ex
   transport: <none>
@@ -612,23 +610,23 @@ routing userz@test.ex
 --------> r1 router <--------
 local_part=userz domain=test.ex
 checking local_parts
-userz in "CALLER"?
+userz in local_parts?
  list element: CALLER
-userz in "CALLER"? no (end of list)
+userz in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=userz domain=test.ex
 checking local_parts
-userz in "usery"?
+userz in local_parts?
  list element: usery
-userz in "usery"? no (end of list)
+userz in local_parts? no (end of list)
 r2 router skipped: local_parts mismatch
 --------> r3 router <--------
 local_part=userz domain=test.ex
 checking local_parts
-userz in "userz"?
+userz in local_parts?
  list element: userz
- userz in "userz"? yes (matched "userz")
+ userz in local_parts? yes (matched "userz")
 try option router_home_directory
  ╭considering: /non-exist/$domain
  ├───────text: /non-exist/
@@ -649,7 +647,6 @@ domain = test.ex
   errors_to=NULL
   domain_data=NULL local_part_data=userz
 try option unseen
-try option unseen
 routed by r3 router
   envelope to: userz@test.ex
   transport: t2
@@ -658,16 +655,16 @@ routing usery@test.ex
 --------> r1 router <--------
 local_part=usery domain=test.ex
 checking local_parts
-usery in "CALLER"?
+usery in local_parts?
  list element: CALLER
-usery in "CALLER"? no (end of list)
+usery in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=usery domain=test.ex
 checking local_parts
-usery in "usery"?
+usery in local_parts?
  list element: usery
- usery in "usery"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 try option router_home_directory
  ╭considering: /non-exist/$domain
  ├───────text: /non-exist/
@@ -688,7 +685,6 @@ domain = test.ex
   errors_to=NULL
   domain_data=NULL local_part_data=usery
 try option unseen
-try option unseen
 routed by r2 router
   envelope to: usery@test.ex
   transport: t1
@@ -697,9 +693,9 @@ routing CALLER@test.ex
 --------> r1 router <--------
 local_part=CALLER domain=test.ex
 checking local_parts
-CALLER in "CALLER"?
+CALLER in local_parts?
  list element: CALLER
- CALLER in "CALLER"? yes (matched "CALLER")
+ CALLER in local_parts? yes (matched "CALLER")
 try option router_home_directory
  ╭considering: /non-exist/$local_part
  ├───────text: /non-exist/
@@ -720,12 +716,9 @@ domain = test.ex
   errors_to=NULL
   domain_data=NULL local_part_data=CALLER
 try option unseen
-try option unseen
 routed by r1 router
   envelope to: CALLER@test.ex
   transport: t1
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -752,8 +745,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -844,6 +835,7 @@ try option message_suffix
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling TESTSUITE/test-mail/junk:rd+usery@test.ex
 ft1 transport returned OK for TESTSUITE/test-mail/junk
 post-process TESTSUITE/test-mail/junk (0)
@@ -852,8 +844,6 @@ rd+usery@test.ex: children all complete
 LOG: MAIN
   => TESTSUITE/test-mail/junk <rd+usery@test.ex> R=r5 T=ft1
 --------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -936,6 +926,7 @@ try option message_suffix
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling TESTSUITE/test-mail/junk:rd+CALLER@test.ex
 ft1 transport returned OK for TESTSUITE/test-mail/junk
 post-process TESTSUITE/test-mail/junk (0)
@@ -944,8 +935,6 @@ rd+CALLER@test.ex: children all complete
 LOG: MAIN
   => TESTSUITE/test-mail/junk <rd+CALLER@test.ex> R=r4 T=ft1
 --------> CALLER@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -972,6 +961,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   maildir_use_size_file=no
   locking by lockfile fcntl 
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling CALLER@test.ex
 t1 transport returned OK for CALLER@test.ex
 post-process CALLER@test.ex (0)
@@ -979,8 +969,6 @@ CALLER@test.ex delivered
 LOG: MAIN
   => CALLER <CALLER@test.ex> R=r1 T=t1
 --------> usery@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -1015,6 +1003,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   maildir_use_size_file=no
   locking by lockfile fcntl 
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling usery@test.ex
 t1 transport returned OK for usery@test.ex
 post-process usery@test.ex (0)
@@ -1022,8 +1011,6 @@ usery@test.ex delivered
 LOG: MAIN
   => usery <usery@test.ex> R=r2 T=t1
 --------> userz@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -1058,6 +1045,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   maildir_use_size_file=no
   locking by lockfile fcntl 
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userz@test.ex
 t2 transport returned OK for userz@test.ex
 post-process userz@test.ex (0)
index c44e370e17b38ff1a5e2ab16dec7e6b22a0b1084..39b958d45888005fb080d6f4d4fe41f45a792381 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -47,6 +48,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -N -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -70,8 +72,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -99,13 +99,13 @@ checking domains
     in TESTSUITE/aux-fixed/0403.accountfile
   creating new cache entry
   lookup failed
-test.ex in ""?
-test.ex in ""? no (end of list)
+test.ex in domains?
+test.ex in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "lsearch;TESTSUITE/aux-fixed/0403.data"?
+test.ex in domains?
  list element: lsearch;TESTSUITE/aux-fixed/0403.data
  search_open: lsearch "TESTSUITE/aux-fixed/0403.data"
  search_find: file="TESTSUITE/aux-fixed/0403.data"
@@ -120,9 +120,9 @@ test.ex in "lsearch;TESTSUITE/aux-fixed/0403.data"?
    in TESTSUITE/aux-fixed/0403.data
  creating new cache entry
  lookup yielded: [DOMAINDATA_test.ex]
- test.ex in "lsearch;TESTSUITE/aux-fixed/0403.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data")
+ test.ex in domains? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data")
 checking local_parts
-userx in "lsearch;TESTSUITE/aux-fixed/0403.data"?
+userx in local_parts?
  list element: lsearch;TESTSUITE/aux-fixed/0403.data
  search_open: lsearch "TESTSUITE/aux-fixed/0403.data"
    cached open
@@ -138,7 +138,7 @@ userx in "lsearch;TESTSUITE/aux-fixed/0403.data"?
    in TESTSUITE/aux-fixed/0403.data
  creating new cache entry
  lookup yielded: [LOCALPARTDATA_userx]
- userx in "lsearch;TESTSUITE/aux-fixed/0403.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data")
+ userx in local_parts? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data")
 +++ROUTER:
 +++domain_data=[DOMAINDATA_test.ex]
 +++local_part_data=[LOCALPARTDATA_userx]
@@ -159,8 +159,6 @@ r2 router generated TESTSUITE/test-mail/junk
 routed by r2 router
   envelope to: userx@test.ex
   transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -179,8 +177,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -204,6 +200,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   locking by lockfile fcntl 
 *** delivery by t1 transport bypassed by -N option
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling TESTSUITE/test-mail/junk:userx@test.ex
 t1 transport returned OK for TESTSUITE/test-mail/junk
 post-process TESTSUITE/test-mail/junk (0)
@@ -241,6 +238,7 @@ search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 ### _data from a multi-step expansion
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -288,6 +286,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -N -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -311,8 +310,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   charlie@dom1.ain 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -341,9 +338,9 @@ checking domains
   creating new cache entry
   lookup yielded: 
   lookup yield replace by key: charlie@dom1.ain
-dom1.ain in "dom1.ain"?
+dom1.ain in domains?
  list element: dom1.ain
- dom1.ain in "dom1.ain"? yes (matched "dom1.ain")
+ dom1.ain in domains? yes (matched "dom1.ain")
 checking local_parts
   search_open: lsearch "TESTSUITE/aux-fixed/0403.accountfile"
     cached open
@@ -358,9 +355,9 @@ checking local_parts
     in TESTSUITE/aux-fixed/0403.accountfile
   lookup yielded: 
   lookup yield replace by key: charlie@dom1.ain
-charlie in "charlie"?
+charlie in local_parts?
  list element: charlie
- charlie in "charlie"? yes (matched "charlie")
+ charlie in local_parts? yes (matched "charlie")
 +++ROUTER:
 +++domain_data=dom1.ain
 +++local_part_data=charlie
@@ -378,8 +375,6 @@ r1 router generated TESTSUITE/test-mail/junk
 routed by r1 router
   envelope to: charlie@dom1.ain
   transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -398,8 +393,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> TESTSUITE/test-mail/junk <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -423,6 +416,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   locking by lockfile fcntl 
 *** delivery by t1 transport bypassed by -N option
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling TESTSUITE/test-mail/junk:charlie@dom1.ain
 t1 transport returned OK for TESTSUITE/test-mail/junk
 post-process TESTSUITE/test-mail/junk (0)
index bf8a60e5d65a6d4ec3549e13df6519924f0c7dad..699106f7b7f1e296439fee04af3202da4c3820cf 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -146,6 +147,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -171,8 +173,6 @@ body_linecount=0 message_linecount=160
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -188,9 +188,9 @@ routing userx@test.ex
 --------> r1 router <--------
 local_part=userx domain=test.ex
 checking local_parts
-userx in "sender"?
+userx in local_parts?
  list element: sender
-userx in "sender"? no (end of list)
+userx in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=userx domain=test.ex
@@ -217,8 +217,6 @@ r2 router generated >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex
 routed by r2 router
   envelope to: userx@test.ex
   transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -237,8 +235,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex, ... <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -252,6 +248,7 @@ t1 transport entered
 taking data from address
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd autoreply -odi -odi -t -oem -oi -f <> -E10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -917,6 +914,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1239
 configuration file is TESTSUITE/test-config
@@ -2763,8 +2761,6 @@ Delivery address list:
   sender@test.ex 
   sender@test.ex 
   sender@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -6422,9 +6418,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6441,9 +6437,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6459,9 +6455,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6477,9 +6473,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6495,9 +6491,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6513,9 +6509,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6531,9 +6527,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6549,9 +6545,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6567,9 +6563,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6585,9 +6581,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6603,9 +6599,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6621,9 +6617,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6639,9 +6635,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6657,9 +6653,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6675,9 +6671,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6693,9 +6689,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6711,9 +6707,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6729,9 +6725,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6747,9 +6743,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6765,9 +6761,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6783,9 +6779,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6801,9 +6797,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6819,9 +6815,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6837,9 +6833,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6855,9 +6851,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6873,9 +6869,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6891,9 +6887,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6909,9 +6905,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6927,9 +6923,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6945,9 +6941,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6963,9 +6959,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6981,9 +6977,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -6999,9 +6995,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7017,9 +7013,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7035,9 +7031,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7053,9 +7049,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7071,9 +7067,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7089,9 +7085,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7107,9 +7103,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7125,9 +7121,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7143,9 +7139,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7161,9 +7157,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7179,9 +7175,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7197,9 +7193,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7215,9 +7211,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7233,9 +7229,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7251,9 +7247,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7269,9 +7265,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7287,9 +7283,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7305,9 +7301,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7323,9 +7319,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7341,9 +7337,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7359,9 +7355,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7377,9 +7373,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7395,9 +7391,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7413,9 +7409,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7431,9 +7427,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7449,9 +7445,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7467,9 +7463,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7485,9 +7481,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7503,9 +7499,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7521,9 +7517,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7539,9 +7535,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7557,9 +7553,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7575,9 +7571,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7593,9 +7589,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7611,9 +7607,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7629,9 +7625,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7647,9 +7643,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7665,9 +7661,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7683,9 +7679,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7701,9 +7697,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7719,9 +7715,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7737,9 +7733,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7755,9 +7751,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7773,9 +7769,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7791,9 +7787,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7809,9 +7805,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7827,9 +7823,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7845,9 +7841,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7863,9 +7859,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7881,9 +7877,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7899,9 +7895,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7917,9 +7913,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7935,9 +7931,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7953,9 +7949,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7971,9 +7967,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -7989,9 +7985,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8007,9 +8003,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8025,9 +8021,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8043,9 +8039,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8061,9 +8057,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8079,9 +8075,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8097,9 +8093,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8115,9 +8111,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8133,9 +8129,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8151,9 +8147,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8169,9 +8165,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8187,9 +8183,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8205,9 +8201,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8223,9 +8219,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8241,9 +8237,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8259,9 +8255,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8277,9 +8273,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8295,9 +8291,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8313,9 +8309,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8331,9 +8327,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8349,9 +8345,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8367,9 +8363,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8385,9 +8381,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8403,9 +8399,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8421,9 +8417,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8439,9 +8435,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8457,9 +8453,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8475,9 +8471,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8493,9 +8489,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8511,9 +8507,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8529,9 +8525,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8547,9 +8543,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8565,9 +8561,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8583,9 +8579,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8601,9 +8597,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8619,9 +8615,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8637,9 +8633,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8655,9 +8651,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8673,9 +8669,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8691,9 +8687,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8709,9 +8705,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8727,9 +8723,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8745,9 +8741,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8763,9 +8759,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8781,9 +8777,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8799,9 +8795,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8817,9 +8813,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8835,9 +8831,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8853,9 +8849,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8871,9 +8867,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8889,9 +8885,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8907,9 +8903,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8925,9 +8921,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8943,9 +8939,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8961,9 +8957,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8979,9 +8975,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -8997,9 +8993,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9015,9 +9011,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9033,9 +9029,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9051,9 +9047,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9069,9 +9065,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9087,9 +9083,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9105,9 +9101,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9123,9 +9119,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9141,9 +9137,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9159,9 +9155,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9177,9 +9173,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9195,9 +9191,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9213,9 +9209,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9231,9 +9227,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9249,9 +9245,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9267,9 +9263,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9285,9 +9281,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9303,9 +9299,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9321,9 +9317,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9339,9 +9335,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9357,9 +9353,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9375,9 +9371,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9393,9 +9389,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9411,9 +9407,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9429,9 +9425,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9447,9 +9443,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9465,9 +9461,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9483,9 +9479,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9501,9 +9497,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9519,9 +9515,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9537,9 +9533,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9555,9 +9551,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9573,9 +9569,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9591,9 +9587,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9609,9 +9605,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9627,9 +9623,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9645,9 +9641,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9663,9 +9659,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9681,9 +9677,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9699,9 +9695,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9717,9 +9713,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9735,9 +9731,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9753,9 +9749,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9771,9 +9767,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9789,9 +9785,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9807,9 +9803,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9825,9 +9821,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9843,9 +9839,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9861,9 +9857,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9879,9 +9875,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9897,9 +9893,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9915,9 +9911,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9933,9 +9929,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9951,9 +9947,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9969,9 +9965,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -9987,9 +9983,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10005,9 +10001,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10023,9 +10019,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10041,9 +10037,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10059,9 +10055,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10077,9 +10073,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10095,9 +10091,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10113,9 +10109,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10131,9 +10127,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10149,9 +10145,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10167,9 +10163,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10185,9 +10181,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10203,9 +10199,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10221,9 +10217,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10239,9 +10235,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10257,9 +10253,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10275,9 +10271,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10293,9 +10289,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10311,9 +10307,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10329,9 +10325,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10347,9 +10343,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10365,9 +10361,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10383,9 +10379,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10401,9 +10397,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10419,9 +10415,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10437,9 +10433,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10455,9 +10451,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10473,9 +10469,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10491,9 +10487,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10509,9 +10505,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10527,9 +10523,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10545,9 +10541,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10563,9 +10559,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10581,9 +10577,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10599,9 +10595,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10617,9 +10613,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10635,9 +10631,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10653,9 +10649,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10671,9 +10667,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10689,9 +10685,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10707,9 +10703,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10725,9 +10721,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10743,9 +10739,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10761,9 +10757,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10779,9 +10775,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10797,9 +10793,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10815,9 +10811,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10833,9 +10829,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10851,9 +10847,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10869,9 +10865,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10887,9 +10883,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10905,9 +10901,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10923,9 +10919,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10941,9 +10937,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10959,9 +10955,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10977,9 +10973,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -10995,9 +10991,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11013,9 +11009,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11031,9 +11027,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11049,9 +11045,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11067,9 +11063,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11085,9 +11081,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11103,9 +11099,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11121,9 +11117,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11139,9 +11135,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11157,9 +11153,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11175,9 +11171,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11193,9 +11189,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11211,9 +11207,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11229,9 +11225,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11247,9 +11243,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11265,9 +11261,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11283,9 +11279,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11301,9 +11297,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11319,9 +11315,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11337,9 +11333,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11355,9 +11351,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11373,9 +11369,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11391,9 +11387,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11409,9 +11405,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11427,9 +11423,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11445,9 +11441,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11463,9 +11459,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11481,9 +11477,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11499,9 +11495,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11517,9 +11513,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11535,9 +11531,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11553,9 +11549,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11571,9 +11567,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11589,9 +11585,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11607,9 +11603,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11625,9 +11621,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11643,9 +11639,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11661,9 +11657,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11679,9 +11675,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11697,9 +11693,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11715,9 +11711,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11733,9 +11729,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11751,9 +11747,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11769,9 +11765,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11787,9 +11783,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11805,9 +11801,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11823,9 +11819,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11841,9 +11837,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11859,9 +11855,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11877,9 +11873,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11895,9 +11891,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11913,9 +11909,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11931,9 +11927,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11949,9 +11945,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11967,9 +11963,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -11985,9 +11981,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12003,9 +11999,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12021,9 +12017,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12039,9 +12035,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12057,9 +12053,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12075,9 +12071,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12093,9 +12089,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12111,9 +12107,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12129,9 +12125,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12147,9 +12143,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12165,9 +12161,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12183,9 +12179,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12201,9 +12197,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12219,9 +12215,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12237,9 +12233,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12255,9 +12251,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12273,9 +12269,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12291,9 +12287,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12309,9 +12305,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12327,9 +12323,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12345,9 +12341,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12363,9 +12359,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12381,9 +12377,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12399,9 +12395,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12417,9 +12413,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12435,9 +12431,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12453,9 +12449,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12471,9 +12467,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12489,9 +12485,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12507,9 +12503,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12525,9 +12521,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12543,9 +12539,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12561,9 +12557,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12579,9 +12575,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12597,9 +12593,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12615,9 +12611,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12633,9 +12629,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12651,9 +12647,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12669,9 +12665,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12687,9 +12683,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12705,9 +12701,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12723,9 +12719,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12741,9 +12737,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12759,9 +12755,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12777,9 +12773,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12795,9 +12791,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12813,9 +12809,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12831,9 +12827,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12849,9 +12845,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12867,9 +12863,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12885,9 +12881,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12903,9 +12899,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12921,9 +12917,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12939,9 +12935,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12957,9 +12953,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12975,9 +12971,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -12993,9 +12989,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13011,9 +13007,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13029,9 +13025,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13047,9 +13043,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13065,9 +13061,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13083,9 +13079,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13101,9 +13097,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13119,9 +13115,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13137,9 +13133,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13155,9 +13151,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13173,9 +13169,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13191,9 +13187,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13209,9 +13205,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13227,9 +13223,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13245,9 +13241,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13263,9 +13259,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13281,9 +13277,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13299,9 +13295,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13317,9 +13313,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13335,9 +13331,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13353,9 +13349,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13371,9 +13367,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13389,9 +13385,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13407,9 +13403,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13425,9 +13421,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13443,9 +13439,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13461,9 +13457,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13479,9 +13475,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13497,9 +13493,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13515,9 +13511,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13533,9 +13529,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13551,9 +13547,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13569,9 +13565,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13587,9 +13583,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13605,9 +13601,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13623,9 +13619,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13641,9 +13637,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13659,9 +13655,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13677,9 +13673,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13695,9 +13691,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13713,9 +13709,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13731,9 +13727,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13749,9 +13745,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13767,9 +13763,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13785,9 +13781,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13803,9 +13799,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13821,9 +13817,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13839,9 +13835,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13857,9 +13853,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13875,9 +13871,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13893,9 +13889,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13911,9 +13907,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13929,9 +13925,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13947,9 +13943,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13965,9 +13961,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -13983,9 +13979,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14001,9 +13997,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14019,9 +14015,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14037,9 +14033,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14055,9 +14051,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14073,9 +14069,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14091,9 +14087,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14109,9 +14105,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14127,9 +14123,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14145,9 +14141,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14163,9 +14159,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14181,9 +14177,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14199,9 +14195,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14217,9 +14213,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14235,9 +14231,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14253,9 +14249,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14271,9 +14267,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14289,9 +14285,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14307,9 +14303,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14325,9 +14321,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14343,9 +14339,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14361,9 +14357,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14379,9 +14375,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14397,9 +14393,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14415,9 +14411,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14433,9 +14429,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14451,9 +14447,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14469,9 +14465,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14487,9 +14483,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14505,9 +14501,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14523,9 +14519,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14541,9 +14537,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14559,9 +14555,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14577,9 +14573,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14595,9 +14591,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14613,9 +14609,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14631,9 +14627,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14649,9 +14645,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14667,9 +14663,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14685,9 +14681,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14703,9 +14699,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14721,9 +14717,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14739,9 +14735,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14757,9 +14753,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14775,9 +14771,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14793,9 +14789,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14811,9 +14807,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14829,9 +14825,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14847,9 +14843,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14865,9 +14861,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14883,9 +14879,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14901,9 +14897,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14919,9 +14915,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14937,9 +14933,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14955,9 +14951,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14973,9 +14969,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -14991,9 +14987,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15009,9 +15005,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15027,9 +15023,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15045,9 +15041,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15063,9 +15059,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15081,9 +15077,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15099,9 +15095,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15117,9 +15113,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15135,9 +15131,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15153,9 +15149,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15171,9 +15167,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15189,9 +15185,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15207,9 +15203,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15225,9 +15221,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15243,9 +15239,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15261,9 +15257,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15279,9 +15275,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15297,9 +15293,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15315,9 +15311,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15333,9 +15329,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15351,9 +15347,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15369,9 +15365,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15387,9 +15383,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15405,9 +15401,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15423,9 +15419,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15441,9 +15437,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15459,9 +15455,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15477,9 +15473,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15495,9 +15491,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15513,9 +15509,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15531,9 +15527,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15549,9 +15545,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15567,9 +15563,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15585,9 +15581,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15603,9 +15599,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15621,9 +15617,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15639,9 +15635,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15657,9 +15653,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15675,9 +15671,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15693,9 +15689,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15711,9 +15707,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15729,9 +15725,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15747,9 +15743,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15765,9 +15761,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15783,9 +15779,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15801,9 +15797,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15819,9 +15815,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15837,9 +15833,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15855,9 +15851,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15873,9 +15869,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15891,9 +15887,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15909,9 +15905,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15927,9 +15923,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15945,9 +15941,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15963,9 +15959,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15981,9 +15977,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -15999,9 +15995,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16017,9 +16013,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16035,9 +16031,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16053,9 +16049,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16071,9 +16067,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16089,9 +16085,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16107,9 +16103,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16125,9 +16121,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16143,9 +16139,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16161,9 +16157,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16179,9 +16175,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16197,9 +16193,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16215,9 +16211,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16233,9 +16229,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16251,9 +16247,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16269,9 +16265,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16287,9 +16283,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16305,9 +16301,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16323,9 +16319,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16341,9 +16337,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16359,9 +16355,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16377,9 +16373,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16395,9 +16391,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16413,9 +16409,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16431,9 +16427,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16449,9 +16445,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16467,9 +16463,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16485,9 +16481,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16503,9 +16499,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16521,9 +16517,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16539,9 +16535,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16557,9 +16553,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16575,9 +16571,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16593,9 +16589,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16611,9 +16607,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16629,9 +16625,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16647,9 +16643,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16665,9 +16661,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16683,9 +16679,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16701,9 +16697,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16719,9 +16715,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16737,9 +16733,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16755,9 +16751,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16773,9 +16769,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16791,9 +16787,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16809,9 +16805,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16827,9 +16823,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16845,9 +16841,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16863,9 +16859,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16881,9 +16877,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16899,9 +16895,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16917,9 +16913,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16935,9 +16931,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16953,9 +16949,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16971,9 +16967,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -16989,9 +16985,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17007,9 +17003,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17025,9 +17021,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17043,9 +17039,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17061,9 +17057,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17079,9 +17075,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17097,9 +17093,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17115,9 +17111,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17133,9 +17129,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17151,9 +17147,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17169,9 +17165,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17187,9 +17183,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17205,9 +17201,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17223,9 +17219,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17241,9 +17237,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17259,9 +17255,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17277,9 +17273,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17295,9 +17291,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17313,9 +17309,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17331,9 +17327,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -17349,9 +17345,9 @@ routing sender@test.ex
 --------> r1 router <--------
 local_part=sender domain=test.ex
 checking local_parts
-sender in "sender"?
+sender in local_parts?
  list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
 calling r1 router
 r1 router called for sender@test.ex
   domain = test.ex
@@ -18586,8 +18582,6 @@ sender@test.ex is a duplicate address: discarded
 sender@test.ex is a duplicate address: discarded
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> sender@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -18604,7 +18598,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/sender'
+below-home: de-tainting path 'TESTSUITE/test-mail/sender'
 lock name: TESTSUITE/test-mail/sender.lock
 hitch name: TESTSUITE/test-mail/sender.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -18618,6 +18612,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling sender@test.ex
 t2 transport returned OK for sender@test.ex
 post-process sender@test.ex (0)
@@ -18652,6 +18647,7 @@ search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (autoreply) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport succeeded
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex, ...:userx@test.ex
 t1 transport returned OK for >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex, ...
 post-process >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex, ... (0)
index bbe75fb929e502b3c6034af54f88a3c1edd2717e..09ad23207d4f909bcefa35d93e6c5f30b760652d 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -47,6 +48,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -70,8 +72,6 @@ body_linecount=0 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -87,9 +87,9 @@ routing userx@test.ex
 --------> r1 router <--------
 local_part=userx domain=test.ex
 checking local_parts
-userx in "userx : usery"?
+userx in local_parts?
  list element: userx
- userx in "userx : usery"? yes (matched "userx")
+ userx in local_parts? yes (matched "userx")
 calling r1 router
 r1 router called for userx@test.ex
   domain = test.ex
@@ -103,10 +103,10 @@ routing usery@test.ex
 --------> r1 router <--------
 local_part=usery domain=test.ex
 checking local_parts
-usery in "userx : usery"?
+usery in local_parts?
  list element: userx
  list element: usery
- usery in "userx : usery"? yes (matched "usery")
+ usery in local_parts? yes (matched "usery")
 calling r1 router
 r1 router called for usery@test.ex
   domain = test.ex
@@ -139,8 +139,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -157,7 +155,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -169,6 +167,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@test.ex
 t1 transport returned OK for userx@test.ex
 post-process userx@test.ex (0)
index f1eaccfa78c749a33a4c97d7a1f9877c7de46e69..05abad4387e54336b4916ec97b346ad6bcaf2093 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -18,7 +19,7 @@ routing x@b.domain
 --------> r1 router <--------
 local_part=x domain=b.domain
 checking domains
-b.domain in "!+C"?
+b.domain in domains?
  list element: !+C
   start sublist C
    b.domain in "+A : +B"?
@@ -63,17 +64,17 @@ b.domain in "!+C"?
    ╎b.domain in "+A : +B"? yes (matched "+B")
   end sublist C
  data from lookup saved for cache for +C: key 'b.domain' value 'b.domain-data'
- b.domain in "!+C"? no (matched "!+C")
+ b.domain in domains? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=x domain=b.domain
 checking domains
-b.domain in "+B"?
+b.domain in domains?
  list element: +B
   start sublist B
  cached yes match for +B
  cached lookup data = b.domain-data
- b.domain in "+B"? yes (matched "+B" - cached)
+ b.domain in domains? yes (matched "+B" - cached)
 domain_data=b.domain-data
 calling r2 router
 r2 router called for x@b.domain
@@ -95,7 +96,7 @@ routing x@a.domain
 --------> r1 router <--------
 local_part=x domain=a.domain
 checking domains
-a.domain in "!+C"?
+a.domain in domains?
  list element: !+C
   start sublist C
    a.domain in "+A : +B"?
@@ -123,12 +124,12 @@ a.domain in "!+C"?
    ╎a.domain in "+A : +B"? yes (matched "+A")
   end sublist C
  data from lookup saved for cache for +C: key 'a.domain' value 'a.domain-data'
- a.domain in "!+C"? no (matched "!+C")
+ a.domain in domains? no (matched "!+C")
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=x domain=a.domain
 checking domains
-a.domain in "+B"?
+a.domain in domains?
  list element: +B
   start sublist B
    a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"?
@@ -149,17 +150,17 @@ a.domain in "+B"?
    ╎lookup failed
    a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"? no (end of list)
   end sublist B
-a.domain in "+B"? no (end of list)
+a.domain in domains? no (end of list)
 r2 router skipped: domains mismatch
 --------> r3 router <--------
 local_part=x domain=a.domain
 checking domains
-a.domain in "+A"?
+a.domain in domains?
  list element: +A
   start sublist A
  cached yes match for +A
  cached lookup data = a.domain-data
- a.domain in "+A"? yes (matched "+A" - cached)
+ a.domain in domains? yes (matched "+A" - cached)
 domain_data=a.domain-data
 calling r3 router
 r3 router called for x@a.domain
index 6ea0d7822bf7220435e431324468cb7985b5c1dd..28f6784a20a87faed78f81b2913fe0073e533997 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -17,52 +18,56 @@ routing k@mxt13.test.ex
 --------> dnslookup router <--------
 local_part=k domain=mxt13.test.ex
 checking domains
-mxt13.test.ex in "! +local_domains"?
- list element: ! +local_domains
+mxt13.test.ex in domains?
+ list element: !+local_domains
   start sublist local_domains
    mxt13.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"?
    ╎list element: !mxt13.test.ex
    ╎mxt13.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? no (matched "!mxt13.test.ex")
   end sublist local_domains
  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)
+mxt13.test.ex in domains? yes (end of list)
 calling dnslookup router
 dnslookup router called for k@mxt13.test.ex
   domain = mxt13.test.ex
-mxt13.test.ex in "*"?
- list element: *
- mxt13.test.ex in "*"? yes (matched "*")
-DNS lookup of mxt13.test.ex (MX) using fakens
-DNS lookup of mxt13.test.ex (MX) succeeded
-DNS lookup of other1.test.ex (A) using fakens
-DNS lookup of other1.test.ex (A) succeeded
-DNS lookup of other2.test.ex (A) using fakens
-DNS lookup of other2.test.ex (A) succeeded
-other1.test.ex in hosts_treat_as_local?
- list element: +local_domains
-  start sublist local_domains
-   other1.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"?
-   ╎list element: !mxt13.test.ex
-   ╎list element: !other1.test.ex
-   ╎other1.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? no (matched "!other1.test.ex")
-  end sublist local_domains
-other1.test.ex in hosts_treat_as_local? no (end of list)
-other2.test.ex in hosts_treat_as_local?
- list element: +local_domains
-  start sublist local_domains
-   other2.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"?
-   ╎list element: !mxt13.test.ex
-   ╎list element: !other1.test.ex
-   ╎list element: *.test.ex
-   ╎other2.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? yes (matched "*.test.ex")
-  end sublist local_domains
- other2.test.ex in hosts_treat_as_local? yes (matched "+local_domains")
+main lookup for domain
+ check dnssec require list
+  mxt13.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  mxt13.test.ex in dnssec_request_domains?
+   list element: *
+   mxt13.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of mxt13.test.ex (MX) using fakens
+ DNS lookup of mxt13.test.ex (MX) succeeded
+ DNS lookup of other1.test.ex (A) using fakens
+ DNS lookup of other1.test.ex (A) succeeded
+ DNS lookup of other2.test.ex (A) using fakens
+ DNS lookup of other2.test.ex (A) succeeded
+ other1.test.ex in hosts_treat_as_local?
+  list element: +local_domains
+   start sublist local_domains
+   ╎other1.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"?
+   ╎ list element: !mxt13.test.ex
+   ╎ list element: !other1.test.ex
+   ╎ other1.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? no (matched "!other1.test.ex")
+   end sublist local_domains
+ other1.test.ex in hosts_treat_as_local? no (end of list)
+ other2.test.ex in hosts_treat_as_local?
+  list element: +local_domains
+   start sublist local_domains
+   ╎other2.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"?
+   ╎ list element: !mxt13.test.ex
+   ╎ list element: !other1.test.ex
+   ╎ list element: *.test.ex
+   ╎ other2.test.ex in "!mxt13.test.ex : !other1.test.ex : *.test.ex"? yes (matched "*.test.ex")
+   end sublist local_domains
+  other2.test.ex in hosts_treat_as_local? yes (matched "+local_domains")
 local host in host list - removed hosts:
   other2.test.ex V4NET.12.3.2 5
   other2.test.ex V4NET.12.3.1 5
-fully qualified name = mxt13.test.ex
-host_find_bydns yield = HOST_FOUND (3); returned hosts:
-  other1.test.ex V4NET.12.4.5 MX=4 
+ fully qualified name = mxt13.test.ex
+ host_find_bydns yield = HOST_FOUND (3); returned hosts:
+   other1.test.ex V4NET.12.4.5 MX=4 
 set transport smtp
 queued for smtp transport: local_part = k
 domain = mxt13.test.ex
index a97713c59f28e0fb2f6e74bb46e072c39013d869..b9ab6329f197accd922845ed43dcf74a7974666e 100644 (file)
@@ -1,15 +1,16 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@uppercase.test.ex
@@ -20,16 +21,21 @@ routing x@uppercase.test.ex
 --------> r0 router <--------
 local_part=x domain=uppercase.test.ex
 checking senders
+test.ex in ""? no (end of list)
+CALLER@test.ex in senders? no (end of list)
 r0 router skipped: senders mismatch
 --------> r1 router <--------
 local_part=x domain=uppercase.test.ex
 calling r1 router
 r1 router called for x@uppercase.test.ex
   domain = uppercase.test.ex
-uppercase.test.ex (MX resp) DNSSEC
+main lookup for domain
+ check dnssec require list
+ check dnssec request list
+ uppercase.test.ex (MX resp) DNSSEC
 local host found for non-MX address
-fully qualified name = UpperCase.test.ex
-uppercase.test.ex 127.0.0.1 mx=-1 sort=xx 
+ fully qualified name = UpperCase.test.ex
+ uppercase.test.ex 127.0.0.1 mx=-1 sort=xx 
 remote host address is the local host: uppercase.test.ex: configured to try delivery anyway
 set transport t1
 queued for t1 transport: local_part = x
@@ -47,23 +53,23 @@ After routing:
     x@UpperCase.test.ex
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-t1.lockfile
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:550:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** x@uppercase.test.ex R=r1 T=t1 H=uppercase.test.ex [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<x@UpperCase.test.ex>: 550 Unknown
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: CALLER@test.ex
@@ -91,8 +97,8 @@ After routing:
   Deferred addresses:
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1236 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
index 2722e6b3439cc224908515d9f2509040918e0ce1..2e0719788502c28eceae8a84a94436588a237589 100644 (file)
@@ -28,6 +28,7 @@ MUNGED: ::1 will be omitted in what follows
 >>> accept: condition test succeeded in ACL "mail"
 >>> end of ACL "mail": ACCEPT
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -91,21 +92,22 @@ MUNGED: ::1 will be omitted in what follows
 get[host|ipnode]byname[2] looked up these IP addresses:
   name=127.0.0.1 address=127.0.0.1
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
  dbfn_read: key=y
+ dbfn_read: null return
  callout cache: no domain record found for y
  dbfn_read: key=x@y
+ dbfn_read: null return
  callout cache: no address record found for x@y
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... 127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
   SMTP<< 220 server ready
 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
   SMTP>> EHLO myhost.test.ex
@@ -126,18 +128,16 @@ cmd buf flush ddd bytes
   SMTP<< 220 OK
   SMTP(close)>>
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:QUIT:220'
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
- EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR|O_CREAT
+ EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
- opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR|O_CREAT
- dbfn_write: key=y
+ opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
+ dbfn_write: key=y datalen 40
  wrote callout cache domain record for y:
    result=1 postmaster=0 random=0
- dbfn_write: key=x@y
+ dbfn_write: key=x@y datalen 16
  wrote positive callout cache address record for x@y
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 sender x@y verified ok
 accept: condition test succeeded in ACL "mail"
@@ -150,6 +150,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -213,18 +214,18 @@ MUNGED: ::1 will be omitted in what follows
 get[host|ipnode]byname[2] looked up these IP addresses:
   name=127.0.0.1 address=127.0.0.1
 Attempting full verification using callout
- locking TESTSUITE/spool/db/callout.lockfile
- locked  TESTSUITE/spool/db/callout.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/callout> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/callout: flags=O_RDWR
  dbfn_read: key=y
+ dbfn_read: size 40 return
  callout cache: found domain record for y
  dbfn_read: key=x@y
+ dbfn_read: size 16 return
  callout cache: found address record for x@y
  callout cache: address record is positive
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 ----------- end verify ------------
 sender x@y verified ok
 accept: condition test succeeded in ACL "mail"
@@ -293,9 +294,10 @@ MUNGED: ::1 will be omitted in what follows
 >>> callout cache: no domain record found for b
 >>> callout cache: no address record found for a@b
 >>> interface=NULL port=PORT_S
->>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... 127.0.0.1 in hosts_try_fastopen?
->>>  list element: 
->>> >>>  connected
+>>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+>>>  127.0.0.1 in hosts_try_fastopen?
+>>>   list element: 
+>>> connected
 >>>   SMTP<< 220 server ready
 >>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
 >>>   SMTP>> EHLO myhost.test.ex
@@ -346,9 +348,10 @@ MUNGED: ::1 will be omitted in what follows
 >>> callout cache: no domain record found for q
 >>> callout cache: no address record found for p1@q
 >>> interface=NULL port=PORT_S
->>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... 127.0.0.1 in hosts_try_fastopen?
->>>  list element: 
->>> >>>  connected
+>>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+>>>  127.0.0.1 in hosts_try_fastopen?
+>>>   list element: 
+>>> connected
 >>>   SMTP<< 220 server ready
 >>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
 >>>   SMTP>> EHLO myhost.test.ex
index 40eef044c407c1e43d9fc7aa0d22df53d21403d6..eff327b6215b3d34d2b65cfa7cee7b0d00aca4bd 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -23,6 +24,7 @@ p1240 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -46,6 +48,7 @@ p1241 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -70,6 +73,7 @@ p1242 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -94,6 +98,7 @@ p1243 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -119,6 +124,7 @@ p1244 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1239
 configuration file is TESTSUITE/test-config
index 77e14798136f98b75d9a85d6f945a8a0a05bb3e0..2ae20bf65204a84b5a1fcc48cb8e5b79e76560d3 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index a8142da544fe8fc4ee22aae7bc042b1a93708512..29241cfd3e053b107e62596b14a849d79a348f33 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
  search_open: lsearch "TESTSUITE/aux-fixed/0437.ls"
  search_find: file="TESTSUITE/aux-fixed/0437.ls"
    key="spool" partial=-1 affix=NULL starflags=0 opts=NULL
@@ -44,12 +45,13 @@ search_tidyup called
  creating new cache entry
  lookup yielded: file
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1235 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx <userx@myhost.test.ex> R=r1 T=t1
 LOG: MAIN
   Completed
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=p1235 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 search_tidyup called
  search_open: lsearch "TESTSUITE/aux-fixed/0437.ls"
  search_find: file="TESTSUITE/aux-fixed/0437.ls"
@@ -78,12 +80,13 @@ search_tidyup called
  creating new cache entry
  lookup yielded: file
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx <userx@myhost.test.ex> R=r1 T=t1
 LOG: MAIN
   Completed
 search_tidyup called
->>>>>>>>>>>>>>>> Exim pid=p1236 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 search_tidyup called
index 58f8d82629fa29bfe29dc2156889e200e7d2396d..b63c3c556844aa91ff9360448372e7202bec2e2e 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -25,6 +26,7 @@ p1237 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -49,6 +51,7 @@ p1238 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
index 295a873068be9b984b89d1b8ec03bdbf6706103c..75884eae0ea1dc1823b576e601cabce001d8340a 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@ten-1.test.ex
 >>> calling r1 router
->>> ten-1.test.ex in "*"?
->>>  list element: *
->>>  ten-1.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   ten-1.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   ten-1.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    ten-1.test.ex in dnssec_request_domains? yes (matched "*")
 >>> routed by r1 router
 >>> Attempting full verification using callout
 >>> callout cache: no domain record found for ten-1.test.ex
index 1364d55a2af1afe83c97bc7f6ef31396b46d868a..095135bbf5d89aea185e782354d0d0616642230d 100644 (file)
@@ -1,10 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -18,7 +20,8 @@ getting address for 127.0.0.1
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D: errno=dd more_errno=dd,A flags=2
@@ -26,11 +29,13 @@ all IP addresses skipped or deferred at least one address
 updating wait-t1 database
 added 10HmaX-000000005vi-0000 to queue for 127.0.0.1
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == userx@test.ex R=r1 T=t1 defer (dd): Connection refused
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -47,7 +52,8 @@ no host retry record
 no message retry record
 127.0.0.1 [127.0.0.1]:1112 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D2 ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D2 ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D2: errno=dd more_errno=dd,A flags=2
@@ -55,9 +61,10 @@ all IP addresses skipped or deferred at least one address
 updating wait-t1 database
 already listed for 127.0.0.1
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == userx@test.ex R=r1 T=t1 defer (dd): Connection refused
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 470f2ed599d186d6c042c3c4a3de95c6b79375a4..1f0f29e018a0c89df3dfa60fccf5b8a832760ce8 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying Ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -12,7 +14,8 @@ Attempting full verification using callout
 callout cache: no domain record found for localhost
 callout cache: no address record found for Ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -51,11 +54,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying NOTok@elsewhere
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -64,7 +69,8 @@ Attempting full verification using callout
 callout cache: no domain record found for elsewhere
 callout cache: no address record found for NOTok@elsewhere
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
@@ -87,11 +93,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying NOTok2@elsewhere
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -100,7 +108,8 @@ Attempting full verification using callout
 callout cache: found domain record for elsewhere
 callout cache: no address record found for NOTok2@elsewhere
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 OK
index e395c225933b1e286ab215bf13597ea631dcfc1b..391589473e6e270719cc26c18203d3bc71fee90e 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -16,31 +17,37 @@ routing x@ten-1
 --------> all router <--------
 local_part=x domain=ten-1
 checking domains
-ten-1 in "!@mx_any"?
+ten-1 in domains?
  list element: !@mx_any
-DNS lookup of ten-1 (MX) using fakens
-DNS lookup of ten-1 (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1-MX-xxxx, ttl 3000
-Address records are not being sought
-ten-1 in "!@mx_any"? yes (end of list)
+ check dnssec require list
+ check dnssec request list
+ DNS lookup of ten-1 (MX) using fakens
+ DNS lookup of ten-1 (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1-MX-xxxx, ttl 3000
+ Address records are not being sought
+ten-1 in domains? yes (end of list)
 calling all router
 all router called for x@ten-1
   domain = ten-1
-ten-1 in "*"?
- list element: *
- ten-1 in "*"? yes (matched "*")
-DNS lookup of ten-1 (MX) using fakens
-DNS lookup of ten-1 (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1-MX-xxxx, ttl 3000
-ten-1 (MX resp) DNSSEC
-DNS lookup of ten-1 (A) using fakens
-DNS lookup of ten-1 (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1 in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1 in dnssec_request_domains?
+   list element: *
+   ten-1 in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1 (MX) using fakens
+ DNS lookup of ten-1 (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1-MX-xxxx, ttl 3000
+ ten-1 (MX resp) DNSSEC
+ DNS lookup of ten-1 (A) using fakens
+ DNS lookup of ten-1 (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 domain changed to ten-1.test.ex
 rewriting header lines
 re-routed to x@ten-1.test.ex
@@ -51,31 +58,37 @@ routing x@ten-1.test.ex
 --------> all router <--------
 local_part=x domain=ten-1.test.ex
 checking domains
-ten-1.test.ex in "!@mx_any"?
+ten-1.test.ex in domains?
  list element: !@mx_any
-DNS lookup of ten-1.test.ex (MX) using fakens
-DNS lookup of ten-1.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
-Address records are not being sought
-ten-1.test.ex in "!@mx_any"? yes (end of list)
+ check dnssec require list
+ check dnssec request list
+ DNS lookup of ten-1.test.ex (MX) using fakens
+ DNS lookup of ten-1.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
+ Address records are not being sought
+ten-1.test.ex in domains? yes (end of list)
 calling all router
 all router called for x@ten-1.test.ex
   domain = ten-1.test.ex
-ten-1.test.ex in "*"?
- list element: *
- ten-1.test.ex in "*"? yes (matched "*")
-DNS lookup of ten-1.test.ex (MX) using fakens
-DNS lookup of ten-1.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
-ten-1.test.ex (MX resp) DNSSEC
-DNS lookup of ten-1.test.ex (A) using fakens
-DNS lookup of ten-1.test.ex (A) succeeded
-fully qualified name = ten-1.test.ex
-ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
+main lookup for domain
+ check dnssec require list
+  ten-1.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  ten-1.test.ex in dnssec_request_domains?
+   list element: *
+   ten-1.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of ten-1.test.ex (MX) using fakens
+ DNS lookup of ten-1.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for ten-1.test.ex-MX-xxxx, ttl 3000
+ ten-1.test.ex (MX resp) DNSSEC
+ DNS lookup of ten-1.test.ex (A) using fakens
+ DNS lookup of ten-1.test.ex (A) succeeded
+ fully qualified name = ten-1.test.ex
+ ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 set transport smtp
 queued for smtp transport: local_part = x
 domain = ten-1.test.ex
index 1d2b22b961d99bf2ff5fedb6c9387c8650917c52..aa91bff38a4efe8cf862f1305619ca5c1d19cd22 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -54,12 +55,12 @@ routing abc@domain1
 --------> r1 router <--------
 local_part=abc domain=domain1
 checking domains
-domain1 in "+special_domains"?
+domain1 in domains?
  list element: +special_domains
   start sublist special_domains
  cached yes match for +special_domains
  cached lookup data = data for domain1
- domain1 in "+special_domains"? yes (matched "+special_domains" - cached)
+ domain1 in domains? yes (matched "+special_domains" - cached)
 calling r1 router
 rda_interpret (string): '$local_part@xxx.$domain'
 expanded: 'abc@xxx.domain1' (tainted)
@@ -79,7 +80,7 @@ routing abc@xxx.domain1
 --------> r1 router <--------
 local_part=abc domain=xxx.domain1
 checking domains
-xxx.domain1 in "+special_domains"?
+xxx.domain1 in domains?
  list element: +special_domains
   start sublist special_domains
    xxx.domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"?
@@ -99,7 +100,7 @@ xxx.domain1 in "+special_domains"?
    ╎lookup failed
    xxx.domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? no (end of list)
   end sublist special_domains
-xxx.domain1 in "+special_domains"? no (end of list)
+xxx.domain1 in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=abc domain=xxx.domain1
@@ -134,12 +135,12 @@ routing abc@domain1
 --------> r1 router <--------
 local_part=abc domain=domain1
 checking domains
-domain1 in "+special_domains"?
+domain1 in domains?
  list element: +special_domains
   start sublist special_domains
  cached yes match for +special_domains
  cached lookup data = data for domain1
- domain1 in "+special_domains"? yes (matched "+special_domains" - cached)
+ domain1 in domains? yes (matched "+special_domains" - cached)
 calling r1 router
 rda_interpret (string): '$local_part@xxx.$domain'
 expanded: 'abc@xxx.domain1' (tainted)
@@ -159,7 +160,7 @@ routing abc@xxx.domain1
 --------> r1 router <--------
 local_part=abc domain=xxx.domain1
 checking domains
-xxx.domain1 in "+special_domains"?
+xxx.domain1 in domains?
  list element: +special_domains
   start sublist special_domains
    xxx.domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"?
@@ -178,7 +179,7 @@ xxx.domain1 in "+special_domains"?
    ╎lookup failed
    xxx.domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? no (end of list)
   end sublist special_domains
-xxx.domain1 in "+special_domains"? no (end of list)
+xxx.domain1 in domains? no (end of list)
 r1 router skipped: domains mismatch
 --------> r2 router <--------
 local_part=abc domain=xxx.domain1
index 5bcd5a1ceafe41c69e9355b88a1a081b4def7525..3b0d8418d35be48453360c48a98215d716f3aec0 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -34,6 +35,7 @@ search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 exim: bad -f address "abc@somewhere.": domain is malformed (trailing dot not allowed)
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 seeking password data for user "CALLER": cache not available
@@ -108,6 +110,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 seeking password data for user "CALLER": cache not available
index 8881775622a3a42ab59baf83d3d8092b2f2112ab..c7658714e8b008592903c81d78277db5478ee058 100644 (file)
@@ -16,7 +16,8 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 delivering 10HmaZ-000000005vi-0000
 Transport port=25 replaced by host-specific port=PORT_S
-Connecting to localhost.test.ex [127.0.0.1]:PORT_S ...  connected
+Connecting to localhost.test.ex [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-server id
index 94818306689abfb73221d54aa06abfccaa9084dc..f58711b976fad28d68b682da51975ff996e75d56 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -18,20 +19,24 @@ local_part=x domain=mxt1c.test.ex
 calling r1 router
 r1 router called for x@mxt1c.test.ex
   domain = mxt1c.test.ex
-mxt1c.test.ex in "*"?
- list element: *
- mxt1c.test.ex in "*"? yes (matched "*")
-DNS lookup of mxt1c.test.ex (MX) using fakens
-DNS lookup of mxt1c.test.ex (MX) succeeded
-DNS lookup of dontqualify (A) using fakens
-DNS lookup of dontqualify (A) gave NO_DATA
-returning DNS_NODATA
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for dontqualify-A-xxxx, ttl -1
-fully qualified name = mxt1c.test.ex
-host_find_bydns yield = HOST_FIND_FAILED (0); returned hosts:
-  dontqualify <null> MX=1 *
+main lookup for domain
+ check dnssec require list
+  mxt1c.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  mxt1c.test.ex in dnssec_request_domains?
+   list element: *
+   mxt1c.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of mxt1c.test.ex (MX) using fakens
+ DNS lookup of mxt1c.test.ex (MX) succeeded
+ DNS lookup of dontqualify (A) using fakens
+ DNS lookup of dontqualify (A) gave NO_DATA
+ returning DNS_NODATA
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
+  writing neg-cache entry for dontqualify-A-xxxx, ttl -1
+ fully qualified name = mxt1c.test.ex
+ host_find_bydns yield = HOST_FIND_FAILED (0); returned hosts:
+   dontqualify <null> MX=1 *
 r1 router declined for x@mxt1c.test.ex
 no more routers
 search_tidyup called
index a0950c7a376439f0288fe4c8541a8f5710a4f922..a83a4921f7eb4f1df798f3056ba7e7eb8e6d04bd 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -26886,6 +26887,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -27082,6 +27084,7 @@ LOG: MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -27278,6 +27281,7 @@ LOG: MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -27446,6 +27450,7 @@ LOG: MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -27609,6 +27614,7 @@ LOG: MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1239
 configuration file is TESTSUITE/test-config
index 1e943d0e8b80bff3e5939e09d2f42ccd33547e38..3639713ec7b379233bb2f8bdd39e988b626746d6 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from CALLER
+ in chunking_advertise_hosts? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying r11@two.test.ex
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -12,7 +14,8 @@ Attempting full verification using callout
 callout cache: found domain record for two.test.ex
 callout cache: no address record found for r11@two.test.ex
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO the.local.host.name
   SMTP<< 250 OK
@@ -31,11 +34,13 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from CALLER
+ in chunking_advertise_hosts? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying r11@two.test.ex
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -44,7 +49,8 @@ Attempting full verification using callout
 callout cache: found domain record for two.test.ex
 callout cache: no address record found for r11@two.test.ex
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP(Connection timed out)<<
   SMTP(close)>>
 cmdlog: '(unset)'
index f080bfc0ee72b3240b31043b56c091458a785715..585e78d2a961fd881a33148a8f7458c7f0909b1d 100644 (file)
@@ -15,7 +15,7 @@
 >>> check hosts = 1.2.3.4 : <; 1.2.3.4::5.6.7.8
 >>> host in "1.2.3.4 : <; 1.2.3.4::5.6.7.8"?
 >>>  list element: 1.2.3.4
->>>  list element: <; 1.2.3.4:5.6.7.8
+>>>  list element: <;1.2.3.4:5.6.7.8
 LOG: unknown lookup type "<" in host list item "<; 1.2.3.4:5.6.7.8"
 >>> host in "1.2.3.4 : <; 1.2.3.4::5.6.7.8"? list match deferred for <; 1.2.3.4:5.6.7.8
 >>> deny: condition test deferred in ACL "a1"
index d14e2dbd20e2dcf3522ff536ece6af4b8e03578a..ee229ff93861c369f21c9b991551e8003a5d2fbc 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -18,7 +19,8 @@ checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@test.ex)
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1]:PORT_S (userx@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO the.local.host.name
 cmd buf flush ddd bytes
@@ -42,7 +44,7 @@ error for DATA ignored: pipelining is in use and there were no good recipients
 ok=1 send_quit=1 send_rset=1 continue_more=0 yield=0 first_address is NULL
 transport_check_waiting entered
   sequence=1 local_max=500 global_max=-1
-transport_check_waiting: TRUE
+transport_check_waiting: TRUE (found 10HmaY-000000005vi-0000)
   SMTP>> RSET
 cmd buf flush ddd bytes
   SMTP(closed)<<
@@ -52,6 +54,7 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:550:RSET'
 set_process_info: pppp delivering 10HmaX-000000005vi-0000: just tried 127.0.0.1 [127.0.0.1]:PORT_S for userx@test.ex: result OK
 Leaving t1 transport
 set_process_info: pppp delivering 10HmaX-000000005vi-0000 (just run t1 for userx@test.ex in subprocess)
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 set_process_info: pppp running queue: waiting for 10HmaX-000000005vi-0000 (pppp)
 set_process_info: pppp delivering 10HmaX-000000005vi-0000: waiting for a remote delivery subprocess to finish
 set_process_info: pppp delivering 10HmaX-000000005vi-0000
@@ -59,6 +62,7 @@ LOG: MAIN
   ** userx@test.ex R=r1 T=t1 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@test.ex>: 550 NO
 set_process_info: pppp tidying up after delivering 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -68,6 +72,7 @@ writing data block fd=dddd size=sss timeout=0
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -85,7 +90,8 @@ checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (CALLER@the.local.host.name)
 set_process_info: pppp delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1]:PORT_S (CALLER@the.local.host.name)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 set_process_info: pppp delivering 10HmaZ-000000005vi-0000: just tried 127.0.0.1 [127.0.0.1]:PORT_S for CALLER@the.local.host.name: result DEFER
@@ -95,16 +101,17 @@ updating wait-t1 database
 added 10HmaZ-000000005vi-0000 to queue for 127.0.0.1
 Leaving t1 transport
 set_process_info: pppp delivering 10HmaZ-000000005vi-0000 (just run t1 for CALLER@the.local.host.name in subprocess)
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 set_process_info: pppp delivering 10HmaZ-000000005vi-0000: waiting for a remote delivery subprocess to finish
 set_process_info: pppp delivering 10HmaZ-000000005vi-0000
 LOG: MAIN
   == CALLER@the.local.host.name R=r1 T=t1 defer (dd): Connection refused
 set_process_info: pppp tidying up after delivering 10HmaZ-000000005vi-0000
->>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1235 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 set_process_info: pppp running queue: waiting for children of pppp
 set_process_info: pppp running queue
 set_process_info: pppp running queue: 10HmaY-000000005vi-0000
@@ -124,13 +131,14 @@ updating wait-t1 database
 added 10HmaY-000000005vi-0000 to queue for 127.0.0.1
 Leaving t1 transport
 set_process_info: pppp delivering 10HmaY-000000005vi-0000 (just run t1 for usery@test.ex in subprocess)
+>>>>>>>>>>>>>>>> Exim pid=p1240 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 set_process_info: pppp running queue: waiting for 10HmaY-000000005vi-0000 (pppp)
 set_process_info: pppp delivering 10HmaY-000000005vi-0000: waiting for a remote delivery subprocess to finish
 set_process_info: pppp delivering 10HmaY-000000005vi-0000
 LOG: retry_defer MAIN
   == usery@test.ex R=r1 T=t1 defer (-54): retry time not reached for any host for 'test.ex'
 set_process_info: pppp tidying up after delivering 10HmaY-000000005vi-0000
->>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 set_process_info: pppp running queue: waiting for children of pppp
 set_process_info: pppp running queue
 LOG: queue_run MAIN
index 64ff0acc0674f515268fcb4a1b5f78ecbabe06de..dbcd3b5bde067ced95dcb3cb8641595e6e41b5e7 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index c38d537ea4fae3f1c4ccc423a61258989b342b70..ff2b49beb7b6372546b23dcd3c38c780e9846f39 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: smtp_connection MAIN
@@ -23,6 +24,7 @@ domain = domain2
 routed by r1 router
   envelope to: recip@domain2
   transport: t1
+other@domain2 in "lsearch;TESTSUITE/aux-fixed/0483.list"? no (end of list)
 LOG: MAIN REJECT
   U=CALLER F=<sender@domain1> rejected RCPT <other@domain2>
 LOG: smtp_connection MAIN
index 22ea6ae6504e735f94d025bc85547a0cabff2bc9..5855e2c6f7c3b95b9580a73e819f34a0eb5c3d6a 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index e703c88d907597e5e9694b35313e1803c6619e12..cb058603d64e2fd88ed8d2ed6aef98d6ce166c88 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
@@ -79,6 +80,7 @@ SMTP>> 250 OK id=10HmaX-000000005vi-0000
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 seeking password data for user "CALLER": cache not available
@@ -104,8 +106,6 @@ body_linecount=1 message_linecount=9
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -141,8 +141,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -159,7 +157,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -173,6 +171,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@test.ex
 t1 transport returned OK for userx@test.ex
 post-process userx@test.ex (0)
index 1c20a8b4b65ffd2f24c4286afbb88a0ea48c974e..80e21ae5dd837ec0ace32a2f84eb78f59b82ebdc 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -32,6 +33,7 @@ LOG: MAIN
 created log directory TESTSUITE/spool/log
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -64,6 +66,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -96,6 +99,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -128,6 +132,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -160,6 +165,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -192,6 +198,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -224,6 +231,7 @@ LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
index 8a3733a502151481bf68a36bcd7d8223a2edd18e..ebc043e8e213005b65a6b3dc57e6807cbacd70e0 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -16,35 +17,39 @@ routing ph@mxt1.test.ex
 --------> r1 router <--------
 local_part=ph domain=mxt1.test.ex
 checking domains
-mxt1.test.ex in "+anymx"?
+mxt1.test.ex in domains?
  list element: +anymx
   start sublist anymx
    mxt1.test.ex in "@mx_any"?
    ╎list element: @mx_any
-DNS lookup of mxt1.test.ex (MX) using fakens
-DNS lookup of mxt1.test.ex (MX) succeeded
-DNS lookup of eximtesthost.test.ex (A) using fakens
-DNS lookup of eximtesthost.test.ex (A) succeeded
+   ╎check dnssec require list
+   ╎check dnssec request list
+   ╎DNS lookup of mxt1.test.ex (MX) using fakens
+   ╎DNS lookup of mxt1.test.ex (MX) succeeded
+   ╎DNS lookup of eximtesthost.test.ex (A) using fakens
+   ╎DNS lookup of eximtesthost.test.ex (A) succeeded
 local host has lowest MX
-host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
-  eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5 
+   ╎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")
   end sublist anymx
  data from lookup saved for cache for +anymx: key 'mxt1.test.ex' value '@mx_any'
- mxt1.test.ex in "+anymx"? yes (matched "+anymx")
+ mxt1.test.ex in domains? yes (matched "+anymx")
 checking "condition" "${if match_domain{$domain}{+anymx}{yes}}"...
  mxt1.test.ex in "+anymx"?
   list element: +anymx
    start sublist anymx
    ╎mxt1.test.ex in "@mx_any"?
    ╎ list element: @mx_any
-DNS lookup of mxt1.test.ex (MX) using fakens
-DNS lookup of mxt1.test.ex (MX) succeeded
-DNS lookup of eximtesthost.test.ex (A) using fakens
-DNS lookup of eximtesthost.test.ex (A) succeeded
+   ╎ check dnssec require list
+   ╎ check dnssec request list
+   ╎ DNS lookup of mxt1.test.ex (MX) using fakens
+   ╎ DNS lookup of mxt1.test.ex (MX) succeeded
+   ╎ DNS lookup of eximtesthost.test.ex (A) using fakens
+   ╎ DNS lookup of eximtesthost.test.ex (A) succeeded
 local host has lowest MX
-host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
-  eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5 
+   ╎ 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")
    end sublist anymx
   mxt1.test.ex in "+anymx"? yes (matched "+anymx")
index 7bb550c8147cdc115e49fd3826945ce25c184f74..f3979815b777901d00657ed5aa46caf50173922b 100644 (file)
@@ -1,9 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 >>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>
 --------> userx@myhost.test.ex <--------
 t1 transport entered
@@ -15,7 +18,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -27,7 +31,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -39,7 +44,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -51,7 +57,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -60,11 +67,13 @@ all IP addresses skipped or deferred at least one address
 updating wait-t1 database
 already listed for 127.0.0.1
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == userx@myhost.test.ex R=r1 T=t1 defer (dd): Connection refused
 LOG: MAIN
   ** userx@myhost.test.ex: retry timeout exceeded
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -73,6 +82,7 @@ writing data block fd=dddd size=sss timeout=0
 LOG: MAIN
   <= <> R=10HmaX-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -81,20 +91,23 @@ LOG: MAIN
   => :blackhole: <CALLER@myhost.test.ex> R=r0
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1236 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1235 -qf
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 >>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>
 --------> userx@myhost.test.ex <--------
 t1 transport entered
@@ -106,7 +119,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -118,7 +132,8 @@ no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (userx@myhost.test.ex)
 hosts_max_try limit reached with this host
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN
   H=127.0.0.1 [127.0.0.1] Connection refused
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
@@ -129,11 +144,13 @@ hosts_max_try_hardlimit reached: behave as if all hosts were tried
 updating wait-t1 database
 already listed for 127.0.0.1
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1240 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == userx@myhost.test.ex R=r1 T=t1 defer (dd): Connection refused
 LOG: MAIN
   ** userx@myhost.test.ex: retry timeout exceeded
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -142,6 +159,7 @@ writing data block fd=dddd size=sss timeout=0
 LOG: MAIN
   <= <> R=10HmaZ-000000005vi-0000 U=EXIMUSER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -150,11 +168,11 @@ LOG: MAIN
   => :blackhole: <CALLER@myhost.test.ex> R=r0
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1240 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1239 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (bounce-message) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1241 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1243 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1235 -qf
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 12280cded82422b65b650757034a74521521447c..e76e994f20cd8d0fdc3ffefca66be8c9670f7758 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing x@mxt2.test.ex
 >>> calling r1 router
->>> mxt2.test.ex in "*"?
->>>  list element: *
->>>  mxt2.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   mxt2.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   mxt2.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    mxt2.test.ex in dnssec_request_domains? yes (matched "*")
 >>> r1 router declined for x@mxt2.test.ex
 >>> no more routers
 >>> ----------- end verify ------------
index 31658bec3abca5d5b3894aba3963fb2f765548a9..bb94dd3596f39ddc38ff900660036271c954ef48 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -16,3 +17,5 @@ Non-recipients:
 recipients_count=1
 **** SPOOL_IN - No additional fields
 body_linecount=1 message_linecount=0
+search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index fa4f709a1ab37615de298634147b25e7aa397ccf..7c664e650cb5e6858f5cb94cd223bc2018c2916e 100644 (file)
@@ -3,7 +3,8 @@ LOG: smtp_connection MAIN
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local-smtp S=sss
 delivering 10HmaX-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Welcome
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250 Hi
index 536804c4d3cf915ca8642255d5f59a3e7e0412ea..3ef6a56dcf03f6dc5d12b4800ace6ee77726a28f 100644 (file)
@@ -1,21 +1,21 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@test.ex
 no   domain  retry record
 no   address retry record
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: TESTSUITE/test-mail/rmbox
@@ -26,8 +26,8 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 added retry item for T:TESTSUITE/test-mail/rmbox:x@test.ex: errno=-22 more_errno=dd flags=0
 LOG: MAIN
   == TESTSUITE/test-mail/rmbox <x@test.ex> R=r1 T=t1 defer (-22): mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/rmbox)
@@ -37,7 +37,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  TESTSUITE/test-mail/rmbox
-locking TESTSUITE/spool/db/retry.lockfile
 retry for T:TESTSUITE/test-mail/rmbox:x@test.ex = *@test.ex -22 0
 failing_interval=ttt message_age=ttt
 Writing retry data for T:TESTSUITE/test-mail/rmbox:x@test.ex
@@ -48,17 +47,16 @@ end of retry processing
 >>>>>>>>>>>>>>>> Exim pid=p1236 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@test.ex
 no   domain  retry record
 no   address retry record
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: TESTSUITE/test-mail/rmbox
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -68,7 +66,6 @@ After routing:
   Remote deliveries:
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
 retry record exists: age=ttt (max 1w)
   time to retry = tttt expired = 0
 retry time not reached: checking ultimate address timeout
@@ -84,7 +81,7 @@ Deferred addresses:
  TESTSUITE/test-mail/rmbox: no retry items
  x@test.ex: no retry items
 end of retry processing
->>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 5df9df63b70aa62f6256d67ad50a8499dfe1af82..f43aa63fe19e9775c960927ed5ba14047c467777 100644 (file)
@@ -1,10 +1,10 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: userx@domain1
 unique = userx@domain1
@@ -31,15 +31,13 @@ After routing:
     userx@domain1
   Failed addresses:
   Deferred addresses:
-locking TESTSUITE/spool/db/retry.lockfile
-locking TESTSUITE/spool/db/wait-smtp.lockfile
 cmdlog: '220:EHLO:250-:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx@domain1 R=smarthost T=smtp H=thisloop.test.ex [127.0.0.1] C="250 OK"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1235 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
-locking TESTSUITE/spool/db/retry.lockfile
+>>>>>>>>>>>>>>>> Exim pid=p1236 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: usery@domain1
 unique = usery@domain1
@@ -52,7 +50,7 @@ After routing:
   Failed addresses:
   Deferred addresses:
     usery@domain1
->>>>>>>>>>>>>>>> Exim pid=p1236 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 3e5fbe13e275903c15eb354e1a51fb7ad6a02f5b..1f7e29bd4ee7a3606664bef035a36dcf81642aa5 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -17,331 +18,331 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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)↩
-       }}}}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}}
+   }}}}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: (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}}
+   }}}}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}}
    ├──────value: 
    ├───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}}
+   }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ├─────result:  ◀skipped▶
    ╰───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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ${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}}
}}(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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: the.local.host.name
  ├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}}
}}(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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 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}}
+  }}(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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local░
  ├───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}}
-       ${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}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───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}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───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}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (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}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaX-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: false
   ╭───scanning: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├───scanning: $received_for}}
   ├──────value: 
   ├───scanning: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░by░the.local.host.name░with░local░(Exim░x.yz)↩
      (envelope-from░<CALLER@test.ex>)↩
      id░10HmaX-000000005vi-0000
(envelope-from░<CALLER@test.ex>)↩
id░10HmaX-000000005vi-0000
 try option acl_not_smtp
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
@@ -350,6 +351,7 @@ LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -361,12 +363,10 @@ try option router_home_directory
 try option set
 try option transport
 try option unseen
-try option unseen
 try option router_home_directory
 try option set
 try option transport
 try option unseen
-try option unseen
 try option multi_domain
 try option multi_domain
 try option max_parallel
@@ -377,6 +377,7 @@ try option return_path
  ├───expanded: $domain
  ╰─────result: domain1.ex
             ╰──(tainted)
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == userx@domain1.ex R=smarthost T=smtp defer (-1): first-pass only routing due to -odqs, queue_smtp_domains or control=queue
 LOG: MAIN
@@ -434,6 +435,7 @@ try option delay_warning_condition
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -487,6 +489,7 @@ try option acl_smtp_helo
 try option acl_smtp_etrn
 try option acl_smtp_vrfy
 try option acl_smtp_expn
+ in chunking_advertise_hosts? no (end of list)
 try option acl_smtp_mail
  ╭considering: domain=$domain/sender_domain=$sender_address_domain
  ├───────text: domain=
@@ -500,6 +503,7 @@ try option acl_smtp_mail
  ├───expanded: domain=$domain/sender_domain=$sender_address_domain
  ╰─────result: domain=/sender_domain=sender.domain
             ╰──(tainted)
+ in "domain=/sender_domain=sender.domain"? no (end of list)
 try option acl_smtp_rcpt
  ╭considering: domain=$domain/sender_domain=$sender_address_domain
  ├───────text: domain=
@@ -514,6 +518,7 @@ try option acl_smtp_rcpt
  ├───expanded: domain=$domain/sender_domain=$sender_address_domain
  ╰─────result: domain=recipient.domain/sender_domain=sender.domain
             ╰──(tainted)
+recipient.domain in "domain=recipient.domain/sender_domain=sender.domain"? no (end of list)
  ╭considering: domain=$domain/sender_domain=$sender_address_domain
  ├───────text: domain=
  ├considering: $domain/sender_domain=$sender_address_domain
@@ -527,7 +532,8 @@ try option acl_smtp_rcpt
  ├───expanded: domain=$domain/sender_domain=$sender_address_domain
  ╰─────result: domain=recipient.domain/sender_domain=sender.domain
             ╰──(tainted)
+sender.domain in "domain=recipient.domain/sender_domain=sender.domain"? no (end of list)
 try option acl_smtp_quit
 LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
->>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 94f313af8201c3d9d4f5cb504f4677c8f15e1cb2..0f7a71a32c2480477e2cca4317b80ca1602e2285 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -18,26 +19,30 @@ local_part=userx domain=alias-eximtesthost
 calling dns router
 dns router called for userx@alias-eximtesthost
   domain = alias-eximtesthost
-alias-eximtesthost in "*"?
- list element: *
- alias-eximtesthost in "*"? yes (matched "*")
-DNS lookup of alias-eximtesthost (MX) using fakens
-DNS lookup of alias-eximtesthost (MX) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (MX) using fakens
-DNS lookup of eximtesthost.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for eximtesthost.test.ex-MX-xxxx, ttl 3000
-alias-eximtesthost (MX resp) DNSSEC
-DNS lookup of alias-eximtesthost (A) using fakens
-DNS lookup of alias-eximtesthost (A) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (A) using fakens
-DNS lookup of eximtesthost.test.ex (A) succeeded
+main lookup for domain
+ check dnssec require list
+  alias-eximtesthost in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  alias-eximtesthost in dnssec_request_domains?
+   list element: *
+   alias-eximtesthost in dnssec_request_domains? yes (matched "*")
+ DNS lookup of alias-eximtesthost (MX) using fakens
+ DNS lookup of alias-eximtesthost (MX) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (MX) using fakens
+ DNS lookup of eximtesthost.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for eximtesthost.test.ex-MX-xxxx, ttl 3000
+ alias-eximtesthost (MX resp) DNSSEC
+ DNS lookup of alias-eximtesthost (A) using fakens
+ DNS lookup of alias-eximtesthost (A) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (A) using fakens
+ DNS lookup of eximtesthost.test.ex (A) succeeded
 local host found for non-MX address
-fully qualified name = alias-eximtesthost.test.ex
-eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
+ fully qualified name = alias-eximtesthost.test.ex
+ eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
 domain changed to alias-eximtesthost.test.ex
 rewriting header lines
 re-routed to userx@alias-eximtesthost.test.ex
@@ -50,21 +55,25 @@ local_part=userx domain=alias-eximtesthost.test.ex
 calling dns router
 dns router called for userx@alias-eximtesthost.test.ex
   domain = alias-eximtesthost.test.ex
-alias-eximtesthost.test.ex in "*"?
- list element: *
- alias-eximtesthost.test.ex in "*"? yes (matched "*")
-DNS lookup of alias-eximtesthost.test.ex (MX) using fakens
-DNS lookup of alias-eximtesthost.test.ex (MX) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (MX): using cached value DNS_NODATA
-DNS lookup of alias-eximtesthost.test.ex (A) using fakens
-DNS lookup of alias-eximtesthost.test.ex (A) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (A) using fakens
-DNS lookup of eximtesthost.test.ex (A) succeeded
+main lookup for domain
+ check dnssec require list
+  alias-eximtesthost.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  alias-eximtesthost.test.ex in dnssec_request_domains?
+   list element: *
+   alias-eximtesthost.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of alias-eximtesthost.test.ex (MX) using fakens
+ DNS lookup of alias-eximtesthost.test.ex (MX) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (MX): using cached value DNS_NODATA
+ DNS lookup of alias-eximtesthost.test.ex (A) using fakens
+ DNS lookup of alias-eximtesthost.test.ex (A) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (A) using fakens
+ DNS lookup of eximtesthost.test.ex (A) succeeded
 local host found for non-MX address
-fully qualified name = alias-eximtesthost.test.ex
-eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
+ fully qualified name = alias-eximtesthost.test.ex
+ eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
 remote host address is the local host: alias-eximtesthost.test.ex: configured to try delivery anyway
 set transport smtp
 queued for smtp transport: local_part = userx
@@ -78,6 +87,7 @@ routed by dns router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -97,26 +107,30 @@ local_part=userx domain=alias-eximtesthost.test.ex
 calling dns router
 dns router called for userx@alias-eximtesthost.test.ex
   domain = alias-eximtesthost.test.ex
-alias-eximtesthost.test.ex in "*"?
- list element: *
- alias-eximtesthost.test.ex in "*"? yes (matched "*")
-DNS lookup of alias-eximtesthost.test.ex (MX) using fakens
-DNS lookup of alias-eximtesthost.test.ex (MX) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (MX) using fakens
-DNS lookup of eximtesthost.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for eximtesthost.test.ex-MX-xxxx, ttl 3000
-alias-eximtesthost.test.ex (MX resp) DNSSEC
-DNS lookup of alias-eximtesthost.test.ex (A) using fakens
-DNS lookup of alias-eximtesthost.test.ex (A) succeeded
-CNAME found: change to eximtesthost.test.ex
-DNS lookup of eximtesthost.test.ex (A) using fakens
-DNS lookup of eximtesthost.test.ex (A) succeeded
+main lookup for domain
+ check dnssec require list
+  alias-eximtesthost.test.ex in dnssec_require_domains? no (option unset)
+ check dnssec request list
+  alias-eximtesthost.test.ex in dnssec_request_domains?
+   list element: *
+   alias-eximtesthost.test.ex in dnssec_request_domains? yes (matched "*")
+ DNS lookup of alias-eximtesthost.test.ex (MX) using fakens
+ DNS lookup of alias-eximtesthost.test.ex (MX) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (MX) using fakens
+ DNS lookup of eximtesthost.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for eximtesthost.test.ex-MX-xxxx, ttl 3000
+ alias-eximtesthost.test.ex (MX resp) DNSSEC
+ DNS lookup of alias-eximtesthost.test.ex (A) using fakens
+ DNS lookup of alias-eximtesthost.test.ex (A) succeeded
+ CNAME found: change to eximtesthost.test.ex
+ DNS lookup of eximtesthost.test.ex (A) using fakens
+ DNS lookup of eximtesthost.test.ex (A) succeeded
 local host found for non-MX address
-fully qualified name = alias-eximtesthost.test.ex
-eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
+ fully qualified name = alias-eximtesthost.test.ex
+ eximtesthost.test.ex ip4.ip4.ip4.ip4 mx=-1 sort=xx 
 remote host address is the local host: alias-eximtesthost.test.ex: configured to try delivery anyway
 set transport smtp
 queued for smtp transport: local_part = userx
index 4e6690afb522535393e544e5bbfb8a074887924e..25bba511d9c4cf527a6dbc33ad001130394adade 100644 (file)
@@ -1,8 +1,8 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@y
@@ -16,10 +16,10 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no retry data available
 added retry item for R:x@y:<CALLER@myhost.test.ex>: errno=-44 more_errno=dd,A flags=0
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:451:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1235 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:x@y:<CALLER@myhost.test.ex> from subprocess
   added retry item
 LOG: MAIN
@@ -29,7 +29,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  x@y
-locking TESTSUITE/spool/db/retry.lockfile
 retry for R:x@y:<CALLER@myhost.test.ex> = * 0 0
 failing_interval=ttt message_age=ttt
 Writing retry data for R:x@y:<CALLER@myhost.test.ex>
@@ -38,10 +37,10 @@ Writing retry data for R:x@y:<CALLER@myhost.test.ex>
 end of retry processing
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-locking TESTSUITE/spool/db/retry.lockfile
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Considering: x@y
 no   domain  retry record
@@ -57,13 +56,12 @@ After routing:
   Failed addresses:
   Deferred addresses:
 checking retry status of 127.0.0.1
-locking TESTSUITE/spool/db/retry.lockfile
 no host retry record
 no message retry record
 added retry item for R:x@y:<CALLER@myhost.test.ex>: errno=dd more_errno=dd,A flags=1
 added retry item for R:x@y: errno=dd more_errno=dd,A flags=1
-locking TESTSUITE/spool/db/wait-smtp.lockfile
 cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 reading retry information for R:x@y from subprocess
   existing delete item dropped
   added delete item
@@ -84,7 +82,6 @@ LOG: MAIN
 Processing retry items
 Succeeded addresses:
  x@y
-locking TESTSUITE/spool/db/retry.lockfile
 deleted retry information for R:x@y:<CALLER@myhost.test.ex>
 deleted retry information for R:x@y
 deleted retry information for R:y
@@ -93,4 +90,4 @@ Deferred addresses:
 end of retry processing
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index e20d7cc932190ed5161e640a2c5d4f1db99e2784..8ce12a2e5c417fd9bc6af254a3e851aec1e2e0a4 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -17,7 +18,7 @@ routing joe-real@testexim.test.ex
 --------> router1 router <--------
 local_part=joe-real domain=testexim.test.ex
 checking local_parts
-joe-real in "+aliases"?
+joe-real in local_parts?
  list element: +aliases
   start sublist aliases
    joe-real in "joe:sam:tom"?
@@ -26,20 +27,20 @@ joe-real in "+aliases"?
    ╎list element: tom
    joe-real in "joe:sam:tom"? no (end of list)
   end sublist aliases
-joe-real in "+aliases"? no (end of list)
+joe-real in local_parts? no (end of list)
 router1 router skipped: local_parts mismatch
 --------> router2 router <--------
 local_part=joe-real domain=testexim.test.ex
 stripped suffix -real
 checking local_parts
-joe in "+aliases"?
+joe in local_parts?
  list element: +aliases
   start sublist aliases
    joe in "joe:sam:tom"?
    ╎list element: joe
    ╎joe in "joe:sam:tom"? yes (matched "joe")
   end sublist aliases
- joe in "+aliases"? yes (matched "+aliases")
+ joe in local_parts? yes (matched "+aliases")
 calling router2 router
 router2 router called for joe-real@testexim.test.ex
   domain = testexim.test.ex
index c1bc66ab62f35186923eefd1eceaa7f6f5b18eab..ad89f09be62667491d54e23752c01a75b089e967 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index d804df43b8690e3be33246fa6358989201ca4291..67739d4281c68aa43a3dd36b27a1303d60e33bc5 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -12,7 +14,8 @@ Attempting full verification using callout
 callout cache: no domain record found for localhost
 callout cache: no address record found for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -29,15 +32,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for localhost:
   result=1 postmaster=0 random=0
 wrote positive callout cache address record for ok@localhost
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -46,15 +59,25 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: found address record for ok@localhost
 callout cache: address record is positive
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -63,7 +86,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: address record expired for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  failed: Connection refused
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+ failed: Connection refused
 LOG: MAIN REJECT
   H=(test) [V4NET.0.0.1] U=root sender verify defer for <ok@localhost>: Could not complete sender verify callout: 127.0.0.1 [127.0.0.1] : Connection refused
 created log directory TESTSUITE/spool/log
@@ -73,11 +97,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying bad@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -86,7 +112,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: no address record found for bad@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -111,11 +138,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying bad@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -132,11 +161,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -145,7 +176,8 @@ Attempting full verification using callout
 callout cache: found domain record for localhost
 callout cache: address record expired for ok@localhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -169,11 +201,13 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@localhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -189,11 +223,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -202,7 +239,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost
 callout cache: no address record found for ok@otherhost
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -234,11 +272,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1241 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -254,11 +295,14 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1242 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost2
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -267,7 +311,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost2
 callout cache: no address record found for ok@otherhost2
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -291,15 +336,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:RSET:250:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost2:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost2
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1243 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost2
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -309,15 +364,26 @@ callout cache: found domain record for otherhost2
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: found address record for ok@otherhost2
 callout cache: address record is positive
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1244 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost3
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -326,7 +392,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost3
 callout cache: no address record found for ok@otherhost3
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -342,17 +409,27 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
 cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost3:
   result=1 postmaster=0 random=1
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1245 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying otherok@otherhost3
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -360,17 +437,28 @@ Considering otherok@otherhost3
 Attempting full verification using callout
 callout cache: found domain record for otherhost3
 callout cache: domain accepts random addresses
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1246 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost4
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -379,7 +467,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost4
 callout cache: no address record found for ok@otherhost4
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -395,17 +484,27 @@ Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
 cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost4:
   result=1 postmaster=0 random=1
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1247 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost4
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -413,17 +512,27 @@ Considering ok@otherhost4
 Attempting full verification using callout
 callout cache: found domain record for otherhost4
 callout cache: domain accepts random addresses
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: MAIN
   (random)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1248 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost41
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -432,7 +541,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost41
 callout cache: no address record found for ok@otherhost41
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -462,15 +572,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:550:RSET:250:MAIL|:RCPT:250:250:RSET:250:M
 wrote callout cache domain record for otherhost41:
   result=1 postmaster=1 random=2
 wrote positive callout cache address record for ok@otherhost41
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1249 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost41
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -481,15 +601,23 @@ callout cache: domain rejects random addresses
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: found address record for ok@otherhost41
 callout cache: address record is positive
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1250 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost21
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -498,7 +626,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost21
 callout cache: no address record found for ok@otherhost21
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -522,15 +651,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:RSET:250:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost21:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost21
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1251 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok2@otherhost21
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -540,7 +679,8 @@ callout cache: found domain record for otherhost21
 callout cache: domain accepts RCPT TO:<postmaster@domain>
 callout cache: no address record found for ok2@otherhost21
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -557,15 +697,26 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost21:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok2@otherhost21
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1252 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -574,7 +725,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost31
 callout cache: no address record found for ok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -597,15 +749,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:550:RSET:250:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for ok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1253 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -615,7 +777,8 @@ callout cache: found domain record for otherhost31
 callout cache: domain rejects random addresses
 callout cache: no address record found for okok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -632,15 +795,25 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for okok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1254 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okokok@otherhost31
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -649,7 +822,8 @@ Attempting full verification using callout
 callout cache: domain record expired for otherhost31
 callout cache: no address record found for okokok@otherhost31
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -672,15 +846,27 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:550:RSET:250:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost31:
   result=1 postmaster=0 random=2
 wrote positive callout cache address record for okokok@otherhost31
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1255 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okok@otherhost51
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -689,7 +875,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost51
 callout cache: no address record found for okok@otherhost51
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -712,11 +899,18 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1256 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying okokok@otherhost52
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -725,7 +919,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost52
 callout cache: no address record found for okokok@otherhost52
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -749,15 +944,29 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:RSET:250:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for otherhost52:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for okokok@otherhost52
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1257 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 verifying Reply-To: header address abcd@x.y.z
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying abcd@x.y.z
@@ -767,7 +976,8 @@ Attempting full verification using callout
 callout cache: no domain record found for x.y.z
 callout cache: no address record found for abcd@x.y.z/<somesender@a.domain>
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -784,17 +994,30 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:QUIT:250'
 wrote callout cache domain record for x.y.z:
   result=1 postmaster=0 random=0
 wrote positive callout cache address record for abcd@x.y.z/<somesender@a.domain>
+host in "V4NET.0.0.8"? no (end of list)
 LOG: MAIN
   <= ok7@otherhost53 H=(test) [V4NET.0.0.7] U=root P=smtp S=sss
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1258 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.7"? no (end of list)
 verifying Reply-To: header address abcd@x.y.z
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying abcd@x.y.z
@@ -804,7 +1027,8 @@ Attempting full verification using callout
 callout cache: found domain record for x.y.z
 callout cache: no address record found for abcd@x.y.z
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -825,11 +1049,19 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1259 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying ok@otherhost9
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -838,7 +1070,8 @@ Attempting full verification using callout
 callout cache: no domain record found for otherhost9
 callout cache: no address record found for ok@otherhost9
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
@@ -864,15 +1097,26 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT:250:250:RSET:250:MAIL|:RCPT:250:550:RCPT:250:Q
 wrote callout cache domain record for otherhost9:
   result=1 postmaster=1 random=0
 wrote positive callout cache address record for ok@otherhost9
+host in "V4NET.0.0.10"? no (end of list)
+host in "V4NET.0.0.10"? no (end of list)
 LOG: smtp_connection MAIN
   SMTP connection from root D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1260 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from root
+test in helo_lookup_domains? no (end of list)
+host in "V4NET.0.0.1"? no (end of list)
+host in "V4NET.0.0.2"? no (end of list)
+host in "V4NET.0.0.3"? no (end of list)
+host in "V4NET.0.0.4"? no (end of list)
+host in "V4NET.0.0.5"? no (end of list)
+host in "V4NET.0.0.6"? no (end of list)
+host in "V4NET.0.0.9"? no (end of list)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 Verifying z@test.ex
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -881,7 +1125,8 @@ Attempting full verification using callout
 callout cache: no domain record found for test.ex
 callout cache: no address record found for z@test.ex/<postmaster@myhost.test.ex>
 interface=NULL port=PORT_S
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-Yeah mate
index 32ce9e762a5b41d5ed6d7f456ad7ac618d010965..a15f0f04855ba9006d159b0f81e66ad531676298 100644 (file)
@@ -15,9 +15,9 @@
 >>> check verify = sender=userx@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling goodroute router
 >>> routed by goodroute router
 >>> ----------- end verify ------------
@@ -44,9 +44,9 @@ LOG: 10HmaX-000000005vi-0000 <= userx@test.ex H=(test) [127.0.0.1] P=smtp S=sss
 >>> check verify = sender=fail@test.ex
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing fail@test.ex
->>> fail in "userx"?
+>>> fail in local_parts?
 >>>  list element: userx
->>> fail in "userx"? no (end of list)
+>>> fail in local_parts? no (end of list)
 >>> no more routers
 >>> ----------- end verify ------------
 >>> require: condition test failed in ACL "check_recipient"
@@ -71,9 +71,9 @@ LOG: H=(test) [127.0.0.1] F=<userx@test.ex> rejected RCPT <userx@test.ex>: Sende
 >>>              = sender=userx@test.ex/defer_ok
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling goodroute router
 >>> routed by goodroute router
 >>> ----------- end verify ------------
index e1f5d4f2982aa1e200893f9149944bdceb2d7056..0be237c7e9b271fe964d72aa6f0d7e3e33be759a 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing should_log@delay1500.test.ex
 >>> calling all router
->>> delay1500.test.ex in "*"?
->>>  list element: *
->>>  delay1500.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   delay1500.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   delay1500.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    delay1500.test.ex in dnssec_request_domains? yes (matched "*")
 LOG: Long A lookup for 'delay1500.test.ex': ssss msec
 >>> local host found for non-MX address
 >>> routed by all router
@@ -41,9 +44,12 @@ LOG: Long A lookup for 'delay1500.test.ex': ssss msec
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing should_not_log@delay500.test.ex
 >>> calling all router
->>> delay500.test.ex in "*"?
->>>  list element: *
->>>  delay500.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   delay500.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   delay500.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    delay500.test.ex in dnssec_request_domains? yes (matched "*")
 >>> local host found for non-MX address
 >>> routed by all router
 >>> ----------- end verify ------------
index 2ea697f699b536534bf33c6d02cb85fba29fb43f..6a801a29983183e525ee07c441161817aebd6847 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -19,6 +20,7 @@ p1235 LOG: smtp_connection MAIN
 p1235   SMTP connection from [127.0.0.1] (TCP/IP connection count = 1)
 p1235 Process p1235 is handling incoming connection from [127.0.0.1]
 p1235 Process p1235 is ready for new message
+p1235 test in helo_lookup_domains? no (end of list)
 p1235 using ACL "delay4_accept"
 p1235 processing "accept" (TESTSUITE/test-config 24)
 p1235 check delay = 4s
@@ -39,6 +41,7 @@ p1236 LOG: smtp_connection MAIN
 p1236   SMTP connection from [127.0.0.1] (TCP/IP connection count = 1)
 p1236 Process p1236 is handling incoming connection from [127.0.0.1]
 p1236 Process p1236 is ready for new message
+p1236 test in helo_lookup_domains? no (end of list)
 p1236 using ACL "delay4_accept"
 p1236 processing "accept" (TESTSUITE/test-config 24)
 p1236 check delay = 4s
index 8b59ca9a690da51513e141c20f42f8a632a2cce3..147ad3067549686f61ded1fcaceb9119ade6f6b6 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -73,6 +74,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
index bb517b859ae02b64fadb8149b416e92fe6379583..3786f716814883ad937a56dd5500ad95744b2fad 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -17,7 +19,8 @@ getting address for 127.0.0.1
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (tempreject@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -58,16 +61,19 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:300:.:QUIT+:451:221'
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
 all IP addresses skipped or deferred at least one address
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == tempreject@test.ex R=client T=send_to_server defer (-46) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 451 Service not available
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -83,7 +89,8 @@ no host retry record
 no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmbA-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (permreject@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -120,20 +127,23 @@ ok=0 send_quit=0 send_rset=1 continue_more=0 yield=0 first_address is NULL
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:300:.:QUIT+:550:221'
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** permreject@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 550 content rejected
 LOG: MAIN
   permreject@test.ex: error ignored
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -149,7 +159,8 @@ no host retry record
 no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmbB-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (permreject@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -190,7 +201,8 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:300:.:QUIT+'
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
 all IP addresses skipped or deferred at least one address
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1242 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == permreject@test.ex R=client T=send_to_server defer (-18) H=127.0.0.1 [127.0.0.1]: Remote host closed connection in response to end of data
->>>>>>>>>>>>>>>> Exim pid=p1239 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 5424c5664039923443bc1a41bdd02928d7b6a04a..e033ceae2997c69dae6072c211ea59118c439091 100644 (file)
@@ -25,6 +25,7 @@
 01:01:01 p1237  LOG: smtp_connection MAIN
 01:01:01 p1237    SMTP connection from (test.ex) [127.0.0.1] D=qqs closed by QUIT
 01:01:01 p1239  Exim version x.yz uid=EXIM_UID gid=EXIM_GID pid=p1239 D=fff9ffff
+01:01:01 p1239  Hints DB:
 01:01:01 p1239  macros_trusted overridden to true by whitelisting
 01:01:01 p1239  changed uid/gid: forcing real = effective
 01:01:01 p1239    uid=uuuu gid=EXIM_GID pid=p1239
@@ -52,8 +53,6 @@
 01:01:01 p1239  DSN: set orcpt:   flags: 0x0
 01:01:01 p1239  Delivery address list:
 01:01:01 p1239    dest@test.ex 
-01:01:01 p1239   locking TESTSUITE/spool/db/retry.lockfile
-01:01:01 p1239   locked  TESTSUITE/spool/db/retry.lockfile
 01:01:01 p1239   EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
 01:01:01 p1239   returned from EXIM_DBOPEN: (nil)
 01:01:01 p1239   failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
 01:01:01 p1241  DSN: set orcpt:   flags: 0x0
 01:01:01 p1241  Delivery address list:
 01:01:01 p1241    dest2@test.ex 
-01:01:01 p1241   locking TESTSUITE/spool/db/retry.lockfile
-01:01:01 p1241   locked  TESTSUITE/spool/db/retry.lockfile
 01:01:01 p1241   EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
 01:01:01 p1241   returned from EXIM_DBOPEN: (nil)
 01:01:01 p1241   failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
index aef9cabb0940625eb91cc3439ef093d38b3208ca..eccfd268e8157a2cb9e2b4fdd0b3141e3ba97508 100644 (file)
 01:01:01 p1235   ├───expanded: /$local_part
 01:01:01 p1235   ╰─────result: /dest3
 01:01:01 p1235              ╰──(tainted)
-01:01:01 p1235  dest3 in "/dest3"?
+01:01:01 p1235  dest3 in local_parts?
 01:01:01 p1235   list element: /dest3
 01:01:01 p1235  LOG: MAIN PANIC
 01:01:01 p1235    Tainted filename '/dest3'
 01:01:01 p1235  LOG: MAIN PANIC DIE
-01:01:01 p1235    failed to open /dest3 when checking "/$local_part": Permission denied (euid=uuuu egid=EXIM_GID)
+01:01:01 p1235    failed to open /dest3 when checking local_parts: Permission denied (euid=uuuu egid=EXIM_GID)
 01:01:01 p1235   search_tidyup called
 01:01:01 p1235  >>>>>>>>>>>>>>>> Exim pid=p1235 (daemon-accept-delivery) terminating with rc=1 >>>>>>>>>>>>>>>>
 
index c19620b80909813aad95ef795e02b22c31915dc3..d7fac294a91bff9ebf45c989691e044e970c7a0c 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -49,6 +50,7 @@ p1235  ├──────value: Tue,░2░Mar░1999░09:44:33░+0000
 p1235  ├───expanded: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
 p1235  ╰─────result: myhost.test.ex░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
 p1235 Process p1235 is ready for new message
+p1235 test.ex in helo_lookup_domains? no (end of list)
 p1235 try option acl_smtp_helo
 p1235 try option acl_smtp_mail
 p1235 try option acl_smtp_rcpt
@@ -62,6 +64,7 @@ p1235  ├considering: /exim_daemon_notify
 p1235  ├───────text: /exim_daemon_notify
 p1235  ├───expanded: $spool_directory/exim_daemon_notify
 p1235  ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235 test.ex in "^nomatch_list"? no (end of list)
 p1235  ╭considering: ${if░match░{a_random_string}░{static_RE}}
 p1235   ╭considering: a_random_string}░{static_RE}}
 p1235   ├───────text: a_random_string
@@ -143,352 +146,350 @@ p1235  ├───expanded: ${tod_full}
 p1235  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 p1235 try option received_header_text
 p1235  ╭considering: Received:░${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235  }}}}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↩
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├───────text: Received:░
 p1235  ├considering: ${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235  }}}}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↩
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──condition: def:sender_rcvhost
 p1235  ├─────result: true
 p1235   ╭considering: from░$sender_rcvhost↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: from░
 p1235   ├considering: $sender_rcvhost↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──────value: [127.0.0.1]░(helo=test.ex)
 p1235              ╰──(tainted)
 p1235   ├considering: ↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: ↩
-p1235          
+p1235   
 p1235   ├considering: }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───expanded: from░$sender_rcvhost↩
-p1235          
+p1235   
 p1235   ╰─────result: from░[127.0.0.1]░(helo=test.ex)↩
-p1235          
+p1235   
 p1235              ╰──(tainted)
 p1235   ╭───scanning: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──condition: def:sender_ident
 p1235   ├─────result: false
 p1235    ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───────text: from░
 p1235    ├───scanning: ${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ╎╭───scanning: $sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235    ╎   }}}}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↩
-p1235    ╎   }}(Exim░$version_number)↩
-p1235    ╎   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235    ╎   }}id░$message_exim_id${if░def:received_for░{↩
-p1235    ╎   for░$received_for}}
+p1235    ╎}}}}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↩
+p1235    ╎}}(Exim░$version_number)↩
+p1235    ╎${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    ╎}}id░$message_exim_id${if░def:received_for░{↩
+p1235    ╎for░$received_for}}
 p1235    ╎├──────value: 
 p1235    ╎├───scanning: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235    ╎   }}}}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↩
-p1235    ╎   }}(Exim░$version_number)↩
-p1235    ╎   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235    ╎   }}id░$message_exim_id${if░def:received_for░{↩
-p1235    ╎   for░$received_for}}
+p1235    ╎}}}}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↩
+p1235    ╎}}(Exim░$version_number)↩
+p1235    ╎${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    ╎}}id░$message_exim_id${if░def:received_for░{↩
+p1235    ╎for░$received_for}}
 p1235    ╎├───expanded: $sender_ident
 p1235    ╎├─────result:  ◀skipped▶
 p1235    ╎╰───skipping: result is not used
 p1235    ├───scanning: ░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───────text: ░
 p1235    ├───scanning: }}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───expanded: from░${quote_local_part:$sender_ident}░
 p1235    ├─────result:  ◀skipped▶
 p1235    ╰───skipping: result is not used
 p1235   ├───item-res: 
 p1235   ├───scanning: ${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}}}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↩
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──condition: def:sender_helo_name
 p1235   ├─────result: false
 p1235    ╭───scanning: (helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───────text: (helo=
 p1235    ├───scanning: $sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├──────value: 
 p1235    ├───scanning: )↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}}}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↩
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───────text: )↩
-p1235          
+p1235    
 p1235    ├───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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235    }}(Exim░$version_number)↩
+p1235    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235    }}id░$message_exim_id${if░def:received_for░{↩
+p1235    for░$received_for}}
 p1235    ├───expanded: (helo=$sender_helo_name)↩
-p1235          
+p1235    
 p1235    ├─────result:  ◀skipped▶
 p1235    ╰───skipping: result is not used
 p1235   ├───item-res: 
 p1235   ├───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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}
+p1235   }}
 p1235   ├─────result:  ◀skipped▶
 p1235   ╰───skipping: result is not used
 p1235  ├───item-res: from░[127.0.0.1]░(helo=test.ex)↩
-p1235          
+p1235  
 p1235             ╰──(tainted)
 p1235  ├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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├───────text: by░
 p1235  ├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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──────value: myhost.test.ex
 p1235  ├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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├───────text: ░
 p1235  ├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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──condition: def:received_protocol
 p1235  ├─────result: true
 p1235   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: with░
 p1235   ├considering: $received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──────value: smtp
 p1235   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: ░
 p1235   ├considering: }}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───expanded: with░$received_protocol░
 p1235   ╰─────result: with░smtp░
 p1235  ├───item-res: with░smtp░
 p1235             ╰──(tainted)
 p1235  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───expanded: ░($tls_in_ver)
 p1235   ├─────result:  ◀skipped▶
 p1235   ╰───skipping: result is not used
 p1235  ├───item-res: 
 p1235             ╰──(tainted)
 p1235  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──condition: def:tls_in_cipher_std
 p1235  ├─────result: false
 p1235   ╭───scanning: ░tls░$tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: ░tls░
 p1235   ├───scanning: $tls_in_cipher_std↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──────value: 
 p1235   ├───scanning: ↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}(Exim░$version_number)↩
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: ↩
-p1235          
+p1235   
 p1235   ├───scanning: }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───expanded: ░tls░$tls_in_cipher_std↩
-p1235          
+p1235   
 p1235   ├─────result:  ◀skipped▶
 p1235   ╰───skipping: result is not used
 p1235  ├───item-res: 
 p1235             ╰──(tainted)
 p1235  ├considering: (Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├───────text: (Exim░
 p1235  ├considering: $version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──────value: x.yz
 p1235  ├considering: )↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├───────text: )↩
-p1235          
+p1235  
 p1235  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ├──condition: def:sender_address
 p1235  ├─────result: true
 p1235   ╭considering: (envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: (envelope-from░<
 p1235   ├considering: $sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├──────value: CALLER@test.ex
 p1235              ╰──(tainted)
 p1235   ├considering: >)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   }}id░$message_exim_id${if░def:received_for░{↩
+p1235   for░$received_for}}
 p1235   ├───────text: >)↩
-p1235          
+p1235   
 p1235   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235   for░$received_for}}
 p1235   ├───expanded: (envelope-from░<$sender_address>)↩
-p1235          
+p1235   
 p1235   ╰─────result: (envelope-from░<CALLER@test.ex>)↩
-p1235          
+p1235   
 p1235              ╰──(tainted)
 p1235  ├───item-res: (envelope-from░<CALLER@test.ex>)↩
-p1235          
+p1235  
 p1235             ╰──(tainted)
 p1235  ├considering: id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  for░$received_for}}
 p1235  ├───────text: id░
 p1235  ├considering: $message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  for░$received_for}}
 p1235  ├──────value: 10HmaX-000000005vi-0000
 p1235  ├considering: ${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  for░$received_for}}
 p1235  ├──condition: def:received_for
 p1235  ├─────result: true
 p1235   ╭considering: ↩
-p1235          for░$received_for}}
+p1235   for░$received_for}}
 p1235   ├───────text: ↩
-p1235          for░
+p1235   for░
 p1235   ├considering: $received_for}}
 p1235   ├──────value: dest_1@test.ex
 p1235              ╰──(tainted)
 p1235   ├considering: }}
 p1235   ├───expanded: ↩
-p1235          for░$received_for
+p1235   for░$received_for
 p1235   ╰─────result: ↩
-p1235          for░dest_1@test.ex
+p1235   for░dest_1@test.ex
 p1235              ╰──(tainted)
 p1235  ├───item-res: ↩
-p1235          for░dest_1@test.ex
+p1235  for░dest_1@test.ex
 p1235             ╰──(tainted)
 p1235  ├───expanded: Received:░${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1235          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1235          }}}}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↩
-p1235          }}(Exim░$version_number)↩
-p1235          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1235          }}id░$message_exim_id${if░def:received_for░{↩
-p1235          for░$received_for}}
+p1235  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1235  }}}}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↩
+p1235  }}(Exim░$version_number)↩
+p1235  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1235  }}id░$message_exim_id${if░def:received_for░{↩
+p1235  for░$received_for}}
 p1235  ╰─────result: Received:░from░[127.0.0.1]░(helo=test.ex)↩
-p1235          by░myhost.test.ex░with░smtp░(Exim░x.yz)↩
-p1235          (envelope-from░<CALLER@test.ex>)↩
-p1235          id░10HmaX-000000005vi-0000↩
-p1235          for░dest_1@test.ex
+p1235  by░myhost.test.ex░with░smtp░(Exim░x.yz)↩
+p1235  (envelope-from░<CALLER@test.ex>)↩
+p1235  id░10HmaX-000000005vi-0000↩
+p1235  for░dest_1@test.ex
 p1235             ╰──(tainted)
-p1235 try option acl_smtp_dkim
-p1235 try option acl_smtp_mime
 p1235 try option acl_smtp_data
 p1235  ╭considering: ${tod_full}
 p1235  ├───expanded: ${tod_full}
@@ -544,10 +545,12 @@ p1236  ├──────value: Tue,░2░Mar░1999░09:44:33░+0000
 p1236  ├───expanded: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
 p1236  ╰─────result: myhost.test.ex░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
 p1236 Process p1236 is ready for new message
+p1236 test.ex in helo_lookup_domains? no (end of list)
 p1236 try option acl_smtp_helo
 p1236 try option acl_smtp_mail
 p1236 try option acl_smtp_rcpt
 p1236 compiled caseless RE '^nomatch_list' found in local cache
+p1236 test.ex in "^nomatch_list"? no (end of list)
 p1236  ╭considering: ${if░match░{a_random_string}░{static_RE}}
 p1236   ╭considering: a_random_string}░{static_RE}}
 p1236   ├───────text: a_random_string
@@ -609,352 +612,350 @@ p1236  ├───expanded: ${tod_full}
 p1236  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 p1236 try option received_header_text
 p1236  ╭considering: Received:░${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236  }}}}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↩
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├───────text: Received:░
 p1236  ├considering: ${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236  }}}}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↩
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──condition: def:sender_rcvhost
 p1236  ├─────result: true
 p1236   ╭considering: from░$sender_rcvhost↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: from░
 p1236   ├considering: $sender_rcvhost↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──────value: [127.0.0.1]░(helo=test.ex)
 p1236              ╰──(tainted)
 p1236   ├considering: ↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: ↩
-p1236          
+p1236   
 p1236   ├considering: }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───expanded: from░$sender_rcvhost↩
-p1236          
+p1236   
 p1236   ╰─────result: from░[127.0.0.1]░(helo=test.ex)↩
-p1236          
+p1236   
 p1236              ╰──(tainted)
 p1236   ╭───scanning: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──condition: def:sender_ident
 p1236   ├─────result: false
 p1236    ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───────text: from░
 p1236    ├───scanning: ${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ╎╭───scanning: $sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236    ╎   }}}}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↩
-p1236    ╎   }}(Exim░$version_number)↩
-p1236    ╎   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236    ╎   }}id░$message_exim_id${if░def:received_for░{↩
-p1236    ╎   for░$received_for}}
+p1236    ╎}}}}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↩
+p1236    ╎}}(Exim░$version_number)↩
+p1236    ╎${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    ╎}}id░$message_exim_id${if░def:received_for░{↩
+p1236    ╎for░$received_for}}
 p1236    ╎├──────value: 
 p1236    ╎├───scanning: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236    ╎   }}}}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↩
-p1236    ╎   }}(Exim░$version_number)↩
-p1236    ╎   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236    ╎   }}id░$message_exim_id${if░def:received_for░{↩
-p1236    ╎   for░$received_for}}
+p1236    ╎}}}}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↩
+p1236    ╎}}(Exim░$version_number)↩
+p1236    ╎${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    ╎}}id░$message_exim_id${if░def:received_for░{↩
+p1236    ╎for░$received_for}}
 p1236    ╎├───expanded: $sender_ident
 p1236    ╎├─────result:  ◀skipped▶
 p1236    ╎╰───skipping: result is not used
 p1236    ├───scanning: ░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───────text: ░
 p1236    ├───scanning: }}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───expanded: from░${quote_local_part:$sender_ident}░
 p1236    ├─────result:  ◀skipped▶
 p1236    ╰───skipping: result is not used
 p1236   ├───item-res: 
 p1236   ├───scanning: ${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}}}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↩
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──condition: def:sender_helo_name
 p1236   ├─────result: false
 p1236    ╭───scanning: (helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───────text: (helo=
 p1236    ├───scanning: $sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├──────value: 
 p1236    ├───scanning: )↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}}}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↩
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───────text: )↩
-p1236          
+p1236    
 p1236    ├───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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236    }}(Exim░$version_number)↩
+p1236    ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236    }}id░$message_exim_id${if░def:received_for░{↩
+p1236    for░$received_for}}
 p1236    ├───expanded: (helo=$sender_helo_name)↩
-p1236          
+p1236    
 p1236    ├─────result:  ◀skipped▶
 p1236    ╰───skipping: result is not used
 p1236   ├───item-res: 
 p1236   ├───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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}
+p1236   }}
 p1236   ├─────result:  ◀skipped▶
 p1236   ╰───skipping: result is not used
 p1236  ├───item-res: from░[127.0.0.1]░(helo=test.ex)↩
-p1236          
+p1236  
 p1236             ╰──(tainted)
 p1236  ├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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├───────text: by░
 p1236  ├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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──────value: myhost.test.ex
 p1236  ├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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├───────text: ░
 p1236  ├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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──condition: def:received_protocol
 p1236  ├─────result: true
 p1236   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: with░
 p1236   ├considering: $received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──────value: smtp
 p1236   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: ░
 p1236   ├considering: }}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───expanded: with░$received_protocol░
 p1236   ╰─────result: with░smtp░
 p1236  ├───item-res: with░smtp░
 p1236             ╰──(tainted)
 p1236  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───expanded: ░($tls_in_ver)
 p1236   ├─────result:  ◀skipped▶
 p1236   ╰───skipping: result is not used
 p1236  ├───item-res: 
 p1236             ╰──(tainted)
 p1236  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──condition: def:tls_in_cipher_std
 p1236  ├─────result: false
 p1236   ╭───scanning: ░tls░$tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: ░tls░
 p1236   ├───scanning: $tls_in_cipher_std↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──────value: 
 p1236   ├───scanning: ↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}(Exim░$version_number)↩
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: ↩
-p1236          
+p1236   
 p1236   ├───scanning: }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───expanded: ░tls░$tls_in_cipher_std↩
-p1236          
+p1236   
 p1236   ├─────result:  ◀skipped▶
 p1236   ╰───skipping: result is not used
 p1236  ├───item-res: 
 p1236             ╰──(tainted)
 p1236  ├considering: (Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├───────text: (Exim░
 p1236  ├considering: $version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──────value: x.yz
 p1236  ├considering: )↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├───────text: )↩
-p1236          
+p1236  
 p1236  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ├──condition: def:sender_address
 p1236  ├─────result: true
 p1236   ╭considering: (envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: (envelope-from░<
 p1236   ├considering: $sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├──────value: CALLER@test.ex
 p1236              ╰──(tainted)
 p1236   ├considering: >)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   }}id░$message_exim_id${if░def:received_for░{↩
+p1236   for░$received_for}}
 p1236   ├───────text: >)↩
-p1236          
+p1236   
 p1236   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236   for░$received_for}}
 p1236   ├───expanded: (envelope-from░<$sender_address>)↩
-p1236          
+p1236   
 p1236   ╰─────result: (envelope-from░<CALLER@test.ex>)↩
-p1236          
+p1236   
 p1236              ╰──(tainted)
 p1236  ├───item-res: (envelope-from░<CALLER@test.ex>)↩
-p1236          
+p1236  
 p1236             ╰──(tainted)
 p1236  ├considering: id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  for░$received_for}}
 p1236  ├───────text: id░
 p1236  ├considering: $message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  for░$received_for}}
 p1236  ├──────value: 10HmaY-000000005vi-0000
 p1236  ├considering: ${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  for░$received_for}}
 p1236  ├──condition: def:received_for
 p1236  ├─────result: true
 p1236   ╭considering: ↩
-p1236          for░$received_for}}
+p1236   for░$received_for}}
 p1236   ├───────text: ↩
-p1236          for░
+p1236   for░
 p1236   ├considering: $received_for}}
 p1236   ├──────value: dest_2@test.ex
 p1236              ╰──(tainted)
 p1236   ├considering: }}
 p1236   ├───expanded: ↩
-p1236          for░$received_for
+p1236   for░$received_for
 p1236   ╰─────result: ↩
-p1236          for░dest_2@test.ex
+p1236   for░dest_2@test.ex
 p1236              ╰──(tainted)
 p1236  ├───item-res: ↩
-p1236          for░dest_2@test.ex
+p1236  for░dest_2@test.ex
 p1236             ╰──(tainted)
 p1236  ├───expanded: Received:░${if░def:sender_rcvhost░{from░$sender_rcvhost↩
-p1236          }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-p1236          }}}}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↩
-p1236          }}(Exim░$version_number)↩
-p1236          ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-p1236          }}id░$message_exim_id${if░def:received_for░{↩
-p1236          for░$received_for}}
+p1236  }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
+p1236  }}}}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↩
+p1236  }}(Exim░$version_number)↩
+p1236  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+p1236  }}id░$message_exim_id${if░def:received_for░{↩
+p1236  for░$received_for}}
 p1236  ╰─────result: Received:░from░[127.0.0.1]░(helo=test.ex)↩
-p1236          by░myhost.test.ex░with░smtp░(Exim░x.yz)↩
-p1236          (envelope-from░<CALLER@test.ex>)↩
-p1236          id░10HmaY-000000005vi-0000↩
-p1236          for░dest_2@test.ex
+p1236  by░myhost.test.ex░with░smtp░(Exim░x.yz)↩
+p1236  (envelope-from░<CALLER@test.ex>)↩
+p1236  id░10HmaY-000000005vi-0000↩
+p1236  for░dest_2@test.ex
 p1236             ╰──(tainted)
-p1236 try option acl_smtp_dkim
-p1236 try option acl_smtp_mime
 p1236 try option acl_smtp_data
 p1236  ╭considering: ${tod_full}
 p1236  ├───expanded: ${tod_full}
index 730dc2c0a98b677ee331b98470fce272de33d661..3ba13b3b08c65836aef5ac6f8aebef98b488f3ef 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -8,6 +9,7 @@ created log directory TESTSUITE/spool/log
 LOG: MAIN
   <= fred@myhost.test.ex U=root P=local-smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -21,7 +23,8 @@ getting address for 127.0.0.1
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaX-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (good@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -57,6 +60,7 @@ ok=1 send_quit=0 send_rset=0 continue_more=0 yield=0 first_address is NULL
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250:250:221'
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1236 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => good@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L K C="250 OK chunked message data"
 LOG: MAIN
@@ -66,6 +70,7 @@ LOG: smtp_connection MAIN
   SMTP connection from root D=q.qqqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -74,6 +79,7 @@ LOG: smtp_connection MAIN
 LOG: MAIN
   <= fred@myhost.test.ex U=root P=local-smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -87,7 +93,8 @@ getting address for 127.0.0.1
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaY-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (nopipe@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -122,15 +129,17 @@ cmd buf flush ddd bytes (more expected)
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL:250:RCPT:250:BDAT+:250:QUIT+:221'
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1239 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => nopipe@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] K C="250 OK chunked message data"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: smtp_connection MAIN
   SMTP connection from root D=q.qqqs closed by QUIT
->>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -139,6 +148,7 @@ LOG: smtp_connection MAIN
 LOG: MAIN
   <= fred@myhost.test.ex U=root P=local-smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -152,7 +162,8 @@ getting address for 127.0.0.1
 checking retry status of 127.0.0.1
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmaZ-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (tempreject@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -192,13 +203,15 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250:451:221'
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
 all IP addresses skipped or deferred at least one address
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1242 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == tempreject@test.ex R=client T=send_to_server defer (-46) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after pipelined end of data: 451 Service not available
->>>>>>>>>>>>>>>> Exim pid=p1239 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1241 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: smtp_connection MAIN
   SMTP connection from root D=q.qqqs closed by QUIT
->>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -207,6 +220,7 @@ LOG: smtp_connection MAIN
 LOG: MAIN
   <= fred@myhost.test.ex U=root P=local-smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -222,7 +236,8 @@ no host retry record
 no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmbA-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (permreject@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -258,17 +273,19 @@ ok=0 send_quit=0 send_rset=1 continue_more=0 yield=0 first_address is NULL
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250:550:221'
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1245 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   ** permreject@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after pipelined end of data: 550 content rejected
 LOG: MAIN
   permreject@test.ex: error ignored
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1241 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1244 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: smtp_connection MAIN
   SMTP connection from root D=q.qqqs closed by QUIT
->>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1243 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -277,6 +294,7 @@ LOG: smtp_connection MAIN
 LOG: MAIN
   <= fred@myhost.test.ex U=root P=local-smtp S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -292,7 +310,8 @@ no host retry record
 no message retry record
 127.0.0.1 [127.0.0.1]:1111 retry-status = usable
 delivering 10HmbB-000000005vi-0000 to 127.0.0.1 [127.0.0.1] (dataloss@test.ex)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 Server ready
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -332,9 +351,10 @@ cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250'
 added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
 all IP addresses skipped or deferred at least one address
 Leaving send_to_server transport
+>>>>>>>>>>>>>>>> Exim pid=p1248 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   == dataloss@test.ex R=client T=send_to_server defer (-18) H=127.0.0.1 [127.0.0.1]: Remote host closed connection in response to pipelined end of data
->>>>>>>>>>>>>>>> Exim pid=p1243 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1247 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: smtp_connection MAIN
   SMTP connection from root D=q.qqqs closed by QUIT
->>>>>>>>>>>>>>>> Exim pid=p1242 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1246 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index f1a1de6a460133d5fa5ed28b4623b42bffde255c..4d20918e43d6b5b1dc94524f8029a09471440070 100644 (file)
 >>>  list element: 2001:ab8:37f:20:0:0:0:1
 >>>  host in "<; 2001:ab8:37f:20:0:0:0:1 ; v6.test.ex"? yes (matched "2001:ab8:37f:20:0:0:0:1")
 >>> warn: condition test succeeded in ACL "check_connect"
-LOG: H=[2001:0ab8:037f:0020:0000:0000:0000:0001] Warning: matched hostlist
+LOG: H=[2001:ab8:37f:20::1] Warning: matched hostlist
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check condition = ${if eq{$sender_host_address}{2001:0ab8:037f:0020:0000:0000:0000:0001}}
->>>                 = true
->>> accept: condition test succeeded in ACL "check_connect"
->>> end of ACL "check_connect": ACCEPT
+>>>                 = 
+>>> accept: condition test failed in ACL "check_connect"
+>>> end of ACL "check_connect": implicit DENY
+LOG: H=[2001:ab8:37f:20::1] rejected connection in "connect" ACL
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup?
 >>>  list element: *
 >>>  host in host_lookup? yes (matched "*")
->>> looking up host name for V6NET:1234:0005:0006:0007:0008:0abc:000d
+>>> looking up host name for V6NET:1234:5:6:7:8:abc:d
 >>> IP address lookup yielded "test3.ipv6.test.ex"
+>>>  check dnssec require list
+>>>   test3.ipv6.test.ex not in empty list (option unset? cannot trace name)
+>>>  check dnssec request list
+>>>   test3.ipv6.test.ex not in empty list (option unset? cannot trace name)
 >>> checking addresses for test3.ipv6.test.ex
 >>>   V6NET:1234:5:6:7:8:abc:d OK
 >>> host in host_reject_connection? no (option unset)
@@ -51,7 +56,7 @@ MUNGED: ::1 will be omitted in what follows
 >>>                 = 
 >>> accept: condition test failed in ACL "check_connect"
 >>> end of ACL "check_connect": implicit DENY
-LOG: H=test3.ipv6.test.ex [V6NET:1234:0005:0006:0007:0008:0abc:000d] rejected connection in "connect" ACL
+LOG: H=test3.ipv6.test.ex [V6NET:1234:5:6:7:8:abc:d] rejected connection in "connect" ACL
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
@@ -72,10 +77,10 @@ MUNGED: ::1 will be omitted in what follows
 >>>   name=v6.test.ex address=V6NET:ffff:836f:a00:a:800:200a:c032
 >>>  host in "<; 2001:ab8:37f:20:0:0:0:1 ; v6.test.ex"? yes (matched "v6.test.ex")
 >>> warn: condition test succeeded in ACL "check_connect"
-LOG: H=[V6NET:ffff:836f:0a00:000a:0800:200a:c032] Warning: matched hostlist
+LOG: H=[V6NET:ffff:836f:a00:a:800:200a:c032] Warning: matched hostlist
 >>> processing "accept" (TESTSUITE/test-config 24)
 >>> check condition = ${if eq{$sender_host_address}{2001:0ab8:037f:0020:0000:0000:0000:0001}}
 >>>                 = 
 >>> accept: condition test failed in ACL "check_connect"
 >>> end of ACL "check_connect": implicit DENY
-LOG: H=[V6NET:ffff:836f:0a00:000a:0800:200a:c032] rejected connection in "connect" ACL
+LOG: H=[V6NET:ffff:836f:a00:a:800:200a:c032] rejected connection in "connect" ACL
index cd8cae71fb1a62c99d76ff6b65189a62de82fb3e..7dba773b5fab254f230b8e5d1d9ef2ef4c02eda9 100644 (file)
@@ -28,6 +28,8 @@
 >>> check domains = <+ @mx_any/ignore=<;127.0.0.1;::1
 >>> mxt11a.test.ex in "<+ @mx_any/ignore=<;127.0.0.1;::1"?
 >>>  list element: @mx_any/ignore=<;127.0.0.1;::1
+>>>  check dnssec require list
+>>>  check dnssec request list
 >>>  ::1 in "<;127.0.0.1;::1"?
 >>>   list element: 127.0.0.1
 >>>   list element: ::1
index 3fe18948aed059f7cf8ff5fcfd2bcd58e777163b..ef5f0b89fbb5e8b412815ba019f663d129ac700b 100644 (file)
@@ -1,47 +1,52 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx46.test.ex (MX) using fakens
-DNS lookup of mx46.test.ex (MX) succeeded
+ DNS lookup of mx46.test.ex (MX) using fakens
+ DNS lookup of mx46.test.ex (MX) succeeded
+ DNS lookup of 46.test.ex (AAAA) succeeded
+ DNS lookup of 46.test.ex (A) using fakens
+ DNS lookup of 46.test.ex (A) succeeded
+manualroute in local_parts? no (end of list)
 DNS lookup of 46.test.ex (AAAA) succeeded
 DNS lookup of 46.test.ex (A) using fakens
 DNS lookup of 46.test.ex (A) succeeded
-DNS lookup of 46.test.ex (AAAA) succeeded
-DNS lookup of 46.test.ex (A) using fakens
-DNS lookup of 46.test.ex (A) succeeded
-DNS lookup of v6.test.ex (MX) using fakens
-DNS lookup of v6.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for v6.test.ex-MX-xxxx, ttl 3000
-DNS lookup of v6.test.ex (AAAA) succeeded
-DNS lookup of v6.test.ex (A) using fakens
-DNS lookup of v6.test.ex (A) gave NO_DATA
-returning DNS_NODATA
-faking res_search(A) response length as 65535
- writing neg-cache entry for v6.test.ex-A-xxxx, ttl 3000
+ DNS lookup of v6.test.ex (MX) using fakens
+ DNS lookup of v6.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for v6.test.ex-MX-xxxx, ttl 3000
+ DNS lookup of v6.test.ex (AAAA) succeeded
+ DNS lookup of v6.test.ex (A) using fakens
+ DNS lookup of v6.test.ex (A) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(A) response length as 65535
+  writing neg-cache entry for v6.test.ex-A-xxxx, ttl 3000
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx46.test.ex (MX) using fakens
-DNS lookup of mx46.test.ex (MX) succeeded
-DNS lookup of 46.test.ex (A) using fakens
-DNS lookup of 46.test.ex (A) succeeded
+ DNS lookup of mx46.test.ex (MX) using fakens
+ DNS lookup of mx46.test.ex (MX) succeeded
+ DNS lookup of 46.test.ex (A) using fakens
+ DNS lookup of 46.test.ex (A) succeeded
+manualroute in local_parts? no (end of list)
 DNS lookup of 46.test.ex (A) using fakens
 DNS lookup of 46.test.ex (A) succeeded
-DNS lookup of v6.test.ex (MX) using fakens
-DNS lookup of v6.test.ex (MX) gave NO_DATA
-returning DNS_NODATA
-faking res_search(MX) response length as 65535
- writing neg-cache entry for v6.test.ex-MX-xxxx, ttl 3000
-DNS lookup of v6.test.ex (A) using fakens
-DNS lookup of v6.test.ex (A) gave NO_DATA
-returning DNS_NODATA
-faking res_search(A) response length as 65535
- writing neg-cache entry for v6.test.ex-A-xxxx, ttl 3000
+ DNS lookup of v6.test.ex (MX) using fakens
+ DNS lookup of v6.test.ex (MX) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(MX) response length as 65535
+  writing neg-cache entry for v6.test.ex-MX-xxxx, ttl 3000
+ DNS lookup of v6.test.ex (A) using fakens
+ DNS lookup of v6.test.ex (A) gave NO_DATA
+ returning DNS_NODATA
+ faking res_search(A) response length as 65535
+  writing neg-cache entry for v6.test.ex-A-xxxx, ttl 3000
+dnslookup in local_parts? no (end of list)
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 
 ******** SERVER ********
index ca46d25e6580cf9bc709cb45facfd587a28ad118..aa1a3f0485ca41b7e3f4d800aae5d5a00afefdb6 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -24,6 +25,7 @@ p1242 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -49,6 +51,7 @@ p1243 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -75,6 +78,7 @@ p1244 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -101,6 +105,7 @@ p1245 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -124,6 +129,7 @@ p1246 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1239
 configuration file is TESTSUITE/test-config
@@ -150,6 +156,7 @@ p1247 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1239 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1240
 configuration file is TESTSUITE/test-config
@@ -177,6 +184,7 @@ p1248 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DSERVER=se
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1240 (daemon) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1241
 configuration file is TESTSUITE/test-config
index 4345670f92229957c7ac12ef19a3dfcd19d487f0..5d06a61d2226c71cacabb59a8f98d0a01d2df8b6 100644 (file)
@@ -1,7 +1,8 @@
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
 delivering 10HmaX-000000005vi-0000 (queue run pid p1234)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO helo.data.changed
   SMTP<< 250-myhost.test.ex Hello helo.data.changed [127.0.0.1]
@@ -38,7 +39,8 @@ LOG: MAIN
 LOG: MAIN
   Completed
 delivering 10HmaY-000000005vi-0000 (queue run pid p1234)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO helo.data.changed
   SMTP<< 250-myhost.test.ex Hello helo.data.changed [127.0.0.1]
@@ -76,7 +78,8 @@ LOG: MAIN
   => CALLER@test.ex R=client T=send_to_server1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
 LOG: MAIN
   -> xyz@test.ex R=client T=send_to_server1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
-Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...  connected
+Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
index aeb2273ec90f6a0a5639910f0970e407aecc4cf8..d292a33a06be3111f917f020171933411b642df4 100644 (file)
@@ -1,13 +1,18 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1242 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1242 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1243 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1244 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+>>>>>>>>>>>>>>>> Exim pid=p1244 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1245 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1246 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1247 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -21,6 +26,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -38,18 +44,21 @@ cmd buf flush ddd bytes
   SMTP<< 354 Enter message, ending with "." on a line by itself
   SMTP>> .
   SMTP<< 250 OK id=10HmbA-000000005vi-0000
+127.0.0.1 in hosts_noproxy_tls? no (end of list)
+>>>>>>>>>>>>>>>> Exim pid=p1248 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userx@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1245 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1249 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<userz@test.ex>
+  SMTP|> RCPT TO:<usery@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -59,18 +68,20 @@ cmd buf flush ddd bytes
   SMTP<< 250 OK id=10HmbB-000000005vi-0000
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250'
+>>>>>>>>>>>>>>>> Exim pid=p1251 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => userz@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbB-000000005vi-0000"
+  => usery@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbB-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1246 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1250 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<usery@test.ex>
+  SMTP|> RCPT TO:<userz@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -85,25 +96,31 @@ cmd buf flush ddd bytes (more expected)
   SMTP<< 221 myhost.test.ex closing connection
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:QUIT+:250:221'
+>>>>>>>>>>>>>>>> Exim pid=p1253 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => usery@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
+  => userz@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbC-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1247 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1248 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1252 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1254 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1234 -qqf
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1235 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1249 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1250 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1251 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+>>>>>>>>>>>>>>>> Exim pid=p1255 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1256 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1257 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1258 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1259 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1260 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -117,6 +134,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -134,18 +152,21 @@ cmd buf flush ddd bytes
   SMTP<< 354 Enter message, ending with "." on a line by itself
   SMTP>> .
   SMTP<< 250 OK id=10HmbG-000000005vi-0000
+127.0.0.1 in hosts_noproxy_tls? no (end of list)
+>>>>>>>>>>>>>>>> Exim pid=p1261 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => usera@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbG-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1252 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1262 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<userc@test.ex>
+  SMTP|> RCPT TO:<userb@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -155,18 +176,20 @@ cmd buf flush ddd bytes
   SMTP<< 250 OK id=10HmbH-000000005vi-0000
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:250'
+>>>>>>>>>>>>>>>> Exim pid=p1264 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => userc@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbH-000000005vi-0000"
+  => userb@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbH-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1253 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1263 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<userb@test.ex>
+  SMTP|> RCPT TO:<userc@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -181,25 +204,31 @@ cmd buf flush ddd bytes (more expected)
   SMTP<< 221 myhost.test.ex closing connection
   SMTP(close)>>
 cmdlog: 'MAIL|:RCPT|:DATA:250:250:354:.:QUIT+:250:221'
+>>>>>>>>>>>>>>>> Exim pid=p1266 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => userb@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbI-000000005vi-0000"
+  => userc@test.ex R=cl_override T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmbI-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1254 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1255 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1265 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1267 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1235 -qqf
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 LOG: queue_run MAIN
   Start queue run: pid=p1236 -qqf
->>>>>>>>>>>>>>>> Exim pid=p1256 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1257 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1258 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+>>>>>>>>>>>>>>>> Exim pid=p1268 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1269 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1270 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1271 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1272 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1273 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -213,6 +242,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -241,12 +271,14 @@ cmd buf flush ddd bytes
          250 HELP
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:STARTTLS:220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250:EHLO:250-'
+>>>>>>>>>>>>>>>> Exim pid=p1274 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => user_p@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbM-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1259 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1275 (qrun-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -254,6 +286,7 @@ dropping to exim gid; retaining priv uid
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -263,7 +296,7 @@ cmd buf flush ddd bytes
          250-PIPELINING
          250 HELP
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<user_r@test.ex>
+  SMTP|> RCPT TO:<user_q@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -282,12 +315,14 @@ cmd buf flush ddd bytes
          250 HELP
   SMTP(close)>>
 cmdlog: 'STARTTLS:220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:250:EHLO:250-'
+>>>>>>>>>>>>>>>> Exim pid=p1277 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => user_r@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbN-000000005vi-0000"
+  => user_q@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbN-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1260 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1276 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -295,6 +330,7 @@ dropping to exim gid; retaining priv uid
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -304,7 +340,7 @@ cmd buf flush ddd bytes
          250-PIPELINING
          250 HELP
   SMTP|> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
-  SMTP|> RCPT TO:<user_q@test.ex>
+  SMTP|> RCPT TO:<user_r@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
   SMTP<< 250 OK
@@ -317,11 +353,12 @@ cmd buf flush ddd bytes
   SMTP<< 221 myhost.test.ex closing connection
   SMTP(close)>>
 cmdlog: 'STARTTLS:220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:QUIT:250:221'
+>>>>>>>>>>>>>>>> Exim pid=p1279 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
-  => user_q@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbO-000000005vi-0000"
+  => user_r@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbO-000000005vi-0000"
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1261 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1278 (continued-transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: queue_run MAIN
   End queue run: pid=p1236 -qqf
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 5683ab0d741348c784e1174d910abf0d0b2c2d8a..2cbfc27857bf6b0b73f0d1108060189f1e402f1c 100644 (file)
@@ -1,7 +1,8 @@
 LOG: queue_run MAIN
   Start queue run: pid=p1234 -qf
 delivering 10HmaX-000000005vi-0000 (queue run pid p1234)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO helo.data.changed
   SMTP<< 250-myhost.test.ex Hello helo.data.changed [127.0.0.1]
@@ -28,7 +29,8 @@ LOG: MAIN
 LOG: MAIN
   Completed
 delivering 10HmaY-000000005vi-0000 (queue run pid p1234)
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO helo.data.changed
   SMTP<< 250-myhost.test.ex Hello helo.data.changed [127.0.0.1]
@@ -56,7 +58,8 @@ LOG: MAIN
   => CALLER@test.ex R=client T=send_to_server1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
 LOG: MAIN
   -> xyz@test.ex R=client T=send_to_server1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes C="250 OK id=10HmbA-000000005vi-0000"
-Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...  connected
+Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
index 66f4d48b6e362bfbea220842b5292400b0b966c7..9202056725bf9a595c179526f034e35b1816a309 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from CALLER
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -17,6 +19,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -40,6 +43,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -73,11 +77,12 @@ cmd buf flush ddd bytes (more expected)
   SMTP(close)>>
 cmdlog: 'DATA:354:.:250:QUIT+:221'
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userb@test.ex R=client T=t1 H=127.0.0.1 [127.0.0.1]:PORT_D X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmaY-000000005vi-0000"
 LOG: MAIN
   Completed
 >>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1238 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
 
 ******** SERVER ********
index 66f4d48b6e362bfbea220842b5292400b0b966c7..9202056725bf9a595c179526f034e35b1816a309 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: smtp_connection MAIN
   SMTP connection from CALLER
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -17,6 +19,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+127.0.0.1 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
@@ -40,6 +43,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -73,11 +77,12 @@ cmd buf flush ddd bytes (more expected)
   SMTP(close)>>
 cmdlog: 'DATA:354:.:250:QUIT+:221'
 Leaving t1 transport
+>>>>>>>>>>>>>>>> Exim pid=p1238 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => userb@test.ex R=client T=t1 H=127.0.0.1 [127.0.0.1]:PORT_D X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=no C="250 OK id=10HmaY-000000005vi-0000"
 LOG: MAIN
   Completed
 >>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1238 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1239 (tls-proxy) terminating with rc=0 >>>>>>>>>>>>>>>>
 
 ******** SERVER ********
index 7f1722497a4c37cbc2a6ed54411d1af2c373630e..70972b0c0d21ff1b366eb0bf4ca4a498e7d30f39 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -24,6 +25,7 @@ dropping to exim gid; retaining priv uid
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 search_tidyup called
index cc1a37aed0415e56c6c004d16ef63707f30c9a77..eb37f80cbb805a58cfb2faac1f750ff6ae75e65d 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 seeking password data for user "CALLER": cache not available
@@ -21,15 +22,15 @@ routing test.ex@test.ex
 --------> r0 router <--------
 local_part=test.ex domain=test.ex
 checking senders
-CALLER@myhost.test.ex in "a@shorthost.test.ex"?
+CALLER@myhost.test.ex in senders?
  list element: a@shorthost.test.ex
  address match test: subject=CALLER@myhost.test.ex pattern=a@shorthost.test.ex
-CALLER@myhost.test.ex in "a@shorthost.test.ex"? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 r0 router skipped: senders mismatch
 --------> r1 router <--------
 local_part=test.ex domain=test.ex
 checking domains
-test.ex in "dnsdb;test.ex"?
+test.ex in domains?
  list element: dnsdb;test.ex
  search_open: dnsdb "NULL"
  search_find: file="NULL"
@@ -40,13 +41,13 @@ test.ex in "dnsdb;test.ex"?
  database lookup required for test.ex
                               (tainted)
  dnsdb key: test.ex
-DNS lookup of test.ex (TXT) using fakens
-DNS lookup of test.ex (TXT) succeeded
+ DNS lookup of test.ex (TXT) using fakens
+ DNS lookup of test.ex (TXT) succeeded
  creating new cache entry
  lookup yielded: A░TXT░record░for░test.ex.
- test.ex in "dnsdb;test.ex"? yes (matched "dnsdb;test.ex")
+ test.ex in domains? yes (matched "dnsdb;test.ex")
 checking local_parts
-test.ex in "dnsdb;test.ex"?
+test.ex in local_parts?
  list element: dnsdb;test.ex
  search_open: dnsdb "NULL"
    cached open
@@ -57,7 +58,7 @@ test.ex in "dnsdb;test.ex"?
    type=dnsdb key="test.ex" opts=NULL
  cached data used for lookup of test.ex
  lookup yielded: A░TXT░record░for░test.ex.
- test.ex in "dnsdb;test.ex"? yes (matched "dnsdb;test.ex")
+ test.ex in local_parts? yes (matched "dnsdb;test.ex")
 calling r1 router
 r1 router called for test.ex@test.ex
   domain = test.ex
@@ -78,15 +79,15 @@ routing unknown@test.ex
 --------> r0 router <--------
 local_part=unknown domain=test.ex
 checking senders
-CALLER@myhost.test.ex in "a@shorthost.test.ex"?
+CALLER@myhost.test.ex in senders?
  list element: a@shorthost.test.ex
  address match test: subject=CALLER@myhost.test.ex pattern=a@shorthost.test.ex
-CALLER@myhost.test.ex in "a@shorthost.test.ex"? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 r0 router skipped: senders mismatch
 --------> r1 router <--------
 local_part=unknown domain=test.ex
 checking domains
-test.ex in "dnsdb;test.ex"?
+test.ex in domains?
  list element: dnsdb;test.ex
  search_open: dnsdb "NULL"
    cached open
@@ -97,9 +98,9 @@ test.ex in "dnsdb;test.ex"?
    type=dnsdb key="test.ex" opts=NULL
  cached data used for lookup of test.ex
  lookup yielded: A░TXT░record░for░test.ex.
- test.ex in "dnsdb;test.ex"? yes (matched "dnsdb;test.ex")
+ test.ex in domains? yes (matched "dnsdb;test.ex")
 checking local_parts
-unknown in "dnsdb;unknown"?
+unknown in local_parts?
  list element: dnsdb;unknown
  search_open: dnsdb "NULL"
    cached open
@@ -111,19 +112,19 @@ unknown in "dnsdb;unknown"?
  database lookup required for unknown
                               (tainted)
  dnsdb key: unknown
-DNS lookup of unknown (TXT) using fakens
-DNS lookup of unknown (TXT) gave HOST_NOT_FOUND
-returning DNS_NOMATCH
-faking res_search(TXT) response length as 65535
- writing neg-cache entry for unknown-TXT-xxxx, ttl 3000
+ DNS lookup of unknown (TXT) using fakens
+ DNS lookup of unknown (TXT) gave HOST_NOT_FOUND
+ returning DNS_NOMATCH
+ faking res_search(TXT) response length as 65535
 writing neg-cache entry for unknown-TXT-xxxx, ttl 3000
  creating new cache entry
  lookup failed
-unknown in "dnsdb;unknown"? no (end of list)
+unknown in local_parts? no (end of list)
 r1 router skipped: local_parts mismatch
 --------> r2 router <--------
 local_part=unknown domain=test.ex
 checking domains
-test.ex in "dnsdb;test.ex"?
+test.ex in domains?
  list element: dnsdb;test.ex
  search_open: dnsdb "NULL"
    cached open
@@ -134,9 +135,9 @@ test.ex in "dnsdb;test.ex"?
    type=dnsdb key="test.ex" opts=NULL
  cached data used for lookup of test.ex
  lookup yielded: A░TXT░record░for░test.ex.
- test.ex in "dnsdb;test.ex"? yes (matched "dnsdb;test.ex")
+ test.ex in domains? yes (matched "dnsdb;test.ex")
 checking senders
-CALLER@myhost.test.ex in "dnsdb;A=myhost.test.ex"?
+CALLER@myhost.test.ex in senders?
  list element: dnsdb;A=myhost.test.ex
  address match test: subject=CALLER@myhost.test.ex pattern=dnsdb;A=myhost.test.ex
  search_open: dnsdb "NULL"
@@ -148,11 +149,11 @@ CALLER@myhost.test.ex in "dnsdb;A=myhost.test.ex"?
    type=dnsdb key="A=myhost.test.ex" opts=NULL
  database lookup required for A=myhost.test.ex
  dnsdb key: myhost.test.ex
-DNS lookup of myhost.test.ex (A) using fakens
-DNS lookup of myhost.test.ex (A) succeeded
+ DNS lookup of myhost.test.ex (A) using fakens
+ DNS lookup of myhost.test.ex (A) succeeded
  creating new cache entry
  lookup yielded: V4NET.10.10.10
- CALLER@myhost.test.ex in "dnsdb;A=myhost.test.ex"? yes (matched "dnsdb;A=myhost.test.ex")
+ CALLER@myhost.test.ex in senders? yes (matched "dnsdb;A=myhost.test.ex")
 calling r2 router
 r2 router called for unknown@test.ex
   domain = test.ex
@@ -167,6 +168,7 @@ routed by r2 router
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -212,6 +214,7 @@ search_tidyup called
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -231,6 +234,7 @@ p1238 Process p1238 is handling incoming connection from [127.0.0.1]
 p1238 Process p1238 is ready for new message
 1 SMTP accept process running
 Listening...
+p1238 host in chunking_advertise_hosts? no (end of list)
 p1238 dnslists check: rbl.test.ex/V4NET.11.12.14
 p1238 new DNS lookup for 14.12.11.V4NET.rbl.test.ex
 p1238 dnslists: wrote cache entry, ttl=2
index 9cd2772a2aea21500791b8e84240cec401ba7957..f9c7704ca0a04a3716ce3db0bea73d4c1e466618 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -48,15 +49,15 @@ check hosts = +ignore_unknown : *.$sender_address_domain : $sender_address_domai
  database lookup required for >:defer_never,mxh=cioce.test.again.dns
                               (tainted)
  dnsdb key: cioce.test.again.dns
-DNS lookup of cioce.test.again.dns (MX) using fakens
-DNS lookup of cioce.test.again.dns (MX) gave TRY_AGAIN
+ DNS lookup of cioce.test.again.dns (MX) using fakens
+ DNS lookup of cioce.test.again.dns (MX) gave TRY_AGAIN
  cioce.test.again.dns in dns_again_means_nonexist?
   list element: *
   cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*")
-cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for cioce.test.again.dns-MX-xxxx, ttl -1
+ cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for cioce.test.again.dns-MX-xxxx, ttl -1
  creating new cache entry
  lookup failed
 host in "+ignore_unknown : *.cioce.test.again.dns : cioce.test.again.dns : "?
@@ -64,13 +65,17 @@ host in "+ignore_unknown : *.cioce.test.again.dns : cioce.test.again.dns : "?
  list element: *.cioce.test.again.dns
 sender host name required, to match against *.cioce.test.again.dns
 looking up host name for ip4.ip4.ip4.ip4
-DNS lookup of ip4-reverse.in-addr.arpa (PTR) using fakens
-DNS lookup of ip4-reverse.in-addr.arpa (PTR) succeeded
+  DNS lookup of ip4-reverse.in-addr.arpa (PTR) using fakens
+  DNS lookup of ip4-reverse.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "the.local.host.name"
-DNS lookup of the.local.host.name (A) using fakens
-DNS lookup of the.local.host.name (A) succeeded
+  check dnssec require list
+   the.local.host.name not in empty list (option unset? cannot trace name)
+  check dnssec request list
+   the.local.host.name not in empty list (option unset? cannot trace name)
+  DNS lookup of the.local.host.name (A) using fakens
+  DNS lookup of the.local.host.name (A) succeeded
 local host found for non-MX address
-the.local.host.name ip4.ip4.ip4.ip4 mx=-1 sort=xx 
+  the.local.host.name ip4.ip4.ip4.ip4 mx=-1 sort=xx 
 checking addresses for the.local.host.name
 Forward DNS security status: unverified
   ip4.ip4.ip4.ip4 OK
@@ -78,15 +83,15 @@ sender_fullhost = the.local.host.name (test) [ip4.ip4.ip4.ip4]
 sender_rcvhost = the.local.host.name ([ip4.ip4.ip4.ip4] helo=test)
  list element: cioce.test.again.dns
 using host_fake_gethostbyname for cioce.test.again.dns (IPv4)
-DNS lookup of cioce.test.again.dns (A) using fakens
-DNS lookup of cioce.test.again.dns (A) gave TRY_AGAIN
+ DNS lookup of cioce.test.again.dns (A) using fakens
+ DNS lookup of cioce.test.again.dns (A) gave TRY_AGAIN
  cioce.test.again.dns in dns_again_means_nonexist?
   list element: *
   cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*")
-cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for cioce.test.again.dns-A-xxxx, ttl -1
+ cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
+ DNS: couldn't fake dnsa len
+ DNS: no SOA record found for neg-TTL
 writing neg-cache entry for cioce.test.again.dns-A-xxxx, ttl -1
 host_fake_gethostbyname(af=inet) returned 1 (HOST_NOT_FOUND)
 no IP address found for host cioce.test.again.dns (during SMTP connection from the.local.host.name (test) [ip4.ip4.ip4.ip4])
 LOG: host_lookup_failed MAIN
@@ -105,6 +110,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -140,27 +146,31 @@ test.again.dns in "+try_again_dns_list"?
   start sublist try_again_dns_list
    test.again.dns in "@mx_any"?
    ╎list element: @mx_any
-DNS lookup of test.again.dns (MX) using fakens
-DNS lookup of test.again.dns (MX) gave TRY_AGAIN
+   ╎check dnssec require list
+   ╎check dnssec request list
+   ╎DNS lookup of test.again.dns (MX) using fakens
+   ╎DNS lookup of test.again.dns (MX) gave TRY_AGAIN
    ╎test.again.dns in dns_again_means_nonexist?
    ╎ list element: !+try_again_dns_list
    ╎  start sublist try_again_dns_list
    ╎   test.again.dns in "@mx_any"?
    ╎   ╎list element: @mx_any
-DNS lookup of test.again.dns (MX) using fakens
-DNS lookup of test.again.dns (MX) gave TRY_AGAIN
+   ╎   ╎check dnssec require list
+   ╎   ╎check dnssec request list
+   ╎   ╎DNS lookup of test.again.dns (MX) using fakens
+   ╎   ╎DNS lookup of test.again.dns (MX) gave TRY_AGAIN
 LOG: MAIN PANIC
   dns_again_means_nonexist recursion seen for test.again.dns (assuming nonexist)
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- writing neg-cache entry for test.again.dns-MX-xxxx, ttl -1
+   ╎   ╎DNS: couldn't fake dnsa len
+   ╎   ╎DNS: no SOA record found for neg-TTL
  ╎   ╎ writing neg-cache entry for test.again.dns-MX-xxxx, ttl -1
    ╎   test.again.dns in "@mx_any"? no (end of list)
    ╎  end sublist try_again_dns_list
    ╎test.again.dns in dns_again_means_nonexist? yes (end of list)
-test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
-DNS: couldn't fake dnsa len
-DNS: no SOA record found for neg-TTL
- update neg-cache entry for test.again.dns-MX-xxxx, ttl -1
+   ╎test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
+   ╎DNS: couldn't fake dnsa len
+   ╎DNS: no SOA record found for neg-TTL
  ╎ update neg-cache entry for test.again.dns-MX-xxxx, ttl -1
    test.again.dns in "@mx_any"? no (end of list)
   end sublist try_again_dns_list
 test.again.dns in "+try_again_dns_list"? no (end of list)
index 917ead58fa74eea3be56905b3a09ad0fbd996b43..8bfaf1c92c1970e9650a800db40f58c574dc9169 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -110,7 +111,7 @@ dropping to exim gid; retaining priv uid
  file lookup required for select * from them where id='tab';
    in TESTSUITE/aux-fixed/sqlitedb
  creating new cache entry
- lookup yielded: name="x       x"░id=tab░
+ lookup yielded: name="xx"░id=tab░
  search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    cached open
  search_find: file="TESTSUITE/aux-fixed/sqlitedb"
@@ -136,6 +137,7 @@ dropping to exim gid; retaining priv uid
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -193,7 +195,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite,file=TESTSUITE/aux-fixed/sqlitedb; select * from them where id='10.0.0.0'"?
-   ╎list element: sqlite,file=TESTSUITE/aux-fixed/sqlitedb; select * from them where id='10.0.0.0'
+   ╎list element: sqlite,file=TESTSUITE/aux-fixed/sqlitedb;░select░*░from░them░where░id='10.0.0.0'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
    ╎  key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts="file=TESTSUITE/aux-fixed/sqlitedb"
@@ -234,7 +236,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite,file=TESTSUITE/aux-fixed/sqlitedb; select * from them where id='10.0.0.0'"?
-   ╎list element: sqlite,file=TESTSUITE/aux-fixed/sqlitedb; select * from them where id='10.0.0.0'
+   ╎list element: sqlite,file=TESTSUITE/aux-fixed/sqlitedb;░select░*░from░them░where░id='10.0.0.0'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎  cached open
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
@@ -264,6 +266,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -321,7 +324,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.0.0.0'"?
-   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.0.0.0'
+   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb░select░*░from░them░where░id='10.0.0.0'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
    ╎  key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts=NULL
@@ -362,7 +365,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.0.0.0'"?
-   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.0.0.0'
+   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb░select░*░from░them░where░id='10.0.0.0'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎  cached open
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
@@ -392,6 +395,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -449,7 +453,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'"?
-   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'
+   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb░select░*░from░them░where░id='10.10.10.10'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
    ╎  key="select * from them where id='10.10.10.10'" partial=-1 affix=NULL starflags=0 opts=NULL
@@ -485,7 +489,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'"?
-   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'
+   ╎list element: sqlite;TESTSUITE/aux-fixed/sqlitedb░select░*░from░them░where░id='10.10.10.10'
    ╎search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
    ╎  cached open
    ╎search_find: file="TESTSUITE/aux-fixed/sqlitedb"
@@ -509,6 +513,7 @@ LOG: smtp_connection MAIN
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -557,6 +562,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -DOPT=y -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1239
 configuration file is TESTSUITE/test-config
@@ -580,8 +586,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@myhost.test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -628,8 +632,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@myhost.test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -667,6 +669,7 @@ writing data block fd=dddd size=sss timeout=0
 writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1240 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@myhost.test.ex
 t1 transport returned OK for userx@myhost.test.ex
 post-process userx@myhost.test.ex (0)
@@ -700,6 +703,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -716,6 +720,7 @@ dropping to exim gid; retaining priv uid
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1241 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -732,6 +737,7 @@ dropping to exim gid; retaining priv uid
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1242 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -740,6 +746,7 @@ dropping to exim gid; retaining priv uid
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1243 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
index 1dde7606f93e1d79f7a7ab9fffc132be4fcab77c..e0326a6a7a2bb4fd2023f9fbd6fd74c0255e598a 100644 (file)
@@ -2,6 +2,7 @@
 ### wait for db startup, set password on the root user
 ### create testdb and extra users
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -244,6 +245,7 @@ close MYSQL connection: ip4.ip4.ip4.ip4:1223/test/root
 close MYSQL connection: 127.0.0.1:PORT_N/test/root
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 01:01:01 p1235  Exim version x.yz uid=CALLER_UID gid=CALLER_GID pid=p1235 D=fff9ffff
+01:01:01 p1235  Hints DB:
 01:01:01 p1235  macros_trusted overridden to true by whitelisting
 01:01:01 p1235  changed uid/gid: forcing real = effective
 01:01:01 p1235    uid=uuuu gid=CALLER_GID pid=p1235
@@ -574,7 +576,7 @@ close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235   ╰─────result: net-mysql;select░*░from░them░where░id='c'
 01:01:01 p1235              ╰──(tainted, quoted:mysql)
 01:01:01 p1235  host in "net-mysql;select * from them where id='c'"?
-01:01:01 p1235   list element: net-mysql;select * from them where id='c'
+01:01:01 p1235   list element: net-mysql;select░*░from░them░where░id='c'
 01:01:01 p1235   search_open: mysql "NULL"
 01:01:01 p1235     cached open
 01:01:01 p1235   search_find: file="NULL"
@@ -612,7 +614,7 @@ close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235   ╰─────result: <&░net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
 01:01:01 p1235              ╰──(tainted, quoted:mysql)
 01:01:01 p1235  host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"?
-01:01:01 p1235   list element: net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'
+01:01:01 p1235   list element: net-mysql;servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
 01:01:01 p1235   search_open: mysql "NULL"
 01:01:01 p1235     cached open
 01:01:01 p1235   search_find: file="NULL"
@@ -652,7 +654,7 @@ close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235   ╰─────result: <&░net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
 01:01:01 p1235              ╰──(tainted, quoted:mysql)
 01:01:01 p1235  host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"?
-01:01:01 p1235   list element: net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'
+01:01:01 p1235   list element: net-mysql,servers=127.0.0.1::PORT_N/test/root/pass;░select░*░from░them░where░id='c'
 01:01:01 p1235   search_open: mysql "NULL"
 01:01:01 p1235     cached open
 01:01:01 p1235   search_find: file="NULL"
@@ -693,7 +695,7 @@ close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235     ╎├───expanded: net-mysql;select░*░from░them░where░id='$sender_host_address'
 01:01:01 p1235     ╎╰─────result: net-mysql;select░*░from░them░where░id='10.0.0.0'
 01:01:01 p1235     host in "net-mysql;select * from them where id='10.0.0.0'"?
-01:01:01 p1235     ╎list element: net-mysql;select * from them where id='10.0.0.0'
+01:01:01 p1235     ╎list element: net-mysql;select░*░from░them░where░id='10.0.0.0'
 01:01:01 p1235     ╎search_open: mysql "NULL"
 01:01:01 p1235     ╎  cached open
 01:01:01 p1235     ╎search_find: file="NULL"
@@ -727,6 +729,7 @@ close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235  close MYSQL connection: 127.0.0.1:PORT_N/test/root
 01:01:01 p1235  >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -781,6 +784,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -804,8 +808,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   ph10@myhost.test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -873,8 +875,6 @@ search_tidyup called
 close MYSQL connection: 127.0.0.1:PORT_N/test/root
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> ph10@myhost.test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -918,6 +918,7 @@ writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
 close MYSQL connection: 127.0.0.1:PORT_N/test/root
+>>>>>>>>>>>>>>>> Exim pid=p1238 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling ph10@myhost.test.ex
 t1 transport returned OK for ph10@myhost.test.ex
 post-process ph10@myhost.test.ex (0)
index a32994c2656f0dd68c39f4aceb147f2897be0c73..6446d69127665361b7a9d1617726eaa2e5e649d8 100644 (file)
@@ -2,6 +2,7 @@
 WARNING: enabling "trust" authentication for local connections
 initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -98,7 +99,7 @@ dropping to exim gid; retaining priv uid
  PostgreSQL query: "select * from them where id='newline';" opts 'NULL'
  PGSQL using cached connection for localhost:PORT_N/test/CALLER
  creating new cache entry
- lookup yielded: name="before\r
+ lookup yielded: name="before
  after"░id=newline░
  search_open: pgsql "NULL"
    cached open
@@ -111,7 +112,7 @@ dropping to exim gid; retaining priv uid
  PostgreSQL query: "select * from them where id='tab';" opts 'NULL'
  PGSQL using cached connection for localhost:PORT_N/test/CALLER
  creating new cache entry
- lookup yielded: name="x       x"░id=tab░
+ lookup yielded: name="xx"░id=tab░
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -226,6 +227,7 @@ close PGSQL connection: (TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER
 close PGSQL connection: localhost:PORT_N/test/CALLER
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1236
 configuration file is TESTSUITE/test-config
@@ -356,7 +358,7 @@ processing "warn" (TESTSUITE/test-config 41)
 check set acl_m0 = ok:   hostlist
 check hosts = net-pgsql;select * from them where id='${quote_pgsql:$local_part}'
 host in "net-pgsql;select * from them where id='c'"?
- list element: net-pgsql;select * from them where id='c'
+ list element: net-pgsql;select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -377,7 +379,7 @@ processing "warn" (TESTSUITE/test-config 44)
 check set acl_m0 = FAIL: hostlist
 check hosts = <& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}'
 host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"?
- list element: net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'
+ list element: net-pgsql;servers=localhost::PORT_N/test/CALLER/;░select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -400,7 +402,7 @@ processing "warn" (TESTSUITE/test-config 49)
 check set acl_m0 = FAIL: hostlist
 check hosts = <& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}'
 host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"?
- list element: net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'
+ list element: net-pgsql,servers=localhost::PORT_N/test/CALLER/;░select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -433,7 +435,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "net-pgsql;select * from them where id='10.0.0.0'"?
-   ╎list element: net-pgsql;select * from them where id='10.0.0.0'
+   ╎list element: net-pgsql;select░*░from░them░where░id='10.0.0.0'
    ╎search_open: pgsql "NULL"
    ╎  cached open
    ╎search_find: file="NULL"
@@ -551,7 +553,7 @@ processing "warn" (TESTSUITE/test-config 41)
 check set acl_m0 = ok:   hostlist
 check hosts = net-pgsql;select * from them where id='${quote_pgsql:$local_part}'
 host in "net-pgsql;select * from them where id='c'"?
- list element: net-pgsql;select * from them where id='c'
+ list element: net-pgsql;select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -567,7 +569,7 @@ processing "warn" (TESTSUITE/test-config 44)
 check set acl_m0 = FAIL: hostlist
 check hosts = <& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}'
 host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"?
- list element: net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'
+ list element: net-pgsql;servers=localhost::PORT_N/test/CALLER/;░select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -590,7 +592,7 @@ processing "warn" (TESTSUITE/test-config 49)
 check set acl_m0 = FAIL: hostlist
 check hosts = <& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}'
 host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"?
- list element: net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'
+ list element: net-pgsql,servers=localhost::PORT_N/test/CALLER/;░select░*░from░them░where░id='c'
  search_open: pgsql "NULL"
    cached open
  search_find: file="NULL"
@@ -623,7 +625,7 @@ host in "+relay_hosts"?
  list element: +relay_hosts
   start sublist relay_hosts
   host in "net-pgsql;select * from them where id='10.0.0.0'"?
-   ╎list element: net-pgsql;select * from them where id='10.0.0.0'
+   ╎list element: net-pgsql;select░*░from░them░where░id='10.0.0.0'
    ╎search_open: pgsql "NULL"
    ╎  cached open
    ╎search_find: file="NULL"
@@ -652,6 +654,7 @@ search_tidyup called
 close PGSQL connection: localhost:PORT_N/test/CALLER
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -700,6 +703,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -723,8 +727,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   CALLER@myhost.test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -773,8 +775,6 @@ search_tidyup called
 close PGSQL connection: localhost:PORT_N/test/CALLER
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> CALLER@myhost.test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -814,6 +814,7 @@ writing data block fd=dddd size=sss timeout=0
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
 close PGSQL connection: localhost:PORT_N/test/CALLER
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling CALLER@myhost.test.ex
 t1 transport returned OK for CALLER@myhost.test.ex
 post-process CALLER@myhost.test.ex (0)
@@ -847,6 +848,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
index c953369319e2431fb1031cc98501fb3e73fe08aa..b04a150861109d4988d7e225c89c1ac47e1996d1 100644 (file)
@@ -1,5 +1,6 @@
 1999-03-02 09:44:33 this is a warning at TESTSUITE/aux-fixed/3000.pl line 25.
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
index 0098e6e4feddd1ac4da171a49fd80e91f600a425..70d48576bf0374c45bfc504a66413caa564668f3 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -44,6 +45,7 @@ LOG: connection_reject MAIN REJECT
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1235
 configuration file is TESTSUITE/test-config
index 441efed4f4febebdddcd893c2cb5db6e415b7a47..7e9e4c3a60f640c21757ce6225dfae21f140634b 100644 (file)
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   list element: test.ex
->>>   test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? 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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -74,10 +77,13 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCP
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   list element: test.ex
->>>   test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? 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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -102,21 +108,27 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCP
 >>> check domains = +local_domains
 >>> yesrelay.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   start sublist local_domains
+>>>    yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'yesrelay.ex' value '*relay.ex'
 >>> yesrelay.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 29)
 >>> check domains = +relay_domains
 >>> yesrelay.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
->>>   list element: test.ex
->>>   list element: testhack.ex
->>>   list element: testhack2.ex
->>>   list element: yesrelay.ex
->>>   yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "yesrelay.ex")
+>>>   start sublist relay_domains
+>>>    yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: testhack.ex
+>>>    ╎list element: testhack2.ex
+>>>    ╎list element: yesrelay.ex
+>>>    ╎yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "yesrelay.ex")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'yesrelay.ex' value 'yesrelay.ex'
 >>>  yesrelay.ex in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -134,22 +146,27 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCP
 >>> check domains = +local_domains
 >>> norelay.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   start sublist local_domains
+>>>    norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'norelay.ex' value '*relay.ex'
 >>> norelay.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 29)
 >>> check domains = +relay_domains
 >>> norelay.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
->>>   list element: test.ex
->>>   list element: testhack.ex
->>>   list element: testhack2.ex
->>>   list element: yesrelay.ex
->>>   list element: testdb;defer
->>>  norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? list match deferred for testdb;defer
+>>>   start sublist relay_domains
+>>>    norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: testhack.ex
+>>>    ╎list element: testhack2.ex
+>>>    ╎list element: yesrelay.ex
+>>>    ╎list element: testdb;defer
+>>>    norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? list match deferred for testdb;defer
+>>>   end sublist relay_domains
 >>> norelay.ex in "+relay_domains"? list match deferred for +relay_domains
 >>> accept: condition test deferred in ACL "check_recipient"
 LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCPT <a@norelay.ex>: testdb lookup forced DEFER
@@ -172,21 +189,27 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCP
 >>> check domains = +local_domains
 >>> yesrelay.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   start sublist local_domains
+>>>    yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎yesrelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'yesrelay.ex' value '*relay.ex'
 >>> yesrelay.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 29)
 >>> check domains = +relay_domains
 >>> yesrelay.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
->>>   list element: test.ex
->>>   list element: testhack.ex
->>>   list element: testhack2.ex
->>>   list element: yesrelay.ex
->>>   yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "yesrelay.ex")
+>>>   start sublist relay_domains
+>>>    yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: testhack.ex
+>>>    ╎list element: testhack2.ex
+>>>    ╎list element: yesrelay.ex
+>>>    ╎yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "yesrelay.ex")
+>>>   end sublist relay_domains
+>>>  data from lookup saved for cache for +relay_domains: key 'yesrelay.ex' value 'yesrelay.ex'
 >>>  yesrelay.ex in "+relay_domains"? yes (matched "+relay_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -209,22 +232,27 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCP
 >>> check domains = +local_domains
 >>> norelay.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
->>>   list element: !*relay.ex
->>>   norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   start sublist local_domains
+>>>    norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"?
+>>>    ╎list element: !*relay.ex
+>>>    ╎norelay.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? no (matched "!*relay.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'norelay.ex' value '*relay.ex'
 >>> norelay.ex in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 29)
 >>> check domains = +relay_domains
 >>> norelay.ex in "+relay_domains"?
 >>>  list element: +relay_domains
->>>  norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
->>>   list element: test.ex
->>>   list element: testhack.ex
->>>   list element: testhack2.ex
->>>   list element: yesrelay.ex
->>>   list element: testdb;defer
->>>  norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? list match deferred for testdb;defer
+>>>   start sublist relay_domains
+>>>    norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: testhack.ex
+>>>    ╎list element: testhack2.ex
+>>>    ╎list element: yesrelay.ex
+>>>    ╎list element: testdb;defer
+>>>    norelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? list match deferred for testdb;defer
+>>>   end sublist relay_domains
 >>> norelay.ex in "+relay_domains"? list match deferred for +relay_domains
 >>> accept: condition test deferred in ACL "check_recipient"
 LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCPT <a%norelay.ex@testhack.ex>: testdb lookup forced DEFER
index 48dfeaaa36493f880304fefc78f6459115040594..1dfb873e8010382556c6a44610245432c9ec89d1 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -18,8 +19,8 @@ routing userx@test.ex
 --------> r1 router <--------
 local_part=userx domain=test.ex
 checking domains
-test.ex in "! +local_domains"?
- list element: ! +local_domains
+test.ex in domains?
+ list element: !+local_domains
   start sublist local_domains
    test.ex in "+defer_lookup : test.ex"?
    ╎list element: +defer_lookup
@@ -39,7 +40,7 @@ test.ex in "! +local_domains"?
    ╎ end sublist defer_lookup
    test.ex in "+defer_lookup : test.ex"? list match deferred for +defer_lookup
   end sublist local_domains
-test.ex in "! +local_domains"? list match deferred for ! +local_domains
+test.ex in domains? list match deferred for ! +local_domains
 domains check lookup or other defer
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
index 54f791dc4bd204d0c68866ae62a20099062bbbd8..d6d923d6be85897cc8665a8e9451ed20fafd7347 100644 (file)
 >>> calling skipped router
 >>> skipped router declined for userx@test.again.dns
 >>> calling temp router
->>> test.again.dns in "*"?
->>>  list element: *
->>>  test.again.dns in "*"? yes (matched "*")
->>> test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  check dnssec require list
+>>>   test.again.dns in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   test.again.dns in dnssec_request_domains?
+>>>    list element: *
+>>>    test.again.dns in dnssec_request_domains? yes (matched "*")
+>>>  test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  test.again.dns not in empty list (option unset? cannot trace name)
 >>> temp router: defer for userx@test.again.dns
 >>>   message: host lookup did not complete
 >>> ----------- end verify ------------
@@ -45,14 +49,18 @@ LOG: H=(test) [1.2.3.4] F=<userx@test.ex> temporarily rejected RCPT <userx@test.
 >>> check verify = recipient
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing r1-userx@test.again.dns
->>> test.again.dns in "!testdb;fail"?
+>>> test.again.dns in domains?
 >>>  list element: !testdb;fail
->>> test.again.dns in "!testdb;fail"? yes (end of list)
+>>> test.again.dns in domains? yes (end of list)
 >>> calling r1 router
->>> test.again.dns in "*"?
->>>  list element: *
->>>  test.again.dns in "*"? yes (matched "*")
->>> test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  check dnssec require list
+>>>   test.again.dns in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   test.again.dns in dnssec_request_domains?
+>>>    list element: *
+>>>    test.again.dns in dnssec_request_domains? yes (matched "*")
+>>>  test.again.dns in dns_again_means_nonexist? no (option unset)
+>>>  test.again.dns not in empty list (option unset? cannot trace name)
 >>> r1 router: defer for r1-userx@test.again.dns
 >>>   message: host lookup did not complete
 >>> ----------- end verify ------------
index f9f556d3070fc2f05644d5c2bcdaba7b769264ea..a7f4de90ed3ebb51aca6d3b8f788fcc26385601f 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
index c8b9ba1e2eb1448caf2de695d5b35e2b0d3b0870..915c6e8f1ee0b963f5fbbda54dd86e4bd23cc60e 100644 (file)
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1"?
->>>   list element: 10.0.0.1
->>>  host in "10.0.0.1"? no (end of list)
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1"?
+>>>    ╎list element: 10.0.0.1
+>>>    host in "10.0.0.1"? no (end of list)
+>>>   end sublist auth_hosts
 >>> host in "+auth_hosts"? no (end of list)
 >>> deny: condition test failed in ACL "check_vrfy"
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> end of ACL "check_vrfy": ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "userx"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> using ACL "check_expn"
@@ -54,6 +59,9 @@
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached no match for +auth_hosts
+>>>  cached lookup data = NULL
 >>> host in "+auth_hosts"? no (end of list)
 >>> deny: condition test failed in ACL "check_expn"
 >>> processing "accept" (TESTSUITE/test-config 64)
 >>> end of ACL "check_expn": ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing list@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list in "userx"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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 domains? no (matched "! +local_domains")
+>>> list in local_parts?
 >>>  list element: userx
->>> list in "userx"? no (end of list)
+>>> list in local_parts? no (end of list)
 >>> no more routers
 LOG: ETRN #abcd received from (test) [10.0.0.2]
 >>> using ACL "check_etrn"
@@ -81,6 +92,9 @@ LOG: ETRN #abcd received from (test) [10.0.0.2]
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached no match for +auth_hosts
+>>>  cached lookup data = NULL
 >>> host in "+auth_hosts"? no (end of list)
 >>> deny: condition test failed in ACL "check_etrn"
 >>> processing "require" (TESTSUITE/test-config 56)
@@ -128,9 +142,11 @@ LOG: H=(test) [10.0.0.2] Warning: accepted ETRN #abcd
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1"?
->>>   list element: 10.0.0.1
->>>   host in "10.0.0.1"? yes (matched "10.0.0.1")
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1"?
+>>>    ╎list element: 10.0.0.1
+>>>    ╎host in "10.0.0.1"? yes (matched "10.0.0.1")
+>>>   end sublist auth_hosts
 >>>  host in auth_advertise_hosts? yes (matched "+auth_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
@@ -142,6 +158,9 @@ LOG: H=(test) [10.0.0.2] Warning: accepted ETRN #abcd
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -153,6 +172,9 @@ LOG: H=(test.host) [10.0.0.1] rejected VRFY userx@test.ex: authentication requir
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -165,6 +187,9 @@ LOG: ETRN abcd received from (test.host) [10.0.0.1]
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -194,6 +219,9 @@ LOG: H=(test.host) [10.0.0.1] rejected ETRN abcd: authentication required
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -228,6 +256,9 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@te
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -239,9 +270,12 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@te
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -268,6 +302,9 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@te
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -279,29 +316,35 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@te
 >>> check domains = +local_domains
 >>> cus.cam.ac.uk in "+local_domains"?
 >>>  list element: +local_domains
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> cus.cam.ac.uk in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 45)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
->>>  host in "10.0.0.4"?
->>>   list element: 10.0.0.4
->>>  host in "10.0.0.4"? no (end of list)
+>>>   start sublist relay_hosts
+>>>    host in "10.0.0.4"?
+>>>    ╎list element: 10.0.0.4
+>>>    host in "10.0.0.4"? no (end of list)
+>>>   end sublist relay_hosts
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 46)
 >>> check hosts = +auth_relay_hosts
 >>> host in "+auth_relay_hosts"?
 >>>  list element: +auth_relay_hosts
->>>  host in "10.0.0.3 : 10.0.0.4"?
->>>   list element: 10.0.0.3
->>>   list element: 10.0.0.4
->>>  host in "10.0.0.3 : 10.0.0.4"? no (end of list)
+>>>   start sublist auth_relay_hosts
+>>>    host in "10.0.0.3 : 10.0.0.4"?
+>>>    ╎list element: 10.0.0.3
+>>>    ╎list element: 10.0.0.4
+>>>    host in "10.0.0.3 : 10.0.0.4"? no (end of list)
+>>>   end sublist auth_relay_hosts
 >>> host in "+auth_relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "deny" (TESTSUITE/test-config 50)
@@ -314,6 +357,9 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> A=mylogin rejected RCPT
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -326,15 +372,18 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> A=mylogin rejected RCPT
 >>> end of ACL "check_vrfy": ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing userx@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> userx in "userx"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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 domains? no (matched "! +local_domains")
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling localuser router
 >>> routed by localuser router
 >>> using ACL "check_expn"
@@ -342,6 +391,9 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> A=mylogin rejected RCPT
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -358,15 +410,18 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> A=mylogin rejected RCPT
 >>> end of ACL "check_expn": ACCEPT
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing list@test.ex
->>> test.ex in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
->>>  test.ex in "! +local_domains"? no (matched "! +local_domains")
->>> list in "userx"?
+>>> test.ex in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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 domains? no (matched "! +local_domains")
+>>> list in local_parts?
 >>>  list element: userx
->>> list in "userx"? no (end of list)
+>>> list in local_parts? no (end of list)
 >>> no more routers
 LOG: ETRN #abcd received from (test.host) [10.0.0.1]
 >>> using ACL "check_etrn"
@@ -374,6 +429,9 @@ LOG: ETRN #abcd received from (test.host) [10.0.0.1]
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
@@ -426,17 +484,23 @@ LOG: H=(test.host) [10.0.0.1] Warning: accepted ETRN #abcd
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1"?
->>>   list element: 10.0.0.1
->>>  host in "10.0.0.1"? no (end of list)
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1"?
+>>>    ╎list element: 10.0.0.1
+>>>    host in "10.0.0.1"? no (end of list)
+>>>   end sublist auth_hosts
 >>>  list element: !+relay_hosts
->>>  host in "10.0.0.4"?
->>>   list element: 10.0.0.4
->>>  host in "10.0.0.4"? no (end of list)
+>>>   start sublist relay_hosts
+>>>    host in "10.0.0.4"?
+>>>    ╎list element: 10.0.0.4
+>>>    host in "10.0.0.4"? no (end of list)
+>>>   end sublist relay_hosts
 >>>  list element: +auth_relay_hosts
->>>  host in "10.0.0.3 : 10.0.0.4"?
->>>   list element: 10.0.0.3
->>>   host in "10.0.0.3 : 10.0.0.4"? yes (matched "10.0.0.3")
+>>>   start sublist auth_relay_hosts
+>>>    host in "10.0.0.3 : 10.0.0.4"?
+>>>    ╎list element: 10.0.0.3
+>>>    ╎host in "10.0.0.3 : 10.0.0.4"? yes (matched "10.0.0.3")
+>>>   end sublist auth_relay_hosts
 >>>  host in auth_advertise_hosts? yes (matched "+auth_relay_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
@@ -463,28 +527,39 @@ LOG: H=(test.host) [10.0.0.1] Warning: accepted ETRN #abcd
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached no match for +auth_hosts
+>>>  cached lookup data = NULL
 >>> host in "+auth_hosts"? no (end of list)
 >>> deny: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 44)
 >>> check domains = +local_domains
 >>> cus.cam.ac.uk in "+local_domains"?
 >>>  list element: +local_domains
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> cus.cam.ac.uk in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 45)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
+>>>   start sublist relay_hosts
+>>>  cached no match for +relay_hosts
+>>>  cached lookup data = NULL
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 46)
 >>> check hosts = +auth_relay_hosts
 >>> host in "+auth_relay_hosts"?
 >>>  list element: +auth_relay_hosts
+>>>   start sublist auth_relay_hosts
+>>>  cached yes match for +auth_relay_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_relay_hosts"? yes (matched "+auth_relay_hosts" - cached)
 >>>   message: authentication required
 >>> check authenticated = *
@@ -519,28 +594,39 @@ LOG: H=(test.host) [10.0.0.3] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@cu
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached no match for +auth_hosts
+>>>  cached lookup data = NULL
 >>> host in "+auth_hosts"? no (end of list)
 >>> deny: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 44)
 >>> check domains = +local_domains
 >>> cus.cam.ac.uk in "+local_domains"?
 >>>  list element: +local_domains
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>  cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   start sublist local_domains
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    cus.cam.ac.uk in "test.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
 >>> cus.cam.ac.uk in "+local_domains"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 45)
 >>> check hosts = +relay_hosts
 >>> host in "+relay_hosts"?
 >>>  list element: +relay_hosts
+>>>   start sublist relay_hosts
+>>>  cached no match for +relay_hosts
+>>>  cached lookup data = NULL
 >>> host in "+relay_hosts"? no (end of list)
 >>> accept: condition test failed in ACL "check_recipient"
 >>> processing "accept" (TESTSUITE/test-config 46)
 >>> check hosts = +auth_relay_hosts
 >>> host in "+auth_relay_hosts"?
 >>>  list element: +auth_relay_hosts
+>>>   start sublist auth_relay_hosts
+>>>  cached yes match for +auth_relay_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_relay_hosts"? yes (matched "+auth_relay_hosts" - cached)
 >>>   message: authentication required
 >>> check authenticated = *
@@ -579,17 +665,22 @@ LOG: H=(test.host) [10.0.0.3] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@cu
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1"?
->>>   list element: 10.0.0.1
->>>  host in "10.0.0.1"? no (end of list)
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1"?
+>>>    ╎list element: 10.0.0.1
+>>>    host in "10.0.0.1"? no (end of list)
+>>>   end sublist auth_hosts
 >>>  list element: !+relay_hosts
->>>  host in "10.0.0.4"?
->>>   list element: 10.0.0.4
->>>   host in "10.0.0.4"? yes (matched "10.0.0.4")
+>>>   start sublist relay_hosts
+>>>    host in "10.0.0.4"?
+>>>    ╎list element: 10.0.0.4
+>>>    ╎host in "10.0.0.4"? yes (matched "10.0.0.4")
+>>>   end sublist relay_hosts
 >>>  host in auth_advertise_hosts? no (matched "!+relay_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 seeking password data for user "CALLER": cache not available
index cf2811e62432adc0da8fd631c17447e837a095c4..d2fb903adc0c8609472b7ae132afd41074fae434 100644 (file)
@@ -1,7 +1,8 @@
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 delivering 10HmaX-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 ESMTP
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -30,7 +31,8 @@ LOG: MAIN
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 delivering 10HmaY-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 ESMTP
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
@@ -59,7 +61,8 @@ LOG: MAIN
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 delivering 10HmaZ-000000005vi-0000
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...  connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ...
+connected
   SMTP<< 220 ESMTP
   SMTP>> EHLO myhost.test.ex
   SMTP<< 250-OK
index 4a1132fec9460a0d8e41b09a559bed7aeed9d2f5..9ba9b2e1f96dbf56c734bb1012be2a7a3ab6513b 100644 (file)
@@ -154,9 +154,9 @@ LOG: 10HmaX-000000005vi-0000 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.
 >>> routing userx@exim.test.ex
 >>> calling system_aliases router
 >>> system_aliases router declined for userx@exim.test.ex
->>> userx in "userx"?
+>>> userx in local_parts?
 >>>  list element: userx
->>>  userx in "userx"? yes (matched "userx")
+>>>  userx in local_parts? yes (matched "userx")
 >>> calling list router
 >>> routed by list router
 >>> ----------- end verify ------------
@@ -165,9 +165,12 @@ LOG: 10HmaX-000000005vi-0000 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.
 >>> check domains = +local_domains
 >>> exim.test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  exim.test.ex in "exim.test.ex"?
->>>   list element: exim.test.ex
->>>   exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   start sublist local_domains
+>>>    exim.test.ex in "exim.test.ex"?
+>>>    ╎list element: exim.test.ex
+>>>    ╎exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
+>>>   end sublist local_domains
+>>>  data from lookup saved for cache for +local_domains: key 'exim.test.ex' value 'exim.test.ex'
 >>>  exim.test.ex in "+local_domains"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
index 1e6f32852deab369526d8b0438dfa527730a275d..997fd60904e66d599cece52c6e52a26e2c7584eb 100644 (file)
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1 : 10.0.0.5"?
->>>   list element: 10.0.0.1
->>>   list element: 10.0.0.5
->>>  host in "10.0.0.1 : 10.0.0.5"? no (end of list)
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1 : 10.0.0.5"?
+>>>    ╎list element: 10.0.0.1
+>>>    ╎list element: 10.0.0.5
+>>>    host in "10.0.0.1 : 10.0.0.5"? no (end of list)
+>>>   end sublist auth_hosts
 >>>  list element: !+relay_hosts
->>>  host in "10.0.0.4"?
->>>   list element: 10.0.0.4
->>>   host in "10.0.0.4"? yes (matched "10.0.0.4")
+>>>   start sublist relay_hosts
+>>>    host in "10.0.0.4"?
+>>>    ╎list element: 10.0.0.4
+>>>    ╎host in "10.0.0.4"? yes (matched "10.0.0.4")
+>>>   end sublist relay_hosts
 >>>  host in auth_advertise_hosts? no (matched "!+relay_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1 : 10.0.0.5"?
->>>   list element: 10.0.0.1
->>>   host in "10.0.0.1 : 10.0.0.5"? yes (matched "10.0.0.1")
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1 : 10.0.0.5"?
+>>>    ╎list element: 10.0.0.1
+>>>    ╎host in "10.0.0.1 : 10.0.0.5"? yes (matched "10.0.0.1")
+>>>   end sublist auth_hosts
 >>>  host in auth_advertise_hosts? yes (matched "+auth_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
@@ -88,6 +94,9 @@
 >>> check hosts = +auth_hosts
 >>> host in "+auth_hosts"?
 >>>  list element: +auth_hosts
+>>>   start sublist auth_hosts
+>>>  cached yes match for +auth_hosts
+>>>  cached lookup data = NULL
 >>>  host in "+auth_hosts"? yes (matched "+auth_hosts" - cached)
 >>>   message: authentication required
 >>> check !authenticated = *
 >>> check domains = +local_domains
 >>> test.ex in "+local_domains"?
 >>>  list element: +local_domains
->>>  test.ex in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
+>>>   start sublist local_domains
+>>>    test.ex in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎test.ex in "test.ex : *.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"? yes (matched "+local_domains")
 >>> accept: condition test succeeded in ACL "check_recipient"
 >>> end of ACL "check_recipient": ACCEPT
@@ -127,10 +139,12 @@ LOG: 10HmaY-000000005vi-0000 <= userx@some.domain H=(test.host) [10.0.0.1] P=esm
 >>>  host in pipelining_advertise_hosts? yes (matched "*")
 >>> host in auth_advertise_hosts?
 >>>  list element: +auth_hosts
->>>  host in "10.0.0.1 : 10.0.0.5"?
->>>   list element: 10.0.0.1
->>>   list element: 10.0.0.5
->>>   host in "10.0.0.1 : 10.0.0.5"? yes (matched "10.0.0.5")
+>>>   start sublist auth_hosts
+>>>    host in "10.0.0.1 : 10.0.0.5"?
+>>>    ╎list element: 10.0.0.1
+>>>    ╎list element: 10.0.0.5
+>>>    ╎host in "10.0.0.1 : 10.0.0.5"? yes (matched "10.0.0.5")
+>>>   end sublist auth_hosts
 >>>  host in auth_advertise_hosts? yes (matched "+auth_hosts")
 >>> host in chunking_advertise_hosts?
 >>> host in chunking_advertise_hosts? no (end of list)
index 93efa009aadfd4ccda210210cd543c31b2da8e2f..f902651497f4d426d5cfb81abf61d5f9748722b2 100644 (file)
@@ -1,9 +1,11 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@the.local.host.name U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -29,8 +31,9 @@ not using DSN
   SMTP|> RCPT TO:<extchange@test.ex>
   SMTP>> DATA
 cmd buf flush ddd bytes
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ... sending dd nonTFO early-data
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ...
+sending dd nonTFO early-data
+connected
 smtp_reap_early_pipe expect banner
   SMTP<< 220 banner
 smtp_reap_early_pipe expect ehlo
@@ -65,6 +68,7 @@ ok=1 send_quit=0 send_rset=0 continue_more=0 yield=0 first_address is NULL
   SMTP(close)>>
 cmdlog: 'EHLO|:MAIL|:RCPT|:DATA:220:250-:250:250:354:.:QUIT+:250:220'
 Leaving smtp transport
+>>>>>>>>>>>>>>>> Exim pid=p1243 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => extchange@test.ex R=client T=smtp H=127.0.0.1 [127.0.0.1] L* C="250 message accepted"
 LOG: MAIN
index fae0093b75f4078d0041ec3f000f6d7dd0a0a1fc..3b73b82f020ac3adac391c452f9888685f505df0 100644 (file)
@@ -1,14 +1,17 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...  connected
+Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -56,6 +59,7 @@ cmd buf flush ddd bytes (more expected)
   SMTP<< 221 myhost.test.ex closing connection
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:QUIT+:250:221'
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] DKIM=test.ex:sel_bad C="250 OK id=10HmbN-000000005vi-0000"
 LOG: MAIN
index 05f5a0468ef05c2930c496db1e2346021677df7c..0484105f56ee9b250094332e3f94520acd645885 100644 (file)
@@ -1,14 +1,17 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
 dropping to exim gid; retaining priv uid
-Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...  connected
+Connecting to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]:PORT_D ...
+connected
   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
@@ -22,6 +25,7 @@ cmd buf flush ddd bytes
   SMTP>> STARTTLS
 cmd buf flush ddd bytes
   SMTP<< 220 TLS go ahead
+ip4.ip4.ip4.ip4 in tls_verify_cert_hostnames? no (end of list)
   SMTP>> EHLO myhost.test.ex
 cmd buf flush ddd bytes
   SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
@@ -67,6 +71,7 @@ cmd buf flush ddd bytes
   SMTP<< 221 myhost.test.ex closing connection
   SMTP(close)>>
 cmdlog: '220:EHLO:250-:STARTTLS:220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:354:.:QUIT:250:221'
+>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
 LOG: MAIN
   => d@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] X=TLS1.x:ke-RSA-AES256-SHAnnn:xxx CV=yes DKIM=test.ex:sel_bad C="250 OK id=10HmbL-000000005vi-0000"
 LOG: MAIN
index 25abeaef63d646198489d44d3fda12d1ee8f7e20..72a915d0b79059e81d52bee1ae0e9b36d3b39c58 100644 (file)
@@ -1,20 +1,22 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx-sec-a-aa.test.ex (MX) using fakens
-DNS lookup of mx-sec-a-aa.test.ex (MX) succeeded
-DNS lookup of a-aa.test.ex (A) using fakens
-DNS lookup of a-aa.test.ex (A) succeeded
+ DNS lookup of mx-sec-a-aa.test.ex (MX) using fakens
+ DNS lookup of mx-sec-a-aa.test.ex (MX) succeeded
+ DNS lookup of a-aa.test.ex (A) using fakens
+ DNS lookup of a-aa.test.ex (A) succeeded
 DNS lookup of a-aa.test.ex (A/AAAA) requested AD, but got AA
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx-aa-a-sec.test.ex (MX) using fakens
-DNS lookup of mx-aa-a-sec.test.ex (MX) succeeded
-DNS lookup of mx-aa-a-sec.test.ex (MX) requested AD, but got AA
-DNS lookup of a-sec.test.ex (A) using fakens
-DNS lookup of a-sec.test.ex (A) succeeded
+ DNS lookup of mx-aa-a-sec.test.ex (MX) using fakens
+ DNS lookup of mx-aa-a-sec.test.ex (MX) succeeded
+ DNS lookup of mx-aa-a-sec.test.ex (MX) requested AD, but got AA
+ DNS lookup of a-sec.test.ex (A) using fakens
+ DNS lookup of a-sec.test.ex (A) succeeded
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 1f55809faed39915db70dd09f627e076508ccaa1..c22fbdc7f218f87ac2fca5dcfc783cec13e6c176 100644 (file)
@@ -1,24 +1,26 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx-sec-a-aa.test.ex (MX) using fakens
-DNS lookup of mx-sec-a-aa.test.ex (MX) succeeded
-DNS lookup of a-aa.test.ex (A) using fakens
-DNS lookup of a-aa.test.ex (A) succeeded
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS lookup of mx-sec-a-aa.test.ex (MX) using fakens
+ DNS lookup of mx-sec-a-aa.test.ex (MX) succeeded
+ DNS lookup of a-aa.test.ex (A) using fakens
+ DNS lookup of a-aa.test.ex (A) succeeded
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
-DNS lookup of mx-aa-a-sec.test.ex (MX) using fakens
-DNS lookup of mx-aa-a-sec.test.ex (MX) succeeded
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
-DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
-DNS lookup of a-sec.test.ex (A) using fakens
-DNS lookup of a-sec.test.ex (A) succeeded
+ DNS lookup of mx-aa-a-sec.test.ex (MX) using fakens
+ DNS lookup of mx-aa-a-sec.test.ex (MX) succeeded
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS faked the AD bit (got AA and matched with dns_trust_aa (test.ex in *))
+ DNS lookup of a-sec.test.ex (A) using fakens
+ DNS lookup of a-sec.test.ex (A) succeeded
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 843b20242bd74a1e87c03817e9e80182a3ddb9a0..7ff1d8f2deb4729910bd06b2a5797e41ff5c7710 100644 (file)
@@ -1,10 +1,12 @@
 1999-03-02 09:44:33 10HmaX-000000005vi-0000 == userx@myhost.test.ex R=localuser T=maildir_tagged_appendfile defer (-1): Expansion of "${if eq{0}{1}{rhubarb}" (maildir_tag for maildir_tagged_appendfile transport) failed: syntax error in "if" item - "fail" expected
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -43,6 +45,7 @@ mailbox quota exceeded
 maildir: time since "new" directory modified = 10s
 Exim quota exceeded for tmp/dddddddddd.HddddddPddddd.myhost.test.ex
 appendfile yields 1 with errno=-22 more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 maildir_taggedX_appendfile transport returned DEFER for userx@myhost.test.ex
 added retry item for T:userx@myhost.test.ex: errno=-22 more_errno=dd flags=0
 LOG: MAIN
index dd3ddcf1f68ee38cae5059cec775196fa63f2f81..6ab926c431756bae91ea0d672d79b2a1f5c48015 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -49,6 +50,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -74,8 +76,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -112,8 +112,6 @@ r1 router generated TESTSUITE/test-mail
 routed by r1 router
   envelope to: userx@test.ex
   transport: <none>
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -132,8 +130,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> TESTSUITE/test-mail <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -161,6 +157,7 @@ renaming temporary file
 renamed tmp/MAILDIR.mail.test.ex as new/MAILDIR.mail.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1237 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling TESTSUITE/test-mail:userx@test.ex
 t1 transport returned OK for TESTSUITE/test-mail
 post-process TESTSUITE/test-mail (0)
index d9041e69fe15c853c932b11058a8a62ef14e741e..6620345bfd2ddb8f96f3a1203cc761ec9ee429ce 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -47,6 +48,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -70,8 +72,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   nofile@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -107,8 +107,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> nofile@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -124,7 +122,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/nofile'
+below-home: de-tainting path 'TESTSUITE/test-mail/nofile'
 ensuring maildir directories exist in TESTSUITE/test-mail/nofile
 created directory TESTSUITE/test-mail/nofile
 created directory TESTSUITE/test-mail/nofile/tmp
@@ -157,6 +155,7 @@ renaming temporary file
 renamed tmp/MAILDIR.myhost.test.ex as new/MAILDIR.myhost.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling nofile@test.ex
 t1 transport returned OK for nofile@test.ex
 post-process nofile@test.ex (0)
@@ -190,6 +189,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1237
 configuration file is TESTSUITE/test-config
@@ -237,6 +237,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaY-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1238
 configuration file is TESTSUITE/test-config
@@ -260,8 +261,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -297,8 +296,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -314,7 +311,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
 created directory TESTSUITE/test-mail/userx/new
@@ -349,6 +346,7 @@ renaming temporary file
 renamed tmp/MAILDIR.myhost.test.ex as new/MAILDIR.myhost.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@test.ex
 t1 transport returned OK for userx@test.ex
 post-process userx@test.ex (0)
@@ -382,6 +380,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1240
 configuration file is TESTSUITE/test-config
@@ -429,6 +428,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaZ-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1241
 configuration file is TESTSUITE/test-config
@@ -452,8 +452,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -489,8 +487,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -506,7 +502,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 compiling RE '^(?:cur|new|\..*)$'
 using regex for maildir directory selection: ^(?:cur|new|\..*)$
@@ -536,6 +532,7 @@ maildir: time since "new" directory modified = 10s
 Exim quota exceeded for tmp/dddddddddd.HddddddPddddd.myhost.test.ex
 appendfile yields 1 with errno=-22 more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1242 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned DEFER for userx@test.ex
 added retry item for T:userx@test.ex: errno=-22 more_errno=dd flags=0
 post-process userx@test.ex (1)
@@ -550,8 +547,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  userx@test.ex
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -564,13 +559,14 @@ Deferred addresses:
   userx@test.ex in "*"? yes (matched "*")
 retry for T:userx@test.ex = * 0 0
  dbfn_read: key=T:userx@test.ex
+ dbfn_read: null return
 failing_interval=ttt message_age=ttt
 Writing retry data for T:userx@test.ex
   first failed=dddd last try=dddd next try=+86400 expired=0
   errno=-22 more_errno=dd mailbox is full (MTA-imposed quota exceeded while writing to tmp/MAILDIR.myhost.test.ex)
- dbfn_write: key=T:userx@test.ex
+ dbfn_write: key=T:userx@test.ex datalen 154
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 end of retry processing
 delivery deferred: update_spool=1 header_rewritten=0
 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaZ-000000005vi-0000
@@ -584,6 +580,7 @@ search_tidyup called
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1243
 configuration file is TESTSUITE/test-config
@@ -631,6 +628,7 @@ LOG: MAIN
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmbA-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1244
 configuration file is TESTSUITE/test-config
@@ -654,8 +652,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
@@ -663,13 +659,16 @@ Delivery address list:
 Considering: userx@test.ex
 unique = userx@test.ex
  dbfn_read: key=R:test.ex
+ dbfn_read: null return
  dbfn_read: key=R:userx@test.ex
+ dbfn_read: null return
  dbfn_read: key=R:userx@test.ex:<CALLER@test.ex>
+ dbfn_read: null return
 no   domain  retry record
 no   address retry record
 userx@test.ex: queued for routing
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 routing userx@test.ex
 --------> r1 router <--------
@@ -695,16 +694,15 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDONLY
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDONLY
  dbfn_read: key=T:userx@test.ex
+ dbfn_read: size 154 return
 retry record exists: age=ttt (max 1w)
   time to retry = tttt expired = 0
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 search_tidyup called
 changed uid/gid: local delivery to userx <userx@test.ex> transport=t1
   uid=CALLER_UID gid=CALLER_GID pid=p1245
@@ -716,7 +714,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 compiling RE '^(?:cur|new|\..*)$'
 using regex for maildir directory selection: ^(?:cur|new|\..*)$
@@ -733,6 +731,7 @@ maildir: time since "new" directory modified = 10s
 Exim quota exceeded for tmp/dddddddddd.HddddddPddddd.myhost.test.ex
 appendfile yields 1 with errno=-22 more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1245 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned DEFER for userx@test.ex
 added retry item for T:userx@test.ex: errno=-22 more_errno=dd flags=0
 post-process userx@test.ex (1)
@@ -747,8 +746,6 @@ Succeeded addresses:
 Failed addresses:
 Deferred addresses:
  userx@test.ex
- locking TESTSUITE/spool/db/retry.lockfile
- locked  TESTSUITE/spool/db/retry.lockfile
  EXIM_DBOPEN: file <TESTSUITE/spool/db/retry> dir <TESTSUITE/spool/db> flags=O_RDWR
  returned from EXIM_DBOPEN: 0xAAAAAAAA
  opened hints database TESTSUITE/spool/db/retry: flags=O_RDWR
@@ -761,13 +758,14 @@ Deferred addresses:
   userx@test.ex in "*"? yes (matched "*")
 retry for T:userx@test.ex = * 0 0
  dbfn_read: key=T:userx@test.ex
+ dbfn_read: size 154 return
 failing_interval=ttt message_age=ttt
 Writing retry data for T:userx@test.ex
   first failed=dddd last try=dddd next try=+86400 expired=0
   errno=-22 more_errno=dd mailbox is full (MTA-imposed quota exceeded while writing to tmp/MAILDIR.myhost.test.ex)
- dbfn_write: key=T:userx@test.ex
+ dbfn_write: key=T:userx@test.ex datalen 154
  EXIM_DBCLOSE(0xAAAAAAAA)
- closed hints database and lockfile
+ closed hints database
 end of retry processing
 delivery deferred: update_spool=1 header_rewritten=0
 Writing spool header file: TESTSUITE/spool//input//hdr.10HmbA-000000005vi-0000
index 864a726f54ec7d4556b7343e00a7861460187080..01e2ee923c7b8b880d92cee2e72efc7e4ae8ed42 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=CALLER_GID pid=p1234
 configuration file is TESTSUITE/test-config
@@ -47,6 +48,7 @@ created log directory TESTSUITE/spool/log
 search_tidyup called
 exec TESTSUITE/eximdir/exim -DEXIM_PATH=TESTSUITE/eximdir/exim -C TESTSUITE/test-config -d=0xf7715cfd -MCd local-accept-delivery -odi -Mc 10HmaX-000000005vi-0000
 Exim version x.yz ....
+Hints DB:
 changed uid/gid: forcing real = effective
   uid=uuuu gid=EXIM_GID pid=p1235
 configuration file is TESTSUITE/test-config
@@ -70,8 +72,6 @@ body_linecount=1 message_linecount=8
 DSN: set orcpt:   flags: 0x0
 Delivery address list:
   userx@test.ex 
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -107,8 +107,6 @@ After routing:
 search_tidyup called
 >>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
 --------> userx@test.ex <--------
- locking TESTSUITE/spool/db/retry.lockfile
- 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)
  failed to open DB file TESTSUITE/spool/db/retry: No such file or directory
@@ -124,7 +122,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=50%
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
@@ -155,6 +153,7 @@ renaming temporary file
 renamed tmp/MAILDIR.myhost.test.ex as new/MAILDIR.myhost.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
 search_tidyup called
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 journalling userx@test.ex
 t1 transport returned OK for userx@test.ex
 post-process userx@test.ex (0)
index 648ebd0461191f894acfc74d3cdaeb6281e8b813..3a572fab1e1a76f2f61279e3af37c9dc251fd31e 100644 (file)
@@ -1,10 +1,12 @@
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 created log directory TESTSUITE/spool/log
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -17,7 +19,7 @@ appendfile: mode=600 notify_comsat=0 quota=1048576 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=no
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
@@ -32,6 +34,7 @@ writing data block fd=dddd size=sss timeout=0
 renaming temporary file
 renamed tmp/MAILDIR.myhost.test.ex as new/MAILDIR.myhost.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for userx@test.ex
 LOG: MAIN
   => userx <userx@test.ex> R=r1 T=t1
@@ -40,11 +43,13 @@ LOG: MAIN
 >>>>>>>>>>>>>>>> Exim pid=p1235 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 LOG: MAIN
   <= CALLER@test.ex U=CALLER P=local S=sss
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 trusted user
 admin user
@@ -57,7 +62,7 @@ appendfile: mode=600 notify_comsat=0 quota=1048576 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=no
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 quota checks on directory TESTSUITE/test-mail/userx
 MUNGED: the check_dir_size lines have been sorted to ensure consistency
@@ -74,10 +79,11 @@ writing data block fd=dddd size=sss timeout=0
 renaming temporary file
 renamed tmp/MAILDIR.myhost.test.ex as new/MAILDIR.myhost.test.ex
 appendfile yields 0 with errno=dd more_errno=dd
+>>>>>>>>>>>>>>>> Exim pid=p1239 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
 t1 transport returned OK for userx@test.ex
 LOG: MAIN
   => userx <userx@test.ex> R=r1 T=t1
 LOG: MAIN
   Completed
->>>>>>>>>>>>>>>> Exim pid=p1237 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1238 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
index 6f3c13e1088ba0269797987c3fd8f83f4fde3c1d..d2f5482588c330c201d5b02cb96d922cc75401ed 100644 (file)
@@ -1,6 +1,7 @@
 LOG: MAIN
   remote host address is the local host: some.host (while routing <"ACCEPT hosts=localhost lookup=byname"@some.host>)
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -9,10 +10,14 @@ routing "DECLINE cannot route this one (DECLINE)"@some.host
 --------> b router <--------
 local_part=decline cannot route this one (decline) domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=DECLINE cannot route this one (DECLINE) domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "DECLINE cannot route this one (DECLINE)"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -22,6 +27,7 @@ q router declined for "DECLINE cannot route this one (DECLINE)"@some.host
 no more routers
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -30,10 +36,14 @@ routing "FAIL cannot route this one (FAIL)"@some.host
 --------> b router <--------
 local_part=fail cannot route this one (fail) domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=FAIL cannot route this one (FAIL) domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "FAIL cannot route this one (FAIL)"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -41,6 +51,7 @@ command wrote: FAIL cannot route this one (FAIL)
 q router forced address failure
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=2 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -49,10 +60,14 @@ routing "ERROR cannot route this one (ERROR)"@some.host
 --------> b router <--------
 local_part=error cannot route this one (error) domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=ERROR cannot route this one (ERROR) domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "ERROR cannot route this one (ERROR)"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -63,6 +78,7 @@ q router: defer for "ERROR cannot route this one (ERROR)"@some.host
   message: bad command yield: ERROR cannot route this one (ERROR)
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -71,10 +87,14 @@ routing "DEFER cannot route this one (DEFER)"@some.host
 --------> b router <--------
 local_part=defer cannot route this one (defer) domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=DEFER cannot route this one (DEFER) domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "DEFER cannot route this one (DEFER)"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -83,6 +103,7 @@ q router: defer for "DEFER cannot route this one (DEFER)"@some.host
   message: cannot route this one (DEFER)
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -91,10 +112,14 @@ routing "ACCEPT transport = other_smtp hosts=ten-1.test.ex"@some.host
 --------> b router <--------
 local_part=accept transport = other_smtp hosts=ten-1.test.ex domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=ACCEPT transport = other_smtp hosts=ten-1.test.ex domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "ACCEPT transport = other_smtp hosts=ten-1.test.ex"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -111,6 +136,7 @@ routed by q router
   host ten-1.test.ex [V4NET.0.0.1]
 >>>>>>>>>>>>>>>> Exim pid=p1238 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -119,10 +145,14 @@ routing PASS@some.host
 --------> b router <--------
 local_part=pass domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=PASS domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for PASS@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -131,6 +161,7 @@ q router passed for PASS@some.host
 --------> s router <--------
 local_part=pass domain=some.host
 checking domains
+some.host in domains? yes (end of list)
 calling s router
 s router called for PASS@some.host
   domain = some.host
@@ -151,6 +182,7 @@ routed by s router
   host 127.0.0.1 [127.0.0.1]
 >>>>>>>>>>>>>>>> Exim pid=p1239 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -159,10 +191,14 @@ routing "FREEZE cannot route this one (FREEZE)"@some.host
 --------> b router <--------
 local_part=freeze cannot route this one (freeze) domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=FREEZE cannot route this one (FREEZE) domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "FREEZE cannot route this one (FREEZE)"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -171,6 +207,7 @@ q router: defer for "FREEZE cannot route this one (FREEZE)"@some.host
   message: cannot route this one (FREEZE)
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=1 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
@@ -179,10 +216,14 @@ routing "REDIRECT postmaster@test.ex"@some.host
 --------> b router <--------
 local_part=redirect postmaster@test.ex domain=some.host
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=REDIRECT postmaster@test.ex domain=some.host
 checking domains
+some.host in "test.ex"? no (end of list)
+some.host in domains? yes (end of list)
 calling q router
 q router called for "REDIRECT postmaster@test.ex"@some.host: domain = some.host
 requires uid=EXIM_UID gid=EXIM_GID current_directory=/
@@ -201,6 +242,8 @@ routing postmaster@test.ex
 --------> b router <--------
 local_part=postmaster domain=test.ex
 checking senders
+myhost.test.ex in ""? no (end of list)
+CALLER@myhost.test.ex in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=postmaster domain=test.ex
@@ -226,6 +269,7 @@ routed by pm router
   transport: null
 >>>>>>>>>>>>>>>> Exim pid=p1241 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 configuration file is TESTSUITE/test-config
 admin user
 host in hosts_connection_nolog? no (option unset)
@@ -257,21 +301,23 @@ routing "FAIL cannot route this one (FAIL)"@some.host
 --------> b router <--------
 local_part=fail cannot route this one (fail) domain=some.host
 checking senders
-x@y in ":"?
+x@y in senders?
  list element: 
  y in ""?
  y in ""? no (end of list)
-x@y in ":"? no (end of list)
+x@y in senders? no (end of list)
 b router skipped: senders mismatch
 --------> q router <--------
 local_part=FAIL cannot route this one (FAIL) domain=some.host
 checking domains
-some.host in "! +local_domains"?
- list element: ! +local_domains
- some.host in "test.ex"?
-  list element: test.ex
- some.host in "test.ex"? no (end of list)
-some.host in "! +local_domains"? yes (end of list)
+some.host in domains?
+ list element: !░+local_domains
+  start sublist local_domains
+   some.host in "test.ex"?
+   ╎list element: test.ex
+   some.host in "test.ex"? no (end of list)
+  end sublist local_domains
+some.host in domains? yes (end of list)
 calling q router
 q router called for "FAIL cannot route this one (FAIL)"@some.host: domain = some.host
 requires uid=CALLER_UID gid=CALLER_GID current_directory=/
index 3de6f402476efdfd2e637124b03ab06828758306..b173280d163e0d568cf2a1dc039bc12a9ce82f28 100644 (file)
@@ -68,18 +68,20 @@ LOG: rcpt for verify@domain.com
 >>> check verify = recipient/callout=use_sender
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing verify@domain.com
->>> domain.com in "localhost.test.ex : localhost4.test.ex : thishost.test.ex"?
+>>> domain.com in domains?
 >>>  list element: localhost.test.ex
 >>>  list element: localhost4.test.ex
 >>>  list element: thishost.test.ex
->>> domain.com in "localhost.test.ex : localhost4.test.ex : thishost.test.ex"? no (end of list)
->>> domain.com in "! +local_domains"?
->>>  list element: ! +local_domains
->>>  domain.com in "test.ex : *.test.ex"?
->>>   list element: test.ex
->>>   list element: *.test.ex
->>>  domain.com in "test.ex : *.test.ex"? no (end of list)
->>> domain.com in "! +local_domains"? yes (end of list)
+>>> domain.com in domains? no (end of list)
+>>> domain.com in domains?
+>>>  list element: !░+local_domains
+>>>   start sublist local_domains
+>>>    domain.com in "test.ex : *.test.ex"?
+>>>    ╎list element: test.ex
+>>>    ╎list element: *.test.ex
+>>>    domain.com in "test.ex : *.test.ex"? no (end of list)
+>>>   end sublist local_domains
+>>> domain.com in domains? yes (end of list)
 >>> calling all router
 >>> domain.com in "special.com"?
 >>>  list element: special.com
@@ -96,9 +98,10 @@ MUNGED: ::1 will be omitted in what follows
 >>> Attempting full verification using callout
 >>> callout cache: disabled by no_cache
 >>> interface=ip4.ip4.ip4.ip4 port=PORT_S
->>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from ip4.ip4.ip4.ip4 ... 127.0.0.1 in hosts_try_fastopen?
->>>  list element: 
->>> >>>  connected
+>>> Connecting to 127.0.0.1 [127.0.0.1]:PORT_S from ip4.ip4.ip4.ip4 ...
+>>>  127.0.0.1 in hosts_try_fastopen?
+>>>   list element: 
+>>> connected
 >>>   SMTP<< 220 server ready
 >>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
 >>>   SMTP>> EHLO myhost.test.ex
index 876846e0df1ea7ec2649d8cc3f993b90c29c67cf..9b4f0ff8a60403e65f8ed433af6a26b3f0dd6a0d 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -72,15 +73,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -95,20 +96,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -123,12 +123,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -288,354 +288,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaX-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: userx@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░userx@domain.com
+  for░userx@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░userx@domain.com
for░userx@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmaX-000000005vi-0000↩
      for░userx@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmaX-000000005vi-0000↩
for░userx@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
@@ -658,6 +656,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -731,15 +730,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -754,20 +753,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -782,12 +780,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -897,354 +895,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaZ-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: usery@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░usery@domain.com
+  for░usery@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░usery@domain.com
for░usery@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmaZ-000000005vi-0000↩
      for░usery@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmaZ-000000005vi-0000↩
for░usery@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
@@ -1267,6 +1263,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -1340,15 +1337,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -1363,20 +1360,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -1391,12 +1387,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -1506,354 +1502,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmbB-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: usery@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░usery@domain.com
+  for░usery@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░usery@domain.com
for░usery@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmbB-000000005vi-0000↩
      for░usery@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmbB-000000005vi-0000↩
for░usery@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
index 3ee112b8cf4c88c7569c743b3f873ecc332cb19f..caa9e0de015c63847f7fc542e4d72d4af50461e9 100644 (file)
@@ -1,4 +1,5 @@
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -72,15 +73,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -95,20 +96,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -123,12 +123,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -288,354 +288,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaX-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: userx@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░userx@domain.com
+  for░userx@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░userx@domain.com
for░userx@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmaX-000000005vi-0000↩
      for░userx@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmaX-000000005vi-0000↩
for░userx@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
@@ -658,6 +656,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -731,15 +730,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -754,20 +753,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -782,12 +780,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -897,354 +895,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmaZ-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: usery@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░usery@domain.com
+  for░usery@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░usery@domain.com
for░usery@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmaZ-000000005vi-0000↩
      for░usery@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmaZ-000000005vi-0000↩
for░usery@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
@@ -1267,6 +1263,7 @@ LOG: smtp_connection MAIN
   SMTP connection from CALLER D=qqs closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -1340,15 +1337,15 @@ using ACL "cutthrough"
 processing "accept" (TESTSUITE/test-config 22)
 check control = cutthrough_delivery
 check verify = recipient
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -1363,20 +1360,19 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 ----------- end verify ------------
 accept: condition test succeeded in ACL "cutthrough"
 end of ACL "cutthrough": ACCEPT
 ----------- start cutthrough setup ------------
-domain.com in "! +local_domains"?
- list element: ! +local_domains
+domain.com in domains?
+ list element: !+local_domains
   start sublist local_domains
    domain.com in "test.ex : *.test.ex"?
    ╎list element: test.ex
    ╎list element: *.test.ex
    domain.com in "test.ex : *.test.ex"? no (end of list)
   end sublist local_domains
-domain.com in "! +local_domains"? yes (end of list)
+domain.com in domains? yes (end of list)
 try option router_home_directory
 try option set
 processing address_data
@@ -1391,12 +1387,12 @@ domain.com in "*"?
  domain.com in "*"? yes (matched "*")
 try option transport
 try option unseen
-try option unseen
 try option interface
-Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ... try option dscp
-127.0.0.1 in hosts_try_fastopen?
- list element: 
- connected
+Connecting to 127.0.0.1 [127.0.0.1]:PORT_D from ip4.ip4.ip4.ip4 ...
+try option dscp
+ 127.0.0.1 in hosts_try_fastopen?
+  list element: 
+connected
 try option helo_data
  ╭considering: $primary_hostname
  ├──────value: myhost.test.ex
@@ -1506,354 +1502,352 @@ try option message_id_header_text
  ╰─────result: Tue,░2░Mar░1999░09:44:33░+0000
 try option received_header_text
  ╭considering: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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: 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}}
}{${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↩
-       }{${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}}
+  }{${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: 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}}
+  }{${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}}
   ├──────value: 
   ├───scanning: ↩
-       }{${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }{${if░def:sender_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}}
+  }}}}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}}
   ├───expanded: from░$sender_rcvhost↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: ${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}}
+  }}}}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_ident
   ├─────result: true
    ╭considering: 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}}
+   }}}}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: 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}}
+   }}}}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}}
+   ╎}}}}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}}
    ╎├──────value: CALLER
    ╎├considering: }░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-   ╎ }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-   ╎ }}(Exim░$version_number)↩
-   ╎ ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-   ╎ }}id░$message_exim_id${if░def:received_for░{↩
-   ╎ for░$received_for}}
+   ╎}}}}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}}
    ╎├───expanded: $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}}
+   }}}}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}}
+   }}}}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}}
    ├───expanded: 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}}
+  }}}}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: true
    ╭considering: (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}}
+   }}}}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: (helo=
    ├considering: $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}}
+   }}}}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}}
    ├──────value: myhost.test.ex
               ╰──(tainted)
    ├considering: )↩
-       }}}}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+   }}}}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: }}}}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}}
+   }}(Exim░$version_number)↩
+   ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+   }}id░$message_exim_id${if░def:received_for░{↩
+   for░$received_for}}
    ├───expanded: (helo=$sender_helo_name)↩
-       
+   ␉
    ╰─────result: (helo=myhost.test.ex)↩
-       
+   ␉
               ╰──(tainted)
   ├───item-res: (helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
   ├considering: }}by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───expanded: ${if░def:sender_ident░{from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
-       }}
+  }}
   ╰─────result: from░CALLER░(helo=myhost.test.ex)↩
-       
+  ␉
              ╰──(tainted)
  ├───item-res: from░CALLER░(helo=myhost.test.ex)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: by░$primary_hostname░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: myhost.test.ex
  ├considering: ░${if░def:received_protocol░{with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}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}}
  ├───────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}}
}}(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↩
-       }}(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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: local-esmtp
   ├considering: ░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: with░$received_protocol░
   ╰─────result: with░local-esmtp░
  ├───item-res: with░local-esmtp░
             ╰──(tainted)
  ├considering: ${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
}}(Exim░$version_number)↩
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░($tls_in_ver)
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}}(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
   ╭───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}}
   ├───────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}}
+  }}(Exim░$version_number)↩
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: 
   ├───scanning: ↩
-       }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}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}}
   ├───────text: ↩
-       
+  ␉
   ├───scanning: }}(Exim░$version_number)↩
-       ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───expanded: ░tls░$tls_in_cipher_std↩
-       
+  ␉
   ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├───item-res: 
             ╰──(tainted)
  ├considering: (Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
${if░def:sender_address░{(envelope-from░<$sender_address>)↩
}}id░$message_exim_id${if░def:received_for░{↩
for░$received_for}}
  ├──────value: x.yz
  ├considering: )↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
${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}}
}}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}}
+  }}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}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├──────value: CALLER@myhost.test.ex
   ├considering: >)↩
-       }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  }}id░$message_exim_id${if░def:received_for░{↩
+  for░$received_for}}
   ├───────text: >)↩
-       
+  ␉
   ├considering: }}id░$message_exim_id${if░def:received_for░{↩
-       for░$received_for}}
+  for░$received_for}}
   ├───expanded: (envelope-from░<$sender_address>)↩
-       
+  ␉
   ╰─────result: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+  ␉
  ├───item-res: (envelope-from░<CALLER@myhost.test.ex>)↩
-       
+ ␉
             ╰──(tainted)
  ├considering: id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├───────text: id░
  ├considering: $message_exim_id${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──────value: 10HmbB-000000005vi-0000
  ├considering: ${if░def:received_for░{↩
      for░$received_for}}
for░$received_for}}
  ├──condition: def:received_for
  ├─────result: true
   ╭considering: ↩
-       for░$received_for}}
+  for░$received_for}}
   ├───────text: ↩
-       for░
+  for░
   ├considering: $received_for}}
   ├──────value: usery@domain.com
              ╰──(tainted)
   ├considering: }}
   ├───expanded: ↩
-       for░$received_for
+  for░$received_for
   ╰─────result: ↩
-       for░usery@domain.com
+  for░usery@domain.com
              ╰──(tainted)
  ├───item-res: ↩
      for░usery@domain.com
for░usery@domain.com
             ╰──(tainted)
  ├───expanded: 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↩
      }}(Exim░$version_number)↩
      ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
      }}id░$message_exim_id${if░def:received_for░{↩
      for░$received_for}}
}{${if░def:sender_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}}
  ╰─────result: Received:░from░CALLER░(helo=myhost.test.ex)↩
      by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
      (envelope-from░<CALLER@myhost.test.ex>)↩
      id░10HmbB-000000005vi-0000↩
      for░usery@domain.com
by░myhost.test.ex░with░local-esmtp░(Exim░x.yz)↩
(envelope-from░<CALLER@myhost.test.ex>)↩
id░10HmbB-000000005vi-0000↩
for░usery@domain.com
             ╰──(tainted)
 ----------- start cutthrough headers send -----------
 ----------- done cutthrough headers send ------------
-try option acl_smtp_dkim
-try option acl_smtp_mime
 try option acl_smtp_data
  ╭considering: ${tod_full}
  ├───expanded: ${tod_full}
index 2dff7ec027f1746ede9e8b108a89b6c7084e2b76..362fffd9499ac8b57769f59902cfebeb5c14ac19 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing rcptuser@dane256ee.test.ex
 >>> calling client router
->>> dane256ee.test.ex in "*"?
->>>  list element: *
->>>  dane256ee.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   dane256ee.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   dane256ee.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    dane256ee.test.ex in dnssec_request_domains? yes (matched "*")
 >>> local host found for non-MX address
 >>> routed by client router
 >>> Attempting full verification using callout
 >>>  list element: ip4.ip4.ip4.ip4
 >>>  ip4.ip4.ip4.ip4 in hosts_require_dane? yes (matched "ip4.ip4.ip4.ip4")
 >>> interface=NULL port=PORT_D
->>> Connecting to dane256ee.test.ex [ip4.ip4.ip4.ip4]:PORT_D ... ip4.ip4.ip4.ip4 in hosts_try_fastopen?
->>>  list element: 
->>> >>>  connected
+>>> Connecting to dane256ee.test.ex [ip4.ip4.ip4.ip4]:PORT_D ...
+>>>  ip4.ip4.ip4.ip4 in hosts_try_fastopen?
+>>>   list element: 
+>>> connected
 >>>   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
 >>> ip4.ip4.ip4.ip4 in hosts_avoid_esmtp? no (option unset)
 >>>   SMTP>> EHLO myhost.test.ex
index 59e479de658e7d232c53bb522b541c3d9f10e4e3..8da93ab49fa189160bf23f36114585fc9e26ca12 100644 (file)
 >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 >>> routing rcptuser@dane256ee.test.ex
 >>> calling client router
->>> dane256ee.test.ex in "*"?
->>>  list element: *
->>>  dane256ee.test.ex in "*"? yes (matched "*")
+>>>  check dnssec require list
+>>>   dane256ee.test.ex in dnssec_require_domains? no (option unset)
+>>>  check dnssec request list
+>>>   dane256ee.test.ex in dnssec_request_domains?
+>>>    list element: *
+>>>    dane256ee.test.ex in dnssec_request_domains? yes (matched "*")
 >>> local host found for non-MX address
 >>> routed by client router
 >>> Attempting full verification using callout
 >>>  list element: ip4.ip4.ip4.ip4
 >>>  ip4.ip4.ip4.ip4 in hosts_require_dane? yes (matched "ip4.ip4.ip4.ip4")
 >>> interface=NULL port=PORT_D
->>> Connecting to dane256ee.test.ex [ip4.ip4.ip4.ip4]:PORT_D ... ip4.ip4.ip4.ip4 in hosts_try_fastopen?
->>>  list element: 
->>> >>>  connected
+>>> Connecting to dane256ee.test.ex [ip4.ip4.ip4.ip4]:PORT_D ...
+>>>  ip4.ip4.ip4.ip4 in hosts_try_fastopen?
+>>>   list element: 
+>>> connected
 >>>   SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
 >>> ip4.ip4.ip4.ip4 in hosts_avoid_esmtp? no (option unset)
 >>>   SMTP>> EHLO myhost.test.ex
index f31f368eb4828b7b020804eb2895ec8f62219a6f..16fcbe1d0ab9597e24fc536a901111f38ee11a1a 100644 (file)
 250-PIPELINING\r
 250 HELP\r
 250 OK\r
-250 Reset OK\r
-250-the.local.host.name Hello foo.bar [127.0.0.1]\r
-250-SIZE 52428800\r
-250-LIMITS MAILMAX=1000 RCPTMAX=50000\r
-250-8BITMIME\r
-250-PIPELINING\r
-250 HELP\r
-250 OK\r
 221 the.local.host.name closing connection\r
index 159ebfabb5818ec2f91d9d65992ae78673022877..a4c1fb4ff759198c724d4dc6155c39190533418c 100644 (file)
@@ -1,10 +1,10 @@
 +++++++++++++++++++++++++++
-  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/userx)
+  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 600
 +++++++++++++++++++++++++++
-  T:test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/notuser)
+  T:test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 1200
-  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/userx)
+  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 600
 Message 10HmaX-000000005vi-0000 has been removed
 Message 10HmbA-000000005vi-0000 has been removed
index 1fa2305cd7d49d778b706091665fd6ce8941c992..a3c51fa64ee50ae511a1d8f19002847961fb02a9 100644 (file)
@@ -1,14 +1,14 @@
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20
 -rw------- 1 CALLER CALLER 0 May 10 2002 TESTSUITE/test-mail/a
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 0 *
-  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/CALLER)
+  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 0 *
-  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/CALLER)
+  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20
index aa3af08c50ede656c509e70141364a34f3f48889..1f42f534aa0d67db2f9a791164c3cf56297be5e9 100644 (file)
@@ -32,14 +32,14 @@ DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@test.ex>)
-       id 10HmbA-000000005vi-0000
+       id 10HmaY-000000005vi-0000
        for userx@domain1;
        Tue, 2 Mar 1999 09:44:33 +0000
-Message-Id: <E10HmbA-000000005vi-0000@the.local.host.name>
+Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@test.ex>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
-Test message 4
+Test message 2
 .
 250 OK
 MAIL FROM:<CALLER@test.ex>
@@ -68,14 +68,14 @@ DATA
 354 More...
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@test.ex>)
-       id 10HmaY-000000005vi-0000
+       id 10HmbA-000000005vi-0000
        for userx@domain1;
        Tue, 2 Mar 1999 09:44:33 +0000
-Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
+Message-Id: <E10HmbA-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@test.ex>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
-Test message 2
+Test message 4
 .
 250 OK
 QUIT
index 5a3fbed6ccc9e233dcc2fe6d21fc1b8032549ac4..59fb726c35aaef0d2bfcc878f98cae127a7dcfb4 100644 (file)
@@ -25,38 +25,38 @@ First message
 250 OK
 MAIL FROM:<CALLER@myhost.test.ex>
 250 OK
-RCPT TO:<x3@y3>
+RCPT TO:<x2@y2>
 250 OK
 DATA
 354 OK
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmaZ-000000005vi-0000
-       for x3@y3;
+       id 10HmaY-000000005vi-0000
+       for x2@y2;
        Tue, 2 Mar 1999 09:44:33 +0000
-Message-Id: <E10HmaZ-000000005vi-0000@myhost.test.ex>
+Message-Id: <E10HmaY-000000005vi-0000@myhost.test.ex>
 From: CALLER_NAME <CALLER@myhost.test.ex>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
-Third message
+Second message
 .
 250 OK
 MAIL FROM:<CALLER@myhost.test.ex>
 250 OK
-RCPT TO:<x2@y2>
+RCPT TO:<x3@y3>
 250 OK
 DATA
 354 OK
 Received: from CALLER by myhost.test.ex with local (Exim x.yz)
        (envelope-from <CALLER@myhost.test.ex>)
-       id 10HmaY-000000005vi-0000
-       for x2@y2;
+       id 10HmaZ-000000005vi-0000
+       for x3@y3;
        Tue, 2 Mar 1999 09:44:33 +0000
-Message-Id: <E10HmaY-000000005vi-0000@myhost.test.ex>
+Message-Id: <E10HmaZ-000000005vi-0000@myhost.test.ex>
 From: CALLER_NAME <CALLER@myhost.test.ex>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
-Second message
+Third message
 .
 250 OK
 QUIT
index 9a99cddf2a1045643dd0c4a05fc99887f09a805c..c53cb62adcb45b0ef88764b127a8316a28572ad5 100644 (file)
@@ -1,5 +1,5 @@
 +++++++++++++++++++++++++++
-** Failed to open database lock file TESTSUITE/spool/db/wait-smtp.lockfile: No such file or directory
+** Failed to open hintsdb TESTSUITE/spool/db/wait-smtp: No such file or directory
 
 ******** SERVER ********
 Listening on port 1224 ... 
index acfa5a0cd52910dd60c5f568a74dbb812ef160bf..a7347706bd119da6b80748dbc4a87f520e763f25 100644 (file)
@@ -60,7 +60,6 @@ hosts_require_auth =
 hosts_try_auth = 
 hosts_try_chunking = *
 hosts_try_fastopen = :
-hosts_try_prdr = *
 interface = ip4.ip4.ip4.ip4
 keepalive
 no_lmtp_ignore_quota
diff --git a/test/stdout/0637 b/test/stdout/0637
new file mode 100644 (file)
index 0000000..97d95ea
--- /dev/null
@@ -0,0 +1,20 @@
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> mail from:<u1@cus.cam.ac.uk>
+??? 503 HELO or EHLO required
+<<< 503 HELO or EHLO required
+>>> mail from:<u2@cus.cam.ac.uk>
+??? 503
+<<< 503 HELO or EHLO required
+>>> mail from:<u3@cus.cam.ac.uk>
+??? 503
+<<< 503 HELO or EHLO required
+>>> mail from:<u4@cus.cam.ac.uk>
+??? 503-
+<<< 503-HELO or EHLO required
+??? 503 Too many
+<<< 503 Too many syntax or protocol errors
+???*
+Expected EOF read
+End of script
index 885d579282b5791622deadd48b008d36a60c51a8..52c85a1d12ff99a4eab87ea820ecd9acf81d32ac 100644 (file)
@@ -1,5 +1,5 @@
 ### Check that delivery of old-format spoolfiles works
-TTT   sss 10HmaX-0005vi-00-H <nobody@test.ex>
+TTT   sss 10HmaX-0005vi-00 <nobody@test.ex>
           nulldeliver@test.ex
 
 ### Check that the format-mangler utility can downgrade spoolfiles
@@ -7,7 +7,7 @@ TTT   sss 10HmaX-000000005vi-0000 <CALLER@the.local.host.name>
           nulldeliver@test.ex
 
 exim_id_update exit code = 0
-TTT   sss 10HmaY-0005vi-00-H <CALLER@the.local.host.name>
+TTT   sss 10HmaY-0005vi-00 <CALLER@the.local.host.name>
           nulldeliver@test.ex
 
 ### Check that the format-mangler utility can upgrade spoolfiles
index b9ec648b720df0300fbe72e2aee9e377c65825de..00a85edfc0941ec61356f2da6f6c9d05aca33fa0 100644 (file)
@@ -1,18 +1,17 @@
 
-**** SMTP testing session as if from host 2001:0ab8:037f:0020:0000:0000:0000:0001
+**** SMTP testing session as if from host 2001:ab8:37f:20::1
 **** but without any ident (RFC 1413) callback.
 **** This is not for real!
 
-220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
-421 myhost.test.ex lost input connection\r
+550 Administrative prohibition\r
 
-**** SMTP testing session as if from host V6NET:1234:0005:0006:0007:0008:0abc:000d
+**** SMTP testing session as if from host V6NET:1234:5:6:7:8:abc:d
 **** but without any ident (RFC 1413) callback.
 **** This is not for real!
 
 550 Administrative prohibition\r
 
-**** SMTP testing session as if from host V6NET:ffff:836f:0a00:000a:0800:200a:c032
+**** SMTP testing session as if from host V6NET:ffff:836f:a00:a:800:200a:c032
 **** but without any ident (RFC 1413) callback.
 **** This is not for real!
 
index 6daaab658e1f626c6908832a372250d73f9957be..dd6b4bdd67772bc70cab6832a3b9b17de7da31a5 100644 (file)
@@ -15,6 +15,9 @@
 > fail,subdir(..):FAIL
 > fail,subdir(.) :FAIL
 > fail,subdir(f) :FAIL
+> ok,subdir(..d) :..subdir
+> Failed: lookup of "2500.dir/regfile" gave DEFER: key for dsearch lookup contains a slash: 2500.dir/regfile
+> ok.path:    2500.dir/regfile
 > 
 > cachelayer tests
 > fail:       FAIL
diff --git a/test/stdout/4040 b/test/stdout/4040
new file mode 100644 (file)
index 0000000..836f573
--- /dev/null
@@ -0,0 +1,213 @@
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN acme-response
+??? 250-SIZE
+<<< 250-SIZE=24
+??? 250-
+<<< 250-line+201+0A
+??? 250-
+<<< 250-line+202+0A
+??? 250
+<<< 250 last+20line+0A
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [ip4.ip4.ip4.ip4]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250 HELP
+<<< 250 HELP
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1226 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN acme-response
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN badfile
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN acme-response
+??? 250-SIZE
+<<< 250-SIZE=24
+??? 250-
+<<< 250-line+201+0A
+??? 250-
+<<< 250-line+202+0A
+??? 250
+<<< 250 last+20line+0A
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN sub/acme-response
+??? 250-SIZE
+<<< 250-SIZE=24
+??? 250-
+<<< 250-line+201+0A
+??? 250-
+<<< 250-line+202+0A
+??? 250
+<<< 250 last+20line+0A
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN sub/badfile
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO test
+??? 250-
+<<< 250-myhost.test.ex Hello test [127.0.0.1]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-LIMITS
+<<< 250-LIMITS MAILMAX=1000 RCPTMAX=50000
+??? 250-8BITMIME
+<<< 250-8BITMIME
+??? 250-PIPELINING
+<<< 250-PIPELINING
+??? 250-WELLKNOWN
+<<< 250-WELLKNOWN
+??? 250 HELP
+<<< 250 HELP
+>>> WELLKNOWN ../badfile
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
index f01983e4798bbebb27e1be433a97d470d67672bd..8037405e7c090de2ddabb2daddcb8f6714d07b0a 100644 (file)
@@ -42,16 +42,16 @@ Date: Tue, 2 Mar 1999 09:44:33 +0000
 250 message 2 received
 MAIL FROM:<CALLER@the.local.host.name>
 250 mail cmd 3 good
-RCPT TO:<r3_1.test.ex@the.local.host.name>
+RCPT TO:<r2_1.test.ex@the.local.host.name>
 250 rcpt cmd good
 DATA
 352 go ahead
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@the.local.host.name>)
-       id 10HmaZ-000000005vi-0000;
+       id 10HmaY-000000005vi-0000;
        Tue, 2 Mar 1999 09:44:33 +0000
-Subject: message 3
-Message-Id: <E10HmaZ-000000005vi-0000@the.local.host.name>
+Subject: message 2
+Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@the.local.host.name>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
@@ -59,16 +59,16 @@ Date: Tue, 2 Mar 1999 09:44:33 +0000
 250 message 3 received
 MAIL FROM:<CALLER@the.local.host.name>
 250 mail cmd 4 good
-RCPT TO:<r3_2.test.ex@the.local.host.name>
+RCPT TO:<r2_2.test.ex@the.local.host.name>
 250 rcpt cmd good
 DATA
 352 go ahead
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@the.local.host.name>)
-       id 10HmaZ-000000005vi-0000;
+       id 10HmaY-000000005vi-0000;
        Tue, 2 Mar 1999 09:44:33 +0000
-Subject: message 3
-Message-Id: <E10HmaZ-000000005vi-0000@the.local.host.name>
+Subject: message 2
+Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@the.local.host.name>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
@@ -76,16 +76,16 @@ Date: Tue, 2 Mar 1999 09:44:33 +0000
 250 message 4 received
 MAIL FROM:<CALLER@the.local.host.name>
 250 mail cmd 5 good
-RCPT TO:<r2_1.test.ex@the.local.host.name>
+RCPT TO:<r3_1.test.ex@the.local.host.name>
 250 rcpt cmd good
 DATA
 352 go ahead
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@the.local.host.name>)
-       id 10HmaY-000000005vi-0000;
+       id 10HmaZ-000000005vi-0000;
        Tue, 2 Mar 1999 09:44:33 +0000
-Subject: message 2
-Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
+Subject: message 3
+Message-Id: <E10HmaZ-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@the.local.host.name>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
@@ -102,16 +102,16 @@ EHLO the.local.host.name
 250
 MAIL FROM:<CALLER@the.local.host.name>
 250 mail cmd 1 good
-RCPT TO:<r2_2.test.ex@the.local.host.name>
+RCPT TO:<r3_2.test.ex@the.local.host.name>
 250 rcpt cmd good
 DATA
 352 go ahead
 Received: from CALLER by the.local.host.name with local (Exim x.yz)
        (envelope-from <CALLER@the.local.host.name>)
-       id 10HmaY-000000005vi-0000;
+       id 10HmaZ-000000005vi-0000;
        Tue, 2 Mar 1999 09:44:33 +0000
-Subject: message 2
-Message-Id: <E10HmaY-000000005vi-0000@the.local.host.name>
+Subject: message 3
+Message-Id: <E10HmaZ-000000005vi-0000@the.local.host.name>
 From: CALLER_NAME <CALLER@the.local.host.name>
 Date: Tue, 2 Mar 1999 09:44:33 +0000
 
diff --git a/test/stdout/5708 b/test/stdout/5708
new file mode 100644 (file)
index 0000000..d2c78b4
--- /dev/null
@@ -0,0 +1,71 @@
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> HELO nonexistent.test.ex
+??? 250
+<<< 250 myhost.test.ex Hello nonexistent.test.ex [127.0.0.1]
+>>> MAIL FROM:<a@b>
+??? 250
+<<< 250 OK
+>>> RCPT TO:<c@d>
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> HELO badcname.test.ex
+??? 250
+<<< 250 myhost.test.ex Hello badcname.test.ex [127.0.0.1]
+>>> MAIL FROM:<a@b>
+??? 250
+<<< 250 OK
+>>> RCPT TO:<c@d>
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> HELO test.again.dns
+??? 250
+<<< 250 myhost.test.ex Hello test.again.dns [127.0.0.1]
+>>> MAIL FROM:<a@b>
+??? 250
+<<< 250 OK
+>>> RCPT TO:<c@d>
+??? 550
+<<< 550 Administrative prohibition
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> HELO localhost
+??? 250
+<<< 250 myhost.test.ex Hello localhost [127.0.0.1]
+>>> MAIL FROM:<a@b>
+??? 250
+<<< 250 OK
+>>> RCPT TO:<bad_A@nonexistent.test.ex>
+??? 250 Accepted
+<<< 250 Accepted
+>>> DATA
+??? 354
+<<< 354 Enter message, ending with "." on a line by itself
+>>> Subject: test
+>>> .
+??? 250
+<<< 250 OK id=10HmaX-000000005vi-0000
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
diff --git a/test/stdout/5709 b/test/stdout/5709
new file mode 100644 (file)
index 0000000..5f68af5
--- /dev/null
@@ -0,0 +1,19 @@
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> HELO nonexistent.test.ex
+??? 250
+<<< 250 myhost.test.ex Hello nonexistent.test.ex [127.0.0.1]
+>>> HELO badcname.test.ex
+??? 250
+<<< 250 myhost.test.ex Hello badcname.test.ex [127.0.0.1]
+>>> HELO test.again.dns
+??? 250
+<<< 250 myhost.test.ex Hello test.again.dns [127.0.0.1]
+>>> HELO localhost
+??? 250
+<<< 250 myhost.test.ex Hello localhost [127.0.0.1]
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script