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"
.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,
.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.
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
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.
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.
.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.
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:
${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:
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>>&.
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
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.
&*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.
.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
.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
.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""&"
.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
.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
.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"
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"
.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
.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
.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
.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"
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
.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.
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"
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.
.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
.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"
.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
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
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
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
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.
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
&%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.
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
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
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"
.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"
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
+
. ////////////////////////////////////////////////////////////////////////////
. ////////////////////////////////////////////////////////////////////////////
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
-----------------
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
------------
$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
--------------------------------------------------------------
--- /dev/null
+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.
# 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)
# 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
$(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
local_scan.h \
macros.h \
mytypes.h \
+ path_max.h \
sha_ver.h \
structs.h \
os.h
../local_scan.h \
../macros.h \
../mytypes.h \
+ ../path_max.h \
../structs.h \
../os.h
/* 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. */
/* 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. */
* 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 */
* 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 */
typedef void * hctx;
#include "local_scan.h"
+#include "path_max.h"
#include "macros.h"
#include "structs.h"
#include "blob.h"
* 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 */
* 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 */
* 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>
# 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 && \
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 \
##################################################
# 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
# 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
# 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
# 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
# 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
* 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 */
#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,
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
[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
#ifdef EXPERIMENTAL_DCC
[ACLC_DCC] = { US"dcc", TRUE, FALSE,
- (unsigned int)
+ (unsigned)
~(ACL_BIT_DATA |
# ifndef DISABLE_PRDR
ACL_BIT_PRDR |
#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
[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
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
#ifdef WITH_CONTENT_SCAN
[ACLC_MALWARE] = { US"malware", TRUE, FALSE,
- (unsigned int)
+ (unsigned)
~(ACL_BIT_DATA |
# ifndef DISABLE_PRDR
ACL_BIT_PRDR |
#ifdef WITH_CONTENT_SCAN
[ACLC_REGEX] = { US"regex", TRUE, FALSE,
- (unsigned int)
+ (unsigned)
~(ACL_BIT_DATA |
# ifndef DISABLE_PRDR
ACL_BIT_PRDR |
#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
#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
#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,
#ifdef SUPPORT_I18N
CONTROL_UTF8_DOWNCONVERT,
#endif
+#ifndef DISABLE_WELLKNOWN
+ CONTROL_WELLKNOWN,
+#endif
};
#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
};
{
*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);
+#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 *
*************************************************/
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 */
return ERROR;
}
+ /*XXX ought to sort these, just for sanity */
switch(control_type)
{
case CONTROL_AUTH_UNADVERTISED:
break;
}
return ERROR;
-#endif
+#endif /*I18N*/
+#ifndef DISABLE_WELLKNOWN
+ case CONTROL_WELLKNOWN:
+ rc = *p == '/' ? wellknown_process(p+1, log_msgptr) : FAIL;
+ break;
+#endif
}
break;
}
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;
}
* 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
*/
* 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 */
/*
- * 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
*
* 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 */
* 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 */
* 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 */
* 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 */
* 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 */
* 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 */
* 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 */
/* End of xtextencode.c */
+/* vi: aw ai sw=2
+*/
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;
{
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);
}
* 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. */
#define DISABLE_QUEUE_RAMP
#define DISABLE_TLS
#define DISABLE_TLS_RESUME
+#define DISABLE_WELLKNOWN
#define ENABLE_DISABLE_FSYNC
#define USE_OPENSSL
#define USE_READLINE
#define USE_TCP_WRAPPERS
+#define USE_SQLITE
#define USE_TDB
#define WHITELIST_D_MACROS
* 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 */
/* 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)
}
}
-/* 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)
{
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 */
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;
}
* 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 */
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
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
+*/
* 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:
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];
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
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);
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;
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
*************************************************/
/* 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)
{
+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;
}
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. */
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 */
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. */
+#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 *
*************************************************/
if (!yield) exim_dbdelete_cursor(*cursor);
return yield;
}
+#endif
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 **);
* 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 */
*/
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)
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);
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)
{
debug_printf("Event(%s): event_action returned \"%s\"\n", event, s);
if (errnop)
*errnop = ERRNO_EVENT;
- return s;
+ return string_copy(s);
}
}
return NULL;
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;
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*/
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
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. */
*/
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;
* 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 */
* 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 */
* 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 */
* 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 */
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;
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);
}
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
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
{
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 */
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 */
/* 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
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";
}
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. */
/* 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;
{
#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;
)
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);
(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;
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],
&& 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;
}
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;
}
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;
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;
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);
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 */
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);
#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;
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:
*/
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
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
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;
+ }
}
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;
}
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);
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
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);
* 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 */
static void
term_handler(int sig)
{
-exit(1);
+exim_exit(EXIT_FAILURE);
}
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;
#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
/* -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);
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,
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);
#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 */
{
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 */
{
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
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
(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
}
/* 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 */
/* End of exim.c */
+/* vi: aw ai sw=2
+*/
* 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 */
# 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.
*/
#include "local_scan.h"
+#include "path_max.h"
#include "macros.h"
+#include "blob.h"
#include "hintsdb.h"
#include "hintsdb_structs.h"
#include "structs.h"
* 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 */
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
-
/******************************************************************************/
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
if (argc != 3)
{
printf("usage: exim_dbmbuild [-nolc] <source file> <dbm base name>\n");
- exit(1);
+ exit(EXIT_FAILURE);
}
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
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]);
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
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++;
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++;
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)
printf("Unable to rename %s as %s\n", real_dbmname, buffer);
return 1;
}
- #else
+#else
/* Rename a single .db file */
}
}
- #endif /* USE_DB || USE_TDB || USE_GDBM */
+#endif /* USE_DB || USE_TDB || USE_GDBM || USE_SQLITE */
}
/* Otherwise unlink the temporary files. */
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);
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
+*/
* 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 */
BOOL split_spool_directory;
-/* These introduced by the taintwarn handling */
-#ifdef ALLOW_INSECURE_TAINTED_DATA
-BOOL allow_insecure_tainted_data;
-#endif
-
/******************************************************************************/
*/
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;
}
*************************************************/
/* 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);
}
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
*/
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
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 */
#endif /* EXIM_TIDYDB */
/* End of exim_dbutil.c */
+/* vi: aw ai sw=2
+*/
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);
}
{
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
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);
if (uname(&s) < 0)
{
printf("exim_lock: failed to find host name using uname()\n");
- exit(1);
+ exit(EXIT_FAILURE);
}
primary_hostname = s.nodename;
{
printf("exim_lock: failed to create hitching post %s: %s\n", hitchname,
strerror(errno));
- exit(1);
+ exit(EXIT_FAILURE);
}
/* Apply hitching post algorithm. */
#! /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.
* 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 */
US"strlen",
US"substr",
US"uc",
- US"utf8clean" };
+ US"utf8clean",
+ US"xtextd",
+ };
enum {
EOP_ADDRESS = nelem(op_table_underscore),
EOP_STRLEN,
EOP_SUBSTR,
EOP_UC,
- EOP_UTF8CLEAN };
+ EOP_UTF8CLEAN,
+ EOP_XTEXTD,
+ };
/* Table of condition names, and corresponding switch numbers. The names must
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;
}
}
else
yield = string_cat(yield, sub);
- break;
}
/* quote_lookuptype does lookup-specific quoting */
}
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;
* 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 */
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. */
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
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. */
/* 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);
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
};
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:
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;
}
}
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
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.
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)
switch(commands->command)
{
- case add_command:
+ case ADD_COMMAND:
for (i = 0; i < 2; i++)
{
const uschar *ss = expargs[i];
/* 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];
}
break;
- case save_command:
+ case SAVE_COMMAND:
s = expargs[0];
mode = commands->args[1].i;
}
break;
- case pipe_command:
+ case PIPE_COMMAND:
s = string_copy(commands->args[0].u);
if (filter_test != FTEST_NONE)
{
/* 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)
}
break;
- case logwrite_command:
+ case LOGWRITE_COMMAND:
s = expargs[0];
if (filter_test != FTEST_NONE)
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];
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;
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();
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;
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)
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++)
{
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++)
{
}
break;
- case testprint_command:
+ case TESTPRINT_COMMAND:
if (filter_test != FTEST_NONE || (debug_selector & D_filter) != 0)
{
const uschar *s = string_printing(expargs[0]);
* 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 */
* 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 */
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
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 *);
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);
* 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 */
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
[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"
};
[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",
};
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
#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
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
*/
* 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 */
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 */
#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
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 */
* 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 */
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.
/* 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,
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;
}
#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
-/* 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
{
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;
/* 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 *
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;
/********************* 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>
# 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 *
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);
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
-/* 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 **********************/
# 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
# define EXIM_DB_RLIMIT 150
-#endif /* USE_GDBM */
+#endif /* !USE_GDBM */
#endif /* whole file */
/* End of hintsdb.h */
+/* vi: aw ai sw=2
+*/
* 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 */
* 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 */
*/
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);
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)
/* 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 */
FOUND_LOCAL:
-if (prev == NULL)
+if (!prev)
{
HDEBUG(D_host_lookup) debug_printf((h->mx >= 0)?
"local host has lowest MX\n" :
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;
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;
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. */
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
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);
HDEBUG(D_host_lookup)
debug_printf("IP address PTR lookup gave temporary error\n");
host_lookup_deferred = TRUE;
- return DEFER;
+ yield = DEFER;
+ goto out;
}
}
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 */
}
"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)
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);
/* 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. */
sender_host_address, save_hostname);
store_pool = old_pool;
host_lookup_failed = TRUE;
-return FAIL;
+yield = FAIL;
+
+out:
+ expand_level--;
+ return yield;
}
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;
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;
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
)
i = 0; /* look up A records only */
else
- #endif /* STAND_ALONE */
+# endif /* STAND_ALONE */
i = 1; /* look up AAAA and A records */
*/
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);
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
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)
{
{ 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
&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");
}
}
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
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)
&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;
}
{
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;
}
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"");
}
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 */
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)
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
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" :
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);
* 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 */
* 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 */
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);
}
* 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 */
{
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
* 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 */
* 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 */
#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
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 = ',';
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);
&& 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
lookup_module_info dsearch_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 };
/* End of lookups/dsearch.c */
+/* vi: aw ai sw=2
+*/
* 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 */
* 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 */
* 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 */
* 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 */
* 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 */
*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);
* 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 */
#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
* 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 */
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
ACL_WHERE_NOTQUIT,
ACL_WHERE_QUIT,
ACL_WHERE_STARTTLS,
+#ifndef DISABLE_WELLKNOWN
+ ACL_WHERE_WELLKNOWN,
+#endif
ACL_WHERE_VRFY,
ACL_WHERE_DELIVERY,
#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)
#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
+*/
*************************************************/
/*
- * 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
* 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 */
{
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;
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;
}
#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);
{
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.
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)))
{
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)
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);
}
}
else
{
- DEBUG(D_lists)
+ HDEBUG(D_lists)
{
expand_level -= 2;
debug_printf_indent("cached %s match for %s\n",
*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);
}
}
{
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:
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)
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
{
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));
{
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. */
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);
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)
{
/* 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;
}
/* End of match.c */
+/* vi: aw ai sw=2
+*/
* 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 */
* 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 */
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)
{
* 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 */
--- /dev/null
+/*************************************************
+* 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
+
/*
* 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
if (!gcry_check_version (GCRYPT_VERSION))
{
fputs ("libgcrypt version mismatch\n", stderr);
- exit (2);
+ exim_exit(2);
}
/* We don't want to see any warnings, e.g. because we have not yet
* 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 */
* 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 */
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)
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
report_time_since(×tamp_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)
{
#endif /*!COMPILE_UTILITY*/
/* End of queue.c */
+/* vi: aw ai sw=2
+*/
* 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 */
* 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 */
{ "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} },
{ "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} },
};
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"";
}
if (os_getcwd(buf, PATH_MAX) == NULL)
{
perror("exim: getcwd");
- exit(EXIT_FAILURE);
+ exim_exit(EXIT_FAILURE);
}
g = string_cat(NULL, buf);
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
*************************************************/
/*
- * 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
* 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 */
? 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. */
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)
{
* 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 */
* 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 */
* 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 */
if (yield == PASS)
{
- if (r->pass_router != NULL) nextr = r->pass_router;
+ if (r->pass_router) nextr = r->pass_router;
}
else
{
/* 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;
* 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 */
/* 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. */
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
+*/
* 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 */
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);
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)
* 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 */
* 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 */
* 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 */
* 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 */
* 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 */
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;
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;
* 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 */
* 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 */
* 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 */
* 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 */
}
expandable = Ustrchr(tpname, '$') != NULL;
-if (*tpptr != NULL && !expandable) return TRUE;
+if (*tpptr && !expandable) return TRUE;
if (expandable)
{
* 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 */
* 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 */
/* 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 */
/* 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
{ "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. */
[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
case HELP_CMD:
case NOOP_CMD:
case ETRN_CMD:
-#ifdef EXPERIMENTAL_WELLKNOWN
+#ifndef DISABLE_WELLKNOWN
case WELLKNOWN_CMD:
#endif
bsmtp_transaction_linecount = receive_linecount;
{
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"",
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;
msg = nl + 1;
Uskip_whitespace(&msg);
}
- }
}
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
{
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);
}
*/
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);
}
+#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)
{
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;
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)
{
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. */
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:
{
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)
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);
* 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 */
{
#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)
}
# endif
}
+ expand_level--;
#endif
if (ip_connect(sock, sc->host_af, sc->host->address, sc->host->port, timeout, fastopen_blob) < 0)
/* 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
#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 */
*************************************************/
/* 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
* 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
* 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 */
* 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 */
* 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 */
* 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 */
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))
{
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;
}
}
* 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 */
* 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. */
* 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 */
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*/
* 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 */
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
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);
}
}
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())
* 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 */
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;
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.
*/
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)
{
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;
/* 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;
}
/* 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)
{
}
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:
* 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 */
&& 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);
}
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
* 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 */
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;
#endif /*!MACRO_PREDEF*/
#endif /*TRANSPORT_AUTOREPOL*/
/* End of transport/autoreply.c */
+/* vi: aw ai sw=2
+*/
* 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 */
* 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 */
* 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 */
* 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 */
{
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);
deliver_localpart = save_local;
deliver_domain = save_domain;
-router_name = transport_name = NULL;
+router_name = save_rn;
+router_name = save_tn;
}
#endif
}
/*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;
}
}
#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);
* 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 */
* 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 */
* 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 */
* 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 */
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");
}
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");
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;
* 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 */
--- /dev/null
+#!/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
+###############################################################
--- /dev/null
+line 1
+line 2
+last line
--- /dev/null
+line 1
+line 2
+last line
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
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
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 -----
--- /dev/null
+# Exim test configuration 0637
+
+HVH=
+
+.include DIR/aux-var/std_conf_prefix
+
+primary_hostname = myhost.test.ex
+
+# ----- Main settings -----
+
+# ----- ACL -----
+
+# End
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
--- /dev/null
+# 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
--- /dev/null
+# 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
--- /dev/null
+# 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
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
hosts_try_fastopen = :
tls_verify_certificates = CDIR/CA/CA.pem
tls_verify_cert_hostnames = :
+.ifdef _HAVE_EVENT
event_action = ${acl {log_resumption}}
+.endif
# ----- Retry -----
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
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
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"
******** 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
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
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)
--- /dev/null
+
+******** 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)
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
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
--- /dev/null
+
+******** 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
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
--- /dev/null
+
+******** 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
--- /dev/null
+
+******** 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>
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)
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)
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)
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)
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)
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)
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)
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)
-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
-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
******** 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)
--- /dev/null
+
+******** 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)
--- /dev/null
+
+******** 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
--- /dev/null
+
+******** 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>
# 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 #
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})/;
+
###############################################################################
###############################################################################
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/;
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
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/;
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/;
# 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
# 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/;
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 =/;
# 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:
)
/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;
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\):
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$/;
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"
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/;
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\?/;
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/;
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
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
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 ========
'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
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";
}
elsif (/^Support for: (.*)/)
- {
+ { # Compile-time features - exim -bV
print;
@temp = split /(\s+)/, $1;
push(@temp, ' ');
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";
Here is some data.
.
quit
-****
+****
exim -bh V4NET.9.8.7
ehlo test.ex
mail from:<>
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:<>
rset
ehlo foo.bar
mail from:"a b"@localhost4 SIZE=1234
-rset
-ehlo foo.bar
-mail from:<"a b"@localhost5> PRDR
quit
****
# PIPELINING (client: errors, etc)
+munge peer_terminated_conn
need_ipv4
#
server PORT_S
# 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
#
killdaemon
no_msglog_check
-
--- /dev/null
+# 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
+++ /dev/null
-# lookup dbmjz
-#
-exim -be
-${lookup{testid:test.example.invalid:userPassword}dbmjz{DIR/aux-fixed/TESTNUM.testsasldb}{$value}fail}
-****
+++ /dev/null
-# lookup dbmnz
-#
-exim -be '[${lookup{test}dbmnz{DIR/aux-fixed/TESTNUM.emptydbmnzlookup}}]'
-****
--- /dev/null
+# 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}
+****
--- /dev/null
+# 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}}]'
+****
--- /dev/null
+lookup dbm
+feature _HAVE_HINTS_BDB
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}}
--- /dev/null
+# 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
--- /dev/null
+support ESMTP_Wellknown
-# Arbitrary expansion after transport
-# (EXPERIMENTAL_EVENT)
+# Events
#
need_ipv4
munge timeout_errno
--- /dev/null
+# 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
--- /dev/null
+# 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
--- /dev/null
+lookup dnsdb
+support Event
Exim version x.yz ....
+Hints DB:
environment after trimming:
USER=CALLER
configuration file is TESTSUITE/test-config
╰─────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}}
╰─────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
\_____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}}
\_____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
>>>>>>>>>>>>>>>> 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
├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]
╰──(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
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
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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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"
>>>>>>>>>>>>>>>> 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
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"
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
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
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
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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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"
>>> 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_20_20_20"
>>> 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 ------------
>>> 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"
>>> 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 ------------
>>> 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 ------------
>>> 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"
>>> 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 ------------
>>> 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"
>>> 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 ------------
>>> 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"
>>> 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
>>> 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
>>> 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"
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
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
--------> 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
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
--------> 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
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
>>> 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"
>>> 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)
>>> 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)
>>> 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"
>>> 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"
>>> 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 ------------
>>> 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 ------------
>>> 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 !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"
>>> 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 ------------
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
>>> 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
--------> 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 ------------
>>> 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
>>> 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"
>>> 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)
>>> 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
>>> 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
>>> 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)
>>> 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
>>> 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
->>> 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)
>>> 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
->>> 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
>>> 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
->>> 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
>>> 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
->>> 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)
>>> 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
->>> 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)
>>> 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
->>> 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)
>>> 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
->>> 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)
>>> 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
>>> 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 "@"? 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)
>>> 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)
>>> 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.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
>>> 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.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
>>> 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)
>>> 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.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
>>> 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)
>>> 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.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
>>> 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
>>> 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
->>> 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)
>>> 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
->>> 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
>>> 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
->>> 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)
>>> 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
->>> 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
>>> 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
->>> 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
>>> 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
->>> 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
>>> 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
>>> 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.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)
>>> 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.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
>>> 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
+>>> ╎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)
>>> 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 "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
>>> 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 "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
>>> 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
+>>> ╎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
>>> 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
->>> 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)
>>> 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
->>> 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
>>> 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
>>> 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
>>> 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"?
>>> 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
>>> 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"?
>>> 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
>>> 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"?
>>> 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
>>> 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"?
>>> 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"?
>>> 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"?
>>> 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
>>> 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"?
>>> 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"?
>>> 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"?
>>> 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"?
>>> 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
>>> 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")
>>> 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
>>> 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
>>> 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)
>>> 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")
>>> 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
>>> 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
>>> 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
>>> 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"?
>>> 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")
>>> 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
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
--------> 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
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
--------> 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
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
--------> 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
--------> 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
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
--------> 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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
--------> 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)
--------> 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"
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
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"?
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
--------> 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
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
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"?
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
--------> 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
╎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
--------> 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)
--------> 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"
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
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"?
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)
--------> 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
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
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"?
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
╎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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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)
>>> 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")
>>> 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
>>> 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)
>>> 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
>>> 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
>>> 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"
>>> 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 ------------
>>> 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
>>> 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
>>> 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 ------------
>>> 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
>>> 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"
>>> 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:
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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
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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>> 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"
>>> 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 ------------
>>> 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"
>>> 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 ------------
>>> 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
>>> 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
>>> 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 ------------
>>> 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
>>> 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
>>> 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 ------------
>>> 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
>>> 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
>>> 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)
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
>>> 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)
>>> 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)
>>> 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: *
>>> 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 ------------
>>> 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
>>> 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 ------------
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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)
>>> 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)
>>> 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)
>>> 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]
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 <--------
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
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
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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"
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
--------> 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'
--------> 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'
--------> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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)
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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)
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
--------> 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
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
--------> 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
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
--------> 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
--------> 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
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
--------> 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
--------> 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
--------> 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
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
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
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
>>> 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
>>> 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
>>> 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"
>>> 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
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
--------> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
--------> 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
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)
--------> 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
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?)
--------> 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
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
--------> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
--------> 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
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
--------> 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
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?)
--------> 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
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
--------> 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
--------> 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
--------> 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
--------> 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
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
--------> 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
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
--------> 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
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
--------> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--------> 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
--------> 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
--------> 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
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
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
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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
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
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>
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
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
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
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
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>
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 >>>>>>>>>>>>>>>>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)'
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
>>> 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)
>>> 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
>>> 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
>>> 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
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)
>>> 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
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
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
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
--------> 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
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
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
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
--------> 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"?
╎ 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"?
╎ 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"?
╎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
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
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
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
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
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
--------> 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"?
╎ 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"?
╎ 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"?
╎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
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
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
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)
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
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
--------> 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
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
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
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
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
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
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]
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
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
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]
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
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]
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
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]
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
--------> 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"?
╎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
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
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
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
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
--------> 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"?
╎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
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
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
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)
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
--------> 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"?
╎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
--------> 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
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
╎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
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
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
--------> 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"?
╎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
╎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
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
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
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
--------> 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"?
╎ 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'
>>> 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")
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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)
>>> 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)
>>> 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)
>>> 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
>>> 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)
>>> 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)
>>> 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)
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
<= 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
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
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
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
>>>>>>>>>>>>>>>> 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
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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
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
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
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
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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
>>> 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: *
>>> 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
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
>>> 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
>>> 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 ------------
>>> 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 ------------
>>> 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")
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
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
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
>>>>>>>>>>>>>>>> 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
--------> 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
--------> 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
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 >>>>>>>>>>>>>>>>
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
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
>>> 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
>>> 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"
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
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
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
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 >>>>>>>>>>>>>>>>
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
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
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 >>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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"
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
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
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>
>>>>>>>>>>>>>>>> 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
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
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
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
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
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
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
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 >>>>>>>>>>>>>>>>
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
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
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>
>>>>>>>>>>>>>>>> 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
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
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
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 >>>>>>>>>>>>>>>>
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
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
--------> 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
--------> 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
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
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
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 >>>>>>>>>>>>>>>>
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
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
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
--------> 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
--------> 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)
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
--------> 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
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
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)
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
--------> 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"?
╎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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
--------> 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
--------> 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)
--------> 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
--------> 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
--------> 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
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 >>>>>>>>>>>>>>>>
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
<= 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
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
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
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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
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
--------> 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
--------> 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
--------> 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
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
--------> 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
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 >>>>>>>>>>>>>>>>
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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
--------> 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
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
--------> 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
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
>>>>>>>>>>>>>>>> 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
--------> 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
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
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 >>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
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
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
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
--------> 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
--------> 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
--------> 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
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
--------> 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
--------> 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
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
--------> 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
--------> 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
--------> 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
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
--------> 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
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
--------> 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
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
--------> 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
--------> 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
--------> 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
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
--------> 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
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
--------> 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
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 >>>>>>>>>>>>>>>>
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
--------> 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
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
--------> 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
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
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
--------> 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
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
--------> 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
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
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
--------> 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
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 >>>>>>>>>>>>>>>>
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
--------> 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
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
--------> 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
--------> 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
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
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 >>>>>>>>>>>>>>>>
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
--------> 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
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 >>>>>>>>>>>>>>>>
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
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
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
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
>>>>>>>>>>>>>>>> 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
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
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
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
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
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
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
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
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)
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
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
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
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
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)
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
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
--------> 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
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
*@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
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
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
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=*
*@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
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
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
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:'
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
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
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
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
>>>>>>>>>>>>>>>> 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
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
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
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
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 >>>>>>>>>>>>>>>>
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
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
--------> 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
--------> 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
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
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"
--------> 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
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"
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
Exim version x.yz ....
+Hints DB:
changed uid/gid: forcing real = effective
uid=uuuu gid=CALLER_GID pid=p1234
environment after trimming:
╰─────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>)
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:
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
--------> 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/
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>
--------> 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/
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>
--------> 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/
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
--------> 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/
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
--------> 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/
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
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
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)
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
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)
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
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)
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
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)
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
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)
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
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
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
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"
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
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]
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
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
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)
>>>>>>>>>>>>>>>> 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
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
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
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
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
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
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
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)
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
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
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
--------> 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
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
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
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
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
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
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
--------> r1 router <--------
local_part=sender domain=test.ex
checking local_parts
-sender in "sender"?
+sender in local_parts?
list element: sender
- sender in "sender"? yes (matched "sender")
+ sender in local_parts? yes (matched "sender")
calling r1 router
r1 router called for sender@test.ex
domain = test.ex
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
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
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)
>>>>>>>>>>>>>>>> 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)
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
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
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
--------> 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
--------> 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
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
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
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)
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
--------> 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"?
╎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
--------> 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"?
╎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"?
╎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
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
--------> 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
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
--------> 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
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
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 >>>>>>>>>>>>>>>>
>>> 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
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
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"
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
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"
>>> 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
>>> 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
******** 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
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
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
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
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
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
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
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
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"
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
******** 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
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
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
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
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
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
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
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
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 >>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
--------> 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
--------> 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
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
--------> 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)
--------> 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"?
╎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
--------> 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)
--------> 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"?
╎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
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
>>>>>>>>>>>>>>>> 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
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
<= 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
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
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
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
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
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
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
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
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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)'
>>> 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"
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
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
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)<<
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
** 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
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
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
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
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
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
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
LOG: smtp_connection MAIN
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
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
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
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
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
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
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
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)
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
<= 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
<= 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
<= 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
<= 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
<= 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
<= 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
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
--------> 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")
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
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
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
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
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
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
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
=> :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
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
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
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
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
=> :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 >>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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 ------------
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
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 >>>>>>>>>>>>>>>>
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
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
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)
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
>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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 >>>>>>>>>>>>>>>>
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
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
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 >>>>>>>>>>>>>>>>
Exim version x.yz ....
+Hints DB:
environment after trimming:
PATH=<munged>
adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
╰─────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}
<= 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
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
├───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
>>>>>>>>>>>>>>>> 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
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=
├───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=
├───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
├───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 >>>>>>>>>>>>>>>>
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
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
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
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
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
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
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
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>
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
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
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
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 >>>>>>>>>>>>>>>>
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
--------> 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"?
╎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
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
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
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
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
>>> 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 ------------
>>> 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"
>>> = 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 ------------
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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 ------------
******** SERVER ********
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
dropping to exim gid; retaining priv uid
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
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
Exim version x.yz ....
+Hints DB:
environment after trimming:
PATH=<munged>
adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
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
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
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
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
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
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
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
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 >>>>>>>>>>>>>>>>
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
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
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 >>>>>>>>>>>>>>>>
******** SERVER ********
Exim version x.yz ....
+Hints DB:
environment after trimming:
PATH=<munged>
adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
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
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
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}
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
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}
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 >>>>>>>>>>>>>>>>
>>> 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)
>>> =
>>> 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)
>>> 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
>>> 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
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 ********
******** 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
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
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
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
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
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
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
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
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]
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]
=> 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]
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
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]
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
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
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
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]
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
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
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
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]
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
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]
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
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
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]
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
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 >>>>>>>>>>>>>>>>
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]
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]
=> 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]
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
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]
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
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 ********
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
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]
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
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 ********
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
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
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
--------> 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"
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
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
--------> 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
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
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
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"
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
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
******** SERVER ********
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
trusted user
admin user
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
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
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 : "?
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
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
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
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)
Exim version x.yz ....
+Hints DB:
configuration file is TESTSUITE/test-config
admin user
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="x␉x"░id=tab░
search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb"
cached open
search_find: file="TESTSUITE/aux-fixed/sqlitedb"
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
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"
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"
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
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
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"
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
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
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"
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
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
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
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
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)
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
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
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
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
### 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
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
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"
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"
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"
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"
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
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
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
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
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)
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
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
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="x␉x"░id=tab░
search_open: pgsql "NULL"
cached open
search_find: file="NULL"
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
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"
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"
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"
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"
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"
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"
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"
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"
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
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
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
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
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)
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
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
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
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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
>>> 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
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
--------> 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
╎ 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 >>>>>>>>>>>>>>>>
>>> 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 ------------
>>> 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 ------------
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
>>> 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"
>>> 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"
>>> 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)
>>> 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)
>>> 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 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 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 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 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
>>> 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
>>> 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)
>>> 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 = *
>>> 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"
>>> 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 = *
>>> 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"
>>> 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 = *
>>> 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)
>>> 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 = *
>>> 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 = *
>>> 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
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
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
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
>>> 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 ------------
>>> 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
>>> 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)
>>> 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
>>> 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)
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
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
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
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
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
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
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]
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
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 >>>>>>>>>>>>>>>>
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 >>>>>>>>>>>>>>>>
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
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
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
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
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
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
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
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)
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
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
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
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
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
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)
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
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
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
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
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
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)
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
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
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
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
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|\..*)$
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)
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
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
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
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
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
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 <--------
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
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|\..*)$
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)
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
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
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
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
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
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
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
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)
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
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
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
>>>>>>>>>>>>>>>> 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
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
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 >>>>>>>>>>>>>>>>
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
--------> 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=/
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
--------> 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=/
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
--------> 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=/
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
--------> 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=/
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
--------> 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=/
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
--------> 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=/
--------> 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
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
--------> 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=/
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
--------> 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=/
--------> 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
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)
--------> 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=/
>>> 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
>>> 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
Exim version x.yz ....
+Hints DB:
environment after trimming:
PATH=<munged>
adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
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
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
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
╰─────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}
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
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
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
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
╰─────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}
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
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
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
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
╰─────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}
Exim version x.yz ....
+Hints DB:
environment after trimming:
PATH=<munged>
adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
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
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
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
╰─────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}
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
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
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
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
╰─────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}
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
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
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
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
╰─────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}
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> 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
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
+++++++++++++++++++++++++++
- 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
+++++++++++++++++++++++++++
- 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
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>
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
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
+++++++++++++++++++++++++++
-** 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 ...
hosts_try_auth =
hosts_try_chunking = *
hosts_try_fastopen = :
-hosts_try_prdr = *
interface = ip4.ip4.ip4.ip4
keepalive
no_lmtp_ignore_quota
--- /dev/null
+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
### 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
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
-**** 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!
> 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
--- /dev/null
+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
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
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
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
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
--- /dev/null
+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
--- /dev/null
+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