.vindex "&$host_lookup_failed$&"
See &$host_lookup_deferred$&.
+.vitem &$host_port$&
+.vindex "&$host_port$&"
+This variable is set to the remote host's TCP port whenever &$host$& is set
+for an outbound connection.
+
.vitem &$inode$&
.vindex "&$inode$&"
response.
.vindex "&$acl_verify_message$&"
+.new
+For ACLs that are called by an &%acl =%& ACL condition, the message is
+stored in &$acl_verify_message$&, from which the calling ACL may use it.
+.wen
+
If &%message%& is used on a statement that verifies an address, the message
specified overrides any message that is generated by the verification process.
However, the original message is available in the variable
This feature may be used, for example, to write exim internal log information
(not available otherwise) into a database.
-In order to use the feature, you must set
+In order to use the feature, you must compile with
EXPERIMENTAL_TPDA=yes
in your Local/Makefile
-and define the expandable strings in the runtime config file, to
-be executed at end of delivery.
+and define the tpda_event_action option in the transport, to
+be expanded when the event fires.
-Additionally, there are 6 more variables, available at end of
-delivery:
+A new variable, $tpda_event, is set to the event type when the
+expansion is done. The current list of events is:
-tpda_delivery_ip IP of host, which has accepted delivery
-tpda_delivery_port Port of remote host which has accepted delivery
-tpda_delivery_fqdn FQDN of host, which has accepted delivery
-tpda_delivery_local_part local part of address being delivered
-tpda_delivery_domain domain part of address being delivered
-tpda_delivery_confirmation SMTP confirmation message
+ msg:delivery
+ msg:host:defer
+ tcp:connect
+ tcp:close
+ tls:cert
+ smtp:connect
-In case of a deferral caused by a host-error:
-tpda_defer_errno Error number
-tpda_defer_errstr Error string possibly containing more details
+The expansion is called for all event types, and should use the $tpda_event
+value to decide when to act. The variable data is a colon-separated
+list, describing an event tree.
-The $router_name and $transport_name variables are also usable.
+There is an auxilary variable, $tpda_data, for which the
+content is event_dependent:
+ msg:delivery smtp confirmation mssage
+ msg:host:defer error string
+ tls:cert verification chain depth
+ smtp:connect smtp banner
-To take action after successful deliveries, set the following option
-on any transport of interest.
+The msg:host:defer event populates one extra variable, $tpda_defer_errno.
+
+The following variables are likely to be useful for most event types:
+
+ router_name, transport_name
+ local_part, domain
+ host, host_address, host_port
+ tls_out_peercert
+ lookup_dnssec_authenticated, tls_out_dane
+ sending_ip_address, sending_port
-tpda_delivery_action
An example might look like:
-tpda_delivery_action = \
-${lookup pgsql {SELECT * FROM record_Delivery( \
+tpda_event_action = ${if = {msg:delivery}{$tpda_event} \
+{${lookup pgsql {SELECT * FROM record_Delivery( \
'${quote_pgsql:$sender_address_domain}',\
'${quote_pgsql:${lc:$sender_address_local_part}}', \
- '${quote_pgsql:$tpda_delivery_domain}', \
- '${quote_pgsql:${lc:$tpda_delivery_local_part}}', \
- '${quote_pgsql:$tpda_delivery_ip}', \
- '${quote_pgsql:${lc:$tpda_delivery_fqdn}}', \
- '${quote_pgsql:$message_exim_id}')}}
+ '${quote_pgsql:$domain}', \
+ '${quote_pgsql:${lc:$local_part}}', \
+ '${quote_pgsql:$host_address}', \
+ '${quote_pgsql:${lc:$host}}', \
+ '${quote_pgsql:$message_exim_id}')}} \
+} {}}
The string is expanded after the delivery completes and any
side-effects will happen. The result is then discarded.
Note that for complex operations an ACL expansion can be used.
+During the expansion the tpda_event variable will contain the
+string-list "msg:delivery".
+
+
+The expansion of the tpda_event_action option should normally
+return an empty string. Should it return anything else the
+following will be forced:
+
+ msg:delivery (ignored)
+ msg:host:defer (ignored)
+ tcp:connect do not connect
+ tcp:close (ignored)
+ tls:cert refuse verification
+ smtp:connect close connection
+
+
-In order to log host deferrals, add the following option to an SMTP
-transport:
-
-tpda_host_defer_action
-
-This is a private option of the SMTP transport. It is intended to
-log failures of remote hosts. It is executed only when exim has
-attempted to deliver a message to a remote host and failed due to
-an error which doesn't seem to be related to the individual
-message, sender, or recipient address.
-See section 47.2 of the exim documentation for more details on how
-this is determined.
-
-Example:
-
-tpda_host_defer_action = \
-${lookup mysql {insert into delivlog set \
- msgid = '${quote_mysql:$message_exim_id}', \
- senderlp = '${quote_mysql:${lc:$sender_address_local_part}}', \
- senderdom = '${quote_mysql:$sender_address_domain}', \
- delivlp = '${quote_mysql:${lc:$tpda_delivery_local_part}}', \
- delivdom = '${quote_mysql:$tpda_delivery_domain}', \
- delivip = '${quote_mysql:$tpda_delivery_ip}', \
- delivport = '${quote_mysql:$tpda_delivery_port}', \
- delivfqdn = '${quote_mysql:$tpda_delivery_fqdn}', \
- deliverrno = '${quote_mysql:$tpda_defer_errno}', \
- deliverrstr = '${quote_mysql:$tpda_defer_errstr}' \
- }}
Redis Lookup
switch(acl->verb)
{
case ACL_ACCEPT:
- if (cond == OK || cond == DISCARD) return cond;
+ if (cond == OK || cond == DISCARD)
+ {
+ HDEBUG(D_acl) debug_printf("end of %s: ACCEPT\n", acl_name);
+ return cond;
+ }
if (endpass_seen)
{
HDEBUG(D_acl) debug_printf("accept: endpass encountered - denying access\n");
case ACL_DEFER:
if (cond == OK)
{
+ HDEBUG(D_acl) debug_printf("end of %s: DEFER\n", acl_name);
acl_temp_details = TRUE;
return DEFER;
}
break;
case ACL_DENY:
- if (cond == OK) return FAIL;
+ if (cond == OK)
+ {
+ HDEBUG(D_acl) debug_printf("end of %s: DENY\n", acl_name);
+ return FAIL;
+ }
break;
case ACL_DISCARD:
- if (cond == OK || cond == DISCARD) return DISCARD;
+ if (cond == OK || cond == DISCARD)
+ {
+ HDEBUG(D_acl) debug_printf("end of %s: DISCARD\n", acl_name);
+ return DISCARD;
+ }
if (endpass_seen)
{
HDEBUG(D_acl) debug_printf("discard: endpass encountered - denying access\n");
break;
case ACL_DROP:
- if (cond == OK) return FAIL_DROP;
+ if (cond == OK)
+ {
+ HDEBUG(D_acl) debug_printf("end of %s: DROP\n", acl_name);
+ return FAIL_DROP;
+ }
break;
case ACL_REQUIRE:
- if (cond != OK) return cond;
+ if (cond != OK)
+ {
+ HDEBUG(D_acl) debug_printf("end of %s: not OK\n", acl_name);
+ return cond;
+ }
break;
case ACL_WARN:
if (addr->host_list == NULL)
{
deliver_host = deliver_host_address = US"";
+ deliver_host_port = 0;
}
else
{
deliver_host = addr->host_list->name;
deliver_host_address = addr->host_list->address;
+ deliver_host_port = addr->host_list->port;
}
deliver_recipients = addr;
}
#endif
+
+#ifdef EXPERIMENTAL_TPDA
+int
+tpda_raise_event(uschar * action, uschar * event, uschar * ev_data)
+{
+uschar * s;
+if (action)
+ {
+ DEBUG(D_deliver)
+ debug_printf("TPDA(%s): tpda_event_action=|%s| tpda_delivery_IP=%s\n",
+ event,
+ action, deliver_host_address);
+
+ tpda_event = event;
+ tpda_data = ev_data;
+
+ if (!(s = expand_string(action)) && *expand_string_message)
+ log_write(0, LOG_MAIN|LOG_PANIC,
+ "failed to expand tpda_event_action %s in %s: %s\n",
+ event, transport_name, expand_string_message);
+
+ tpda_event = tpda_data = NULL;
+
+ /* If the expansion returns anything but an empty string, flag for
+ the caller to modify his normal processing
+ */
+ if (s && *s)
+ {
+ DEBUG(D_deliver)
+ debug_printf("TPDA(%s): event_action returned \"%s\"\n", s);
+ return DEFER;
+ }
+ }
+return OK;
+}
+#endif
+
/* If msg is NULL this is a delivery log and logchar is used. Otherwise
this is a nonstandard call; no two-character delivery flag is written
but sender-host and sender are prefixed and "msg" is inserted in the log line.
pointer to a single host item in their host list, for use by the transport. */
#ifdef EXPERIMENTAL_TPDA
- tpda_delivery_ip = NULL; /* presume no successful remote delivery */
- tpda_delivery_port = 0;
- tpda_delivery_fqdn = NULL;
- tpda_delivery_local_part = NULL;
- tpda_delivery_domain = NULL;
- tpda_delivery_confirmation = NULL;
+ /* presume no successful remote delivery */
lookup_dnssec_authenticated = NULL;
#endif
if (addr->transport->info->local)
{
- if (addr->host_list != NULL)
- {
+ if (addr->host_list)
s = string_append(s, &size, &ptr, 2, US" H=", addr->host_list->name);
- #ifdef EXPERIMENTAL_TPDA
- tpda_delivery_fqdn = addr->host_list->name;
- #endif
- }
if (addr->shadow_message != NULL)
s = string_cat(s, &size, &ptr, addr->shadow_message,
Ustrlen(addr->shadow_message));
if (continue_sequence > 1)
s = string_cat(s, &size, &ptr, US"*", 1);
- #ifdef EXPERIMENTAL_TPDA
- tpda_delivery_ip = addr->host_used->address;
- tpda_delivery_port = addr->host_used->port;
- tpda_delivery_fqdn = addr->host_used->name;
- tpda_delivery_local_part = addr->local_part;
- tpda_delivery_domain = addr->domain;
- tpda_delivery_confirmation = addr->message;
+#ifdef EXPERIMENTAL_TPDA
+ deliver_host_address = addr->host_used->address;
+ deliver_host_port = addr->host_used->port;
/* DNS lookup status */
lookup_dnssec_authenticated = addr->host_used->dnssec==DS_YES ? US"yes"
: addr->host_used->dnssec==DS_NO ? US"no"
: NULL;
- #endif
+#endif
}
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
s = d_tlslog(s, &size, &ptr, addr);
- #endif
+#endif
if (addr->authenticator)
{
}
}
- #ifndef DISABLE_PRDR
+#ifndef DISABLE_PRDR
if (addr->flags & af_prdr_used)
s = string_append(s, &size, &ptr, 1, US" PRDR");
- #endif
+#endif
}
/* confirmation message (SMTP (host_used) and LMTP (driver_name)) */
log_write(0, flags, "%s", s);
#ifdef EXPERIMENTAL_TPDA
-if (addr->transport->tpda_delivery_action)
{
- DEBUG(D_deliver)
- debug_printf(" TPDA(Delivery): tpda_deliver_action=|%s| tpda_delivery_IP=%s\n",
- addr->transport->tpda_delivery_action, tpda_delivery_ip);
-
- router_name = addr->router->name;
- transport_name = addr->transport->name;
- if (!expand_string(addr->transport->tpda_delivery_action) && *expand_string_message)
- log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand tpda_deliver_action in %s: %s\n",
- transport_name, expand_string_message);
- router_name = NULL;
- transport_name = NULL;
+ uschar * save_domain = deliver_domain;
+ uschar * save_local = deliver_localpart;
+
+ router_name = addr->router ? addr->router->name : NULL;
+ transport_name = addr->transport ? addr->transport->name : NULL;
+ deliver_domain = addr->domain;
+ deliver_localpart = addr->local_part;
+
+ (void) tpda_raise_event(addr->transport->tpda_event_action, US"msg:delivery",
+ addr->host_used || Ustrcmp(addr->transport->driver_name, "lmtp") == 0
+ ? addr->message : NULL);
+
+ deliver_localpart = save_local;
+ deliver_domain = save_domain;
+ router_name = transport_name = NULL;
}
#endif
store_reset(reset_point);
}
/* Certificates for logging (via TPDA) */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
tls_out.ourcert = addr->ourcert;
addr->ourcert = NULL;
tls_out.peercert = addr->peercert;
tls_out.cipher = addr->cipher;
tls_out.peerdn = addr->peerdn;
tls_out.ocsp = addr->ocsp;
- #endif
+#endif
delivery_log(LOG_MAIN, addr, logchar, NULL);
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (tls_out.ourcert)
{
tls_free_cert(tls_out.ourcert);
tls_out.cipher = NULL;
tls_out.peerdn = NULL;
tls_out.ocsp = OCSP_NOT_REQ;
- #endif
+#endif
}
if (addr->host_used != NULL)
s = d_hostlog(s, &size, &ptr, addr);
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
s = d_tlslog(s, &size, &ptr, addr);
- #endif
+#endif
if (addr->basic_errno > 0)
s = string_append(s, &size, &ptr, 2, US": ",
diagnosis that it's reasonable to make them something that has to be explicitly requested.
*/
- #ifdef RLIMIT_CORE
+#ifdef RLIMIT_CORE
struct rlimit rl;
rl.rlim_cur = 0;
rl.rlim_max = 0;
if (setrlimit(RLIMIT_CORE, &rl) < 0)
{
- #ifdef SETRLIMIT_NOT_SUPPORTED
+# ifdef SETRLIMIT_NOT_SUPPORTED
if (errno != ENOSYS && errno != ENOTSUP)
- #endif
+# endif
log_write(0, LOG_MAIN|LOG_PANIC, "setrlimit(RLIMIT_CORE) failed: %s",
strerror(errno));
}
- #endif
+#endif
/* Reset the random number generator, so different processes don't all
have the same sequence. */
it in with the other info, in order to keep each message short enough to
guarantee it won't be split in the pipe. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
case 'X':
if (addr == NULL) goto ADDR_MISMATCH; /* Below, in 'A' handler */
switch (*ptr++)
(void) tls_import_cert(ptr, &addr->ourcert);
break;
- #ifndef DISABLE_OCSP
+# ifndef DISABLE_OCSP
case '4':
addr->ocsp = OCSP_NOT_REQ;
if (*ptr)
addr->ocsp = *ptr - '0';
break;
- #endif
+# endif
}
while (*ptr++);
break;
- #endif /*SUPPORT_TLS*/
+#endif /*SUPPORT_TLS*/
case 'C': /* client authenticator information */
switch (*ptr++)
break;
#endif
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
case 'D':
if (addr == NULL) break;
memcpy(&(addr->dsn_aware), ptr, sizeof(addr->dsn_aware));
ptr += sizeof(addr->dsn_aware);
DEBUG(D_deliver) debug_printf("DSN read: addr->dsn_aware = %d\n", addr->dsn_aware);
break;
- #endif
+#endif
case 'A':
if (addr == NULL)
that it can use either of them, though it prefers O_NONBLOCK, which
distinguishes between EOF and no-more-data. */
- #ifdef O_NONBLOCK
+#ifdef O_NONBLOCK
(void)fcntl(pfd[pipe_read], F_SETFL, O_NONBLOCK);
- #else
+#else
(void)fcntl(pfd[pipe_read], F_SETFL, O_NDELAY);
- #endif
+#endif
/* If the maximum number of subprocesses already exist, wait for a process
to finish. If we ran out of file descriptors, parmax will have been reduced
if (tls_out.certificate_verified) setflag(addr, af_cert_verified);
/* Use an X item only if there's something to send */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (addr->cipher)
{
ptr = big_buffer;
*ptr++ = 0;
rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
}
- #ifndef DISABLE_OCSP
+# ifndef DISABLE_OCSP
if (addr->ocsp > OCSP_NOT_REQ)
{
ptr = big_buffer;
while(*ptr++);
rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
}
- # endif
- #endif /*SUPPORT_TLS*/
+# endif
+#endif /*SUPPORT_TLS*/
if (client_authenticator)
{
rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
}
- #ifndef DISABLE_PRDR
+#ifndef DISABLE_PRDR
if (addr->flags & af_prdr_used)
rmt_dlv_checked_write(fd, "P", 1);
- #endif
+#endif
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
big_buffer[0] = 'D';
memcpy(big_buffer+1, &addr->dsn_aware, sizeof(addr->dsn_aware));
rmt_dlv_checked_write(fd, big_buffer, sizeof(addr->dsn_aware) + 1);
DEBUG(D_deliver) debug_printf("DSN write: addr->dsn_aware = %d\n", addr->dsn_aware);
- #endif
+#endif
/* Retry information: for most success cases this will be null. */
if (deliver_freeze)
{
- #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
+#ifdef SUPPORT_MOVE_FROZEN_MESSAGES
/* Moving to another directory removes the message from Exim's view. Other
tools must be used to deal with it. Logging of this action happens in
spool_move_message() and its subfunctions. */
if (move_frozen_messages &&
spool_move_message(id, message_subdir, US"", US"F"))
return continue_closedown(); /* yields DELIVER_NOT_ATTEMPTED */
- #endif
+#endif
/* For all frozen messages (bounces or not), timeout_frozen_after sets the
maximum time to keep messages that are frozen. Thaw if we reach it, with a
if (r->pno >= 0)
new->onetime_parent = recipients_list[r->pno].address;
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
/* If DSN support is enabled, set the dsn flags and the original receipt
to be passed on to other DSN enabled MTAs */
new->dsn_flags = r->dsn_flags & rf_dsnflags;
new->dsn_orcpt = r->orcpt;
DEBUG(D_deliver) debug_printf("DSN: set orcpt: %s flags: %d\n", new->dsn_orcpt, new->dsn_flags);
- #endif
+#endif
switch (process_recipients)
{
regex_must_compile(US"\\n250[\\s\\-]AUTH\\s+([\\-\\w\\s]+)(?:\\n|$)",
FALSE, TRUE);
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (regex_STARTTLS == NULL) regex_STARTTLS =
regex_must_compile(US"\\n250[\\s\\-]STARTTLS(\\s|\\n|$)", FALSE, TRUE);
- #endif
+#endif
- #ifndef DISABLE_PRDR
+#ifndef DISABLE_PRDR
if (regex_PRDR == NULL) regex_PRDR =
regex_must_compile(US"\\n250[\\s\\-]PRDR(\\s|\\n|$)", FALSE, TRUE);
- #endif
+#endif
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
/* Set the regex to check for DSN support on remote MTA */
if (regex_DSN == NULL) regex_DSN =
regex_must_compile(US"\\n250[\\s\\-]DSN(\\s|\\n|$)", FALSE, TRUE);
- #endif
+#endif
/* Now sort the addresses if required, and do the deliveries. The yield of
do_remote_deliveries is FALSE when mua_wrapper is set and all addresses
/* Move the message off the spool if reqested */
- #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
+#ifdef SUPPORT_MOVE_FROZEN_MESSAGES
if (deliver_freeze && move_frozen_messages)
(void)spool_move_message(id, message_subdir, US"", US"F");
- #endif
+#endif
}
/* Closing the data file frees the lock; if the file has been unlinked it
{ "host_data", vtype_stringptr, &host_data },
{ "host_lookup_deferred",vtype_int, &host_lookup_deferred },
{ "host_lookup_failed", vtype_int, &host_lookup_failed },
+ { "host_port", vtype_int, &deliver_host_port },
{ "inode", vtype_ino, &deliver_inode },
{ "interface_address", vtype_stringptr, &interface_address },
{ "interface_port", vtype_int, &interface_port },
{ "tod_zone", vtype_todzone, NULL },
{ "tod_zulu", vtype_todzulu, NULL },
#ifdef EXPERIMENTAL_TPDA
+ { "tpda_data", vtype_stringptr, &tpda_data },
+
+ /*XXX want to use generic vars for as many of these as possible*/
{ "tpda_defer_errno", vtype_int, &tpda_defer_errno },
- { "tpda_defer_errstr", vtype_stringptr, &tpda_defer_errstr },
- { "tpda_delivery_confirmation", vtype_stringptr, &tpda_delivery_confirmation },
- { "tpda_delivery_domain", vtype_stringptr, &tpda_delivery_domain },
- { "tpda_delivery_fqdn", vtype_stringptr, &tpda_delivery_fqdn },
- { "tpda_delivery_ip", vtype_stringptr, &tpda_delivery_ip },
- { "tpda_delivery_local_part",vtype_stringptr,&tpda_delivery_local_part },
- { "tpda_delivery_port", vtype_int, &tpda_delivery_port },
+
+ { "tpda_event", vtype_stringptr, &tpda_event },
#endif
{ "transport_name", vtype_stringptr, &transport_name },
{ "value", vtype_stringptr, &lookup_value },
extern uschar * tls_cert_fprt_sha256(void *);
extern int tls_client_start(int, host_item *, address_item *,
- void *);
+ transport_instance *);
extern void tls_close(BOOL, BOOL);
extern int tls_export_cert(uschar *, size_t, void *);
extern int tls_feof(void);
extern void sigalrm_handler(int);
extern BOOL smtp_buffered(void);
extern void smtp_closedown(uschar *);
-extern int smtp_connect(host_item *, int, int, uschar *, int, BOOL, const uschar *);
+extern int smtp_connect(host_item *, int, int, uschar *, int, BOOL, const uschar *
+#ifdef EXPERIMENTAL_TPDA
+ , uschar *
+#endif
+ );
extern int smtp_feof(void);
extern int smtp_ferror(void);
extern uschar *smtp_get_connection_info(void);
uschar *deliver_home = NULL;
uschar *deliver_host = NULL;
uschar *deliver_host_address = NULL;
+int deliver_host_port = 0;
uschar *deliver_in_buffer = NULL;
ino_t deliver_inode = 0;
uschar *deliver_localpart = NULL;
#ifdef EXPERIMENTAL_TPDA
int tpda_defer_errno = 0;
-uschar *tpda_defer_errstr = NULL;
-uschar *tpda_delivery_ip = NULL;
-int tpda_delivery_port = 0;
-uschar *tpda_delivery_fqdn = NULL;
-uschar *tpda_delivery_local_part= NULL;
-uschar *tpda_delivery_domain = NULL;
-uschar *tpda_delivery_confirmation = NULL;
+uschar *tpda_event = NULL;
+uschar *tpda_data = NULL;
#endif
transport_instance *transports = NULL;
extern uschar *deliver_host; /* (First) host for routed local deliveries */
/* Remote host for filter */
extern uschar *deliver_host_address; /* Address for remote delivery filter */
+extern int deliver_host_port; /* Address for remote delivery filter */
extern uschar *deliver_in_buffer; /* Buffer for copying file */
extern ino_t deliver_inode; /* Inode for appendfile */
extern uschar *deliver_localpart; /* The local part for delivery */
#ifdef EXPERIMENTAL_TPDA
extern int tpda_defer_errno; /* error number set when a remote delivery is deferred with a host error */
-extern uschar *tpda_defer_errstr; /* error string set when a remote delivery is deferred with a host error */
-extern uschar *tpda_delivery_ip; /* IP of host, which has accepted delivery */
-extern int tpda_delivery_port; /* port of host, which has accepted delivery */
-extern uschar *tpda_delivery_fqdn; /* FQDN of host, which has accepted delivery */
-extern uschar *tpda_delivery_local_part;/* local part of address being delivered */
-extern uschar *tpda_delivery_domain; /* domain part of address being delivered */
-extern uschar *tpda_delivery_confirmation; /* SMTP confirmation message */
+extern uschar *tpda_event; /* event classification */
+extern uschar *tpda_data;; /* event data */
#endif
extern uschar *transport_name; /* Name of transport last started */
timeout timeout value or 0
keepalive TRUE to use keepalive
dscp DSCP value to assign to socket
+ tpda_event event expansion
Returns: connected socket number, or -1 with errno set
*/
int
smtp_connect(host_item *host, int host_af, int port, uschar *interface,
- int timeout, BOOL keepalive, const uschar *dscp)
+ int timeout, BOOL keepalive, const uschar *dscp
+#ifdef EXPERIMENTAL_TPDA
+ , uschar * tpda_event
+#endif
+ )
{
int on = 1;
int save_errno = 0;
host->address, port, interface);
}
+#ifdef EXPERIMENTAL_TPDA
+ /*XXX Called from both delivery and verify. Is that status observable? */
+ deliver_host_address = host->address;
+ deliver_host_port = port;
+ if (tpda_raise_event(tpda_event, US"tcp:connect", NULL) == DEFER) return -1;
+#endif
+
/* Create the socket */
if ((sock = ip_socket(SOCK_STREAM, host_af)) < 0) return -1;
BOOL log_defer_output;
BOOL retry_use_local_part; /* Defaults true for local, false for remote */
#ifdef EXPERIMENTAL_TPDA
- uschar *tpda_delivery_action; /* String to expand on success */
+ uschar *tpda_event_action; /* String to expand on notable events */
#endif
} transport_instance;
# warning "GnuTLS library version too old; define DISABLE_OCSP in Makefile"
# define DISABLE_OCSP
#endif
+#if GNUTLS_VERSION_NUMBER < 0x020a00 && defined(EXPERIMENTAL_TPDA)
+# warning "GnuTLS library version too old; TPDA tls:cert event unsupported"
+# undef EXPERIMENTAL_TPDA
+#endif
#ifndef DISABLE_OCSP
# include <gnutls/ocsp.h>
#ifdef EXPERIMENTAL_CERTNAMES
uschar *exp_tls_verify_cert_hostnames;
#endif
+#ifdef EXPERIMENTAL_TPDA
+ uschar *event_action;
+#endif
tls_support *tlsp; /* set in tls_init() */
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
#ifdef EXPERIMENTAL_CERTNAMES
NULL,
+#endif
+#ifdef EXPERIMENTAL_TPDA
+ NULL,
#endif
NULL,
NULL, 0, 0, 0, 0,
single-threaded to keep from processing data on an inbound TLS connection while
talking to another TLS connection for an outbound check. This does mean that
there's no way for heart-beats to be responded to, for the duration of the
-second connection. */
+second connection.
+XXX But see gnutls_session_get_ptr()
+*/
static exim_gnutls_state_st state_server, state_client;
the library logging; a value less than 0 disables the calls to set up logging
callbacks. */
#ifndef EXIM_GNUTLS_LIBRARY_LOG_LEVEL
-#define EXIM_GNUTLS_LIBRARY_LOG_LEVEL -1
+# define EXIM_GNUTLS_LIBRARY_LOG_LEVEL -1
#endif
#ifndef EXIM_CLIENT_DH_MIN_BITS
-#define EXIM_CLIENT_DH_MIN_BITS 1024
+# define EXIM_CLIENT_DH_MIN_BITS 1024
#endif
/* With GnuTLS 2.12.x+ we have gnutls_sec_param_to_pk_bits() with which we
can ask for a bit-strength. Without that, we stick to the constant we had
before, for now. */
#ifndef EXIM_SERVER_DH_BITS_PRE2_12
-#define EXIM_SERVER_DH_BITS_PRE2_12 1024
+# define EXIM_SERVER_DH_BITS_PRE2_12 1024
#endif
#define exim_gnutls_err_check(Label) do { \
#endif
+#ifdef EXPERIMENTAL_TPDA
+/*
+We use this callback to get observability and detail-level control
+for an exim client TLS connection, raising a TPDA tls:cert event
+for each cert in the chain presented by the server. Any event
+can deny verification.
+
+Return 0 for the handshake to continue or non-zero to terminate.
+*/
+
+static int
+client_verify_cb(gnutls_session_t session)
+{
+const gnutls_datum * cert_list;
+unsigned int cert_list_size = 0;
+gnutls_x509_crt_t crt;
+int rc;
+exim_gnutls_state_st * state = gnutls_session_get_ptr(session);
+
+cert_list = gnutls_certificate_get_peers(session, &cert_list_size);
+if (cert_list)
+ while (cert_list_size--)
+ {
+ rc = import_cert(&cert_list[cert_list_size], &crt);
+ if (rc != GNUTLS_E_SUCCESS)
+ {
+ DEBUG(D_tls) debug_printf("TLS: peer cert problem: depth %d: %s\n",
+ cert_list_size, gnutls_strerror(rc));
+ break;
+ }
+
+ state->tlsp->peercert = crt;
+ if (tpda_raise_event(state->event_action,
+ US"tls:cert", string_sprintf("%d", cert_list_size)) == DEFER)
+ {
+ log_write(0, LOG_MAIN,
+ "SSL verify denied by event-action: depth=%d", cert_list_size);
+ return 1; /* reject */
+ }
+ state->tlsp->peercert = NULL;
+ }
+
+return 0;
+}
+
+#endif
fd the fd of the connection
host connected host (for messages)
addr the first address (not used)
- ob smtp transport options
+ tb transport (always smtp)
Returns: OK/DEFER/FAIL (because using common functions),
but for a client, DEFER and FAIL have the same meaning
int
tls_client_start(int fd, host_item *host,
address_item *addr ARG_UNUSED,
- void *v_ob)
+ transport_instance *tb)
{
-smtp_transport_options_block *ob = v_ob;
+smtp_transport_options_block *ob =
+ (smtp_transport_options_block *)tb->options_block;
int rc;
const char *error;
exim_gnutls_state_st *state = NULL;
}
#endif
+#ifdef EXPERIMENTAL_TPDA
+if (tb->tpda_event_action)
+ {
+ state->event_action = tb->tpda_event_action;
+ gnutls_session_set_ptr(state->session, state);
+ gnutls_certificate_set_verify_function(state->x509_cred, client_verify_cb);
+ }
+#endif
+
gnutls_transport_set_ptr(state->session, (gnutls_transport_ptr)(long) fd);
state->fd_in = fd;
state->fd_out = fd;
#ifdef EXPERIMENTAL_CERTNAMES
uschar * verify_cert_hostnames;
#endif
+#ifdef EXPERIMENTAL_TPDA
+ uschar * event_action;
+#endif
} tls_ext_ctx_cb;
/* should figure out a cleanup of API to handle state preserved per
optional verification for this case is done when requesting SSL to verify, by
setting SSL_VERIFY_FAIL_IF_NO_PEER_CERT in the non-optional case.
+May be called multiple times for different issues with a certificate, even
+for a given "depth" in the certificate chain.
+
Arguments:
state current yes/no state as 1/0
x509ctx certificate information.
tls_support *tlsp, BOOL *calledp, BOOL *optionalp)
{
X509 * cert = X509_STORE_CTX_get_current_cert(x509ctx);
+int depth = X509_STORE_CTX_get_error_depth(x509ctx);
static uschar txt[256];
X509_NAME_oneline(X509_get_subject_name(cert), CS txt, sizeof(txt));
if (state == 0)
{
log_write(0, LOG_MAIN, "SSL verify error: depth=%d error=%s cert=%s",
- X509_STORE_CTX_get_error_depth(x509ctx),
+ depth,
X509_verify_cert_error_string(X509_STORE_CTX_get_error(x509ctx)),
txt);
tlsp->certificate_verified = FALSE;
"tls_try_verify_hosts)\n");
}
-else if (X509_STORE_CTX_get_error_depth(x509ctx) != 0)
+else if (depth != 0)
{
- DEBUG(D_tls) debug_printf("SSL verify ok: depth=%d SN=%s\n",
- X509_STORE_CTX_get_error_depth(x509ctx), txt);
+ DEBUG(D_tls) debug_printf("SSL verify ok: depth=%d SN=%s\n", depth, txt);
#ifndef DISABLE_OCSP
if (tlsp == &tls_out && client_static_cbinfo->u_ocsp.client.verify_store)
{ /* client, wanting stapling */
cert))
ERR_clear_error();
}
+#endif
+#ifdef EXPERIMENTAL_TPDA
+ if (tlsp == &tls_out && client_static_cbinfo->event_action)
+ {
+ tlsp->peercert = X509_dup(cert);
+ if (tpda_raise_event(client_static_cbinfo->event_action,
+ US"tls:cert", string_sprintf("%d", depth)) == DEFER)
+ {
+ log_write(0, LOG_MAIN, "SSL verify denied by event-action: "
+ "depth=%d cert=%s", depth, txt);
+ tlsp->certificate_verified = FALSE;
+ *calledp = TRUE;
+ return 0; /* reject */
+ }
+ X509_free(tlsp->peercert);
+ tlsp->peercert = NULL;
+ }
#endif
}
else
return 0; /* reject */
}
# endif
+#endif /*EXPERIMENTAL_CERTNAMES*/
+
+#ifdef EXPERIMENTAL_TPDA
+ if (tlsp == &tls_out)
+ {
+ if (tpda_raise_event(client_static_cbinfo->event_action,
+ US"tls:cert", US"0") == DEFER)
+ {
+ log_write(0, LOG_MAIN, "SSL verify denied by event-action: "
+ "depth=0 cert=%s", txt);
+ tlsp->certificate_verified = FALSE;
+ *calledp = TRUE;
+ return 0; /* reject */
+ }
+ }
#endif
DEBUG(D_tls) debug_printf("SSL%s verify ok: depth=0 SN=%s\n",
*calledp = TRUE;
}
-return 1; /* accept */
+return 1; /* accept, at least for this level */
}
static int
long init_options;
int rc;
BOOL okay;
-tls_ext_ctx_cb *cbinfo;
+tls_ext_ctx_cb * cbinfo;
cbinfo = store_malloc(sizeof(tls_ext_ctx_cb));
cbinfo->certificate = certificate;
cbinfo->dhparam = dhparam;
cbinfo->server_cipher_list = NULL;
cbinfo->host = host;
+#ifdef EXPERIMENTAL_TPDA
+cbinfo->event_action = NULL;
+#endif
SSL_load_error_strings(); /* basic set up */
OpenSSL_add_ssl_algorithms();
fd the fd of the connection
host connected host (for messages)
addr the first address
- ob smtp transport options
+ tb transport (always smtp)
Returns: OK on success
FAIL otherwise - note that tls_error() will not give DEFER
int
tls_client_start(int fd, host_item *host, address_item *addr,
- void *v_ob)
+ transport_instance *tb)
{
-smtp_transport_options_block * ob = v_ob;
+smtp_transport_options_block * ob =
+ (smtp_transport_options_block *)tb->options_block;
static uschar txt[256];
uschar *expciphers;
X509* server_cert;
}
#endif
+#ifdef EXPERIMENTAL_TPDA
+client_static_cbinfo->event_action = tb->tpda_event_action;
+#endif
+
/* There doesn't seem to be a built-in timeout on connection. */
DEBUG(D_tls) debug_printf("Calling SSL_connect\n");
{ "shadow_transport", opt_stringptr|opt_public,
(void *)offsetof(transport_instance, shadow) },
#ifdef EXPERIMENTAL_TPDA
- { "tpda_delivery_action",opt_stringptr | opt_public,
- (void *)offsetof(transport_instance, tpda_delivery_action) },
+ { "tpda_event_action",opt_stringptr | opt_public,
+ (void *)offsetof(transport_instance, tpda_event_action) },
#endif
{ "transport_filter", opt_stringptr|opt_public,
(void *)offsetof(transport_instance, filter_command) },
{ "tls_verify_hosts", opt_stringptr,
(void *)offsetof(smtp_transport_options_block, tls_verify_hosts) }
#endif
-#ifdef EXPERIMENTAL_TPDA
- ,{ "tpda_host_defer_action", opt_stringptr,
- (void *)offsetof(smtp_transport_options_block, tpda_host_defer_action) },
-#endif
};
/* Size of the options list. An extern variable has to be used so that its
NULL, /* dkim_sign_headers */
NULL /* dkim_strict */
#endif
-#ifdef EXPERIMENTAL_TPDA
- ,NULL /* tpda_host_defer_action */
-#endif
};
#ifdef EXPERIMENTAL_DSN
Returns: TRUE if an SMTP "QUIT" command should be sent, else FALSE
*/
-static BOOL check_response(host_item *host, int *errno_value, int more_errno,
+static BOOL
+check_response(host_item *host, int *errno_value, int more_errno,
uschar *buffer, int *yield, uschar **message, BOOL *pass_message)
{
uschar *pl = US"";
It might, for example, be used to write to the database log.
Arguments:
- ob transport options block
addr the address item containing error information
host the current host
*/
static void
-tpda_deferred(smtp_transport_options_block *ob, address_item *addr, host_item *host)
+tpda_deferred(address_item *addr, host_item *host)
{
-uschar *action = ob->tpda_host_defer_action;
+uschar * action = addr->transport->tpda_event_action;
+uschar * save_domain;
+uschar * save_local;
+
if (!action)
- return;
-
-tpda_delivery_ip = string_copy(host->address);
-tpda_delivery_port = (host->port == PORT_NONE)? 25 : host->port;
-tpda_delivery_fqdn = string_copy(host->name);
-tpda_delivery_local_part = string_copy(addr->local_part);
-tpda_delivery_domain = string_copy(addr->domain);
-tpda_defer_errno = addr->basic_errno;
-
-tpda_defer_errstr = addr->message
- ? addr->basic_errno > 0
- ? string_sprintf("%s: %s", addr->message, strerror(addr->basic_errno))
- : string_copy(addr->message)
- : addr->basic_errno > 0
- ? string_copy(US strerror(addr->basic_errno))
- : NULL;
+ return;
-DEBUG(D_transport)
- debug_printf(" TPDA(host defer): tpda_host_defer_action=|%s| tpda_delivery_IP=%s\n",
- action, tpda_delivery_ip);
+save_domain = deliver_domain;
+save_local = deliver_localpart;
+
+/*XXX would ip & port already be set up? */
+deliver_host_address = string_copy(host->address);
+deliver_host_port = (host->port == PORT_NONE)? 25 : host->port;
+tpda_defer_errno = addr->basic_errno;
router_name = addr->router->name;
transport_name = addr->transport->name;
-if (!expand_string(action) && *expand_string_message)
- log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand tpda_defer_action in %s: %s\n",
- transport_name, expand_string_message);
+deliver_domain = addr->domain;
+deliver_localpart = addr->local_part;
+
+(void) tpda_raise_event(action, US"msg:host:defer",
+ addr->message
+ ? addr->basic_errno > 0
+ ? string_sprintf("%s: %s", addr->message, strerror(addr->basic_errno))
+ : string_copy(addr->message)
+ : addr->basic_errno > 0
+ ? string_copy(US strerror(addr->basic_errno))
+ : NULL);
+
+deliver_localpart = save_local;
+deliver_domain = save_domain;
router_name = transport_name = NULL;
}
#endif
smtp_transport_options_block *ob, BOOL is_esmtp,
smtp_inblock *ibp, smtp_outblock *obp)
{
- int require_auth;
- uschar *fail_reason = US"server did not advertise AUTH support";
+int require_auth;
+uschar *fail_reason = US"server did not advertise AUTH support";
- smtp_authenticated = FALSE;
- client_authenticator = client_authenticated_id = client_authenticated_sender = NULL;
- require_auth = verify_check_this_host(&(ob->hosts_require_auth), NULL,
- host->name, host->address, NULL);
+smtp_authenticated = FALSE;
+client_authenticator = client_authenticated_id = client_authenticated_sender = NULL;
+require_auth = verify_check_this_host(&(ob->hosts_require_auth), NULL,
+ host->name, host->address, NULL);
- if (is_esmtp && !regex_AUTH) regex_AUTH =
- regex_must_compile(US"\\n250[\\s\\-]AUTH\\s+([\\-\\w\\s]+)(?:\\n|$)",
- FALSE, TRUE);
+if (is_esmtp && !regex_AUTH) regex_AUTH =
+ regex_must_compile(US"\\n250[\\s\\-]AUTH\\s+([\\-\\w\\s]+)(?:\\n|$)",
+ FALSE, TRUE);
- if (is_esmtp && regex_match_and_setup(regex_AUTH, buffer, 0, -1))
- {
- uschar *names = string_copyn(expand_nstring[1], expand_nlength[1]);
- expand_nmax = -1; /* reset */
+if (is_esmtp && regex_match_and_setup(regex_AUTH, buffer, 0, -1))
+ {
+ uschar *names = string_copyn(expand_nstring[1], expand_nlength[1]);
+ expand_nmax = -1; /* reset */
- /* Must not do this check until after we have saved the result of the
- regex match above. */
+ /* Must not do this check until after we have saved the result of the
+ regex match above. */
- if (require_auth == OK ||
- verify_check_this_host(&(ob->hosts_try_auth), NULL, host->name,
- host->address, NULL) == OK)
- {
- auth_instance *au;
- fail_reason = US"no common mechanisms were found";
+ if (require_auth == OK ||
+ verify_check_this_host(&(ob->hosts_try_auth), NULL, host->name,
+ host->address, NULL) == OK)
+ {
+ auth_instance *au;
+ fail_reason = US"no common mechanisms were found";
- DEBUG(D_transport) debug_printf("scanning authentication mechanisms\n");
+ DEBUG(D_transport) debug_printf("scanning authentication mechanisms\n");
- /* Scan the configured authenticators looking for one which is configured
- for use as a client, which is not suppressed by client_condition, and
- whose name matches an authentication mechanism supported by the server.
- If one is found, attempt to authenticate by calling its client function.
- */
+ /* Scan the configured authenticators looking for one which is configured
+ for use as a client, which is not suppressed by client_condition, and
+ whose name matches an authentication mechanism supported by the server.
+ If one is found, attempt to authenticate by calling its client function.
+ */
- for (au = auths; !smtp_authenticated && au != NULL; au = au->next)
- {
- uschar *p = names;
- if (!au->client ||
- (au->client_condition != NULL &&
- !expand_check_condition(au->client_condition, au->name,
- US"client authenticator")))
- {
- DEBUG(D_transport) debug_printf("skipping %s authenticator: %s\n",
- au->name,
- (au->client)? "client_condition is false" :
- "not configured as a client");
- continue;
- }
+ for (au = auths; !smtp_authenticated && au != NULL; au = au->next)
+ {
+ uschar *p = names;
+ if (!au->client ||
+ (au->client_condition != NULL &&
+ !expand_check_condition(au->client_condition, au->name,
+ US"client authenticator")))
+ {
+ DEBUG(D_transport) debug_printf("skipping %s authenticator: %s\n",
+ au->name,
+ (au->client)? "client_condition is false" :
+ "not configured as a client");
+ continue;
+ }
- /* Loop to scan supported server mechanisms */
+ /* Loop to scan supported server mechanisms */
- while (*p != 0)
- {
- int rc;
- int len = Ustrlen(au->public_name);
- while (isspace(*p)) p++;
+ while (*p != 0)
+ {
+ int rc;
+ int len = Ustrlen(au->public_name);
+ while (isspace(*p)) p++;
- if (strncmpic(au->public_name, p, len) != 0 ||
- (p[len] != 0 && !isspace(p[len])))
- {
- while (*p != 0 && !isspace(*p)) p++;
- continue;
- }
+ if (strncmpic(au->public_name, p, len) != 0 ||
+ (p[len] != 0 && !isspace(p[len])))
+ {
+ while (*p != 0 && !isspace(*p)) p++;
+ continue;
+ }
- /* Found data for a listed mechanism. Call its client entry. Set
- a flag in the outblock so that data is overwritten after sending so
- that reflections don't show it. */
+ /* Found data for a listed mechanism. Call its client entry. Set
+ a flag in the outblock so that data is overwritten after sending so
+ that reflections don't show it. */
- fail_reason = US"authentication attempt(s) failed";
- obp->authenticating = TRUE;
- rc = (au->info->clientcode)(au, ibp, obp,
- ob->command_timeout, buffer, bufsize);
- obp->authenticating = FALSE;
- DEBUG(D_transport) debug_printf("%s authenticator yielded %d\n",
- au->name, rc);
+ fail_reason = US"authentication attempt(s) failed";
+ obp->authenticating = TRUE;
+ rc = (au->info->clientcode)(au, ibp, obp,
+ ob->command_timeout, buffer, bufsize);
+ obp->authenticating = FALSE;
+ DEBUG(D_transport) debug_printf("%s authenticator yielded %d\n",
+ au->name, rc);
- /* A temporary authentication failure must hold up delivery to
- this host. After a permanent authentication failure, we carry on
- to try other authentication methods. If all fail hard, try to
- deliver the message unauthenticated unless require_auth was set. */
+ /* A temporary authentication failure must hold up delivery to
+ this host. After a permanent authentication failure, we carry on
+ to try other authentication methods. If all fail hard, try to
+ deliver the message unauthenticated unless require_auth was set. */
- switch(rc)
- {
- case OK:
- smtp_authenticated = TRUE; /* stops the outer loop */
- client_authenticator = au->name;
- if (au->set_client_id != NULL)
- client_authenticated_id = expand_string(au->set_client_id);
- break;
-
- /* Failure after writing a command */
-
- case FAIL_SEND:
- return FAIL_SEND;
-
- /* Failure after reading a response */
-
- case FAIL:
- if (errno != 0 || buffer[0] != '5') return FAIL;
- log_write(0, LOG_MAIN, "%s authenticator failed H=%s [%s] %s",
- au->name, host->name, host->address, buffer);
- break;
-
- /* Failure by some other means. In effect, the authenticator
- decided it wasn't prepared to handle this case. Typically this
- is the result of "fail" in an expansion string. Do we need to
- log anything here? Feb 2006: a message is now put in the buffer
- if logging is required. */
-
- case CANCELLED:
- if (*buffer != 0)
- log_write(0, LOG_MAIN, "%s authenticator cancelled "
- "authentication H=%s [%s] %s", au->name, host->name,
- host->address, buffer);
- break;
-
- /* Internal problem, message in buffer. */
-
- case ERROR:
- set_errno(addrlist, 0, string_copy(buffer), DEFER, FALSE);
- return ERROR;
- }
+ switch(rc)
+ {
+ case OK:
+ smtp_authenticated = TRUE; /* stops the outer loop */
+ client_authenticator = au->name;
+ if (au->set_client_id != NULL)
+ client_authenticated_id = expand_string(au->set_client_id);
+ break;
+
+ /* Failure after writing a command */
+
+ case FAIL_SEND:
+ return FAIL_SEND;
+
+ /* Failure after reading a response */
+
+ case FAIL:
+ if (errno != 0 || buffer[0] != '5') return FAIL;
+ log_write(0, LOG_MAIN, "%s authenticator failed H=%s [%s] %s",
+ au->name, host->name, host->address, buffer);
+ break;
+
+ /* Failure by some other means. In effect, the authenticator
+ decided it wasn't prepared to handle this case. Typically this
+ is the result of "fail" in an expansion string. Do we need to
+ log anything here? Feb 2006: a message is now put in the buffer
+ if logging is required. */
+
+ case CANCELLED:
+ if (*buffer != 0)
+ log_write(0, LOG_MAIN, "%s authenticator cancelled "
+ "authentication H=%s [%s] %s", au->name, host->name,
+ host->address, buffer);
+ break;
+
+ /* Internal problem, message in buffer. */
+
+ case ERROR:
+ set_errno(addrlist, 0, string_copy(buffer), DEFER, FALSE);
+ return ERROR;
+ }
- break; /* If not authenticated, try next authenticator */
- } /* Loop for scanning supported server mechanisms */
- } /* Loop for further authenticators */
- }
+ break; /* If not authenticated, try next authenticator */
+ } /* Loop for scanning supported server mechanisms */
+ } /* Loop for further authenticators */
}
+ }
- /* If we haven't authenticated, but are required to, give up. */
+/* If we haven't authenticated, but are required to, give up. */
- if (require_auth == OK && !smtp_authenticated)
- {
- set_errno(addrlist, ERRNO_AUTHFAIL,
- string_sprintf("authentication required but %s", fail_reason), DEFER,
- FALSE);
- return DEFER;
- }
+if (require_auth == OK && !smtp_authenticated)
+ {
+ set_errno(addrlist, ERRNO_AUTHFAIL,
+ string_sprintf("authentication required but %s", fail_reason), DEFER,
+ FALSE);
+ return DEFER;
+ }
- return OK;
+return OK;
}
if (continue_hostname == NULL)
{
+ /* This puts port into host->port */
inblock.sock = outblock.sock =
smtp_connect(host, host_af, port, interface, ob->connect_timeout,
- ob->keepalive, ob->dscp); /* This puts port into host->port */
+ ob->keepalive, ob->dscp
+#ifdef EXPERIMENTAL_TPDA
+ , tblock->tpda_event_action
+#endif
+ );
if (inblock.sock < 0)
{
if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
ob->command_timeout)) goto RESPONSE_FAILED;
+#ifdef EXPERIMENTAL_TPDA
+ if (tpda_raise_event(tblock->tpda_event_action, US"smtp:connect", buffer)
+ == DEFER)
+ {
+ uschar *message = US"deferred by smtp:connect event expansion";
+ set_errno(addrlist, 0, message, DEFER, FALSE);
+ yield = DEFER;
+ goto SEND_QUIT;
+ }
+#endif
+
/* Now check if the helo_data expansion went well, and sign off cleanly if
it didn't. */
/* Alas; be careful, since this goto is not an error-out, so conceivably
we might set data between here and the target which we assume to exist
and be usable. I can see this coming back to bite us. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (smtps)
{
tls_offered = TRUE;
smtp_command = US"SSL-on-connect";
goto TLS_NEGOTIATE;
}
- #endif
+#endif
if (esmtp)
{
/* Set tls_offered if the response to EHLO specifies support for STARTTLS. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
tls_offered = esmtp &&
pcre_exec(regex_STARTTLS, NULL, CS buffer, Ustrlen(buffer), 0,
PCRE_EOPT, NULL, 0) >= 0;
- #endif
+#endif
- #ifndef DISABLE_PRDR
+#ifndef DISABLE_PRDR
prdr_offered = esmtp &&
(pcre_exec(regex_PRDR, NULL, CS buffer, Ustrlen(buffer), 0,
PCRE_EOPT, NULL, 0) >= 0) &&
if (prdr_offered)
{DEBUG(D_transport) debug_printf("PRDR usable\n");}
- #endif
+#endif
}
/* For continuing deliveries down the same channel, the socket is the standard
else
TLS_NEGOTIATE:
{
- int rc = tls_client_start(inblock.sock, host, addrlist, ob);
+ int rc = tls_client_start(inblock.sock, host, addrlist, tblock);
/* TLS negotiation failed; give an error. From outside, this function may
be called again to try in clear on a new connection, if the options permit
we skip this. */
if (continue_hostname == NULL
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
|| tls_out.active >= 0
- #endif
+#endif
)
{
/* Set for IGNOREQUOTA if the response to LHLO specifies support and the
{ /* at least two recipients to send */
prdr_active = TRUE;
sprintf(CS p, " PRDR"); p += 5;
- goto prdr_is_active;
+ break;
}
break;
}
}
-prdr_is_active:
#endif
#ifdef EXPERIMENTAL_DSN
cases where non-standard addresses (e.g. without domains) might be required. */
if (smtp_mail_auth_str(p, sizeof(buffer) - (p-buffer), addrlist, ob))
- return ERROR;
+ {
+ yield = ERROR;
+ goto SEND_QUIT;
+ }
/* From here until we send the DATA command, we can make use of PIPELINING
if the server host supports it. The code has to be able to check the responses
int count;
BOOL no_flush;
- #ifdef EXPERIMENTAL_DSN
- if(smtp_use_dsn)
- addr->dsn_aware = dsn_support_yes;
- else
- addr->dsn_aware = dsn_support_no;
- #endif
+#ifdef EXPERIMENTAL_DSN
+ addr->dsn_aware = smtp_use_dsn ? dsn_support_yes : dsn_support_no;
+#endif
if (addr->transport_return != PENDING_DEFER) continue;
address_count++;
no_flush = smtp_use_pipelining && (!mua_wrapper || addr->next != NULL);
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
/* Add any DSN flags to the rcpt command and add to the sent string */
p = buffer;
*p = 0;
- if ((smtp_use_dsn) && ((addr->dsn_flags & rf_dsnlasthop) != 1))
+ if (smtp_use_dsn && (addr->dsn_flags & rf_dsnlasthop) != 1)
{
if ((addr->dsn_flags & rf_dsnflags) != 0)
{
strcpy(p, " NOTIFY=");
while (*p) p++;
for (i = 0; i < 4; i++)
- {
if ((addr->dsn_flags & rf_list[i]) != 0)
{
if (!first) *p++ = ',';
strcpy(p, rf_names[i]);
while (*p) p++;
}
- }
}
- if (addr->dsn_orcpt != NULL) {
+ if (addr->dsn_orcpt != NULL)
+ {
string_format(p, sizeof(buffer) - (p-buffer), " ORCPT=%s",
addr->dsn_orcpt);
while (*p) p++;
}
}
- #endif
+#endif
/* Now send the RCPT command, and process outstanding responses when
yield as OK, because this error can often mean that there is a problem with
just one address, so we don't want to delay the host. */
- #ifdef EXPERIMENTAL_DSN
+#ifdef EXPERIMENTAL_DSN
count = smtp_write_command(&outblock, no_flush, "RCPT TO:<%s>%s%s\r\n",
transport_rcpt_address(addr, tblock->rcpt_include_affixes), igquotstr, buffer);
- #else
+#else
count = smtp_write_command(&outblock, no_flush, "RCPT TO:<%s>%s\r\n",
transport_rcpt_address(addr, tblock->rcpt_include_affixes), igquotstr);
- #endif
+#endif
if (count < 0) goto SEND_FAILED;
if (count > 0)
DEBUG(D_transport|D_v)
debug_printf(" SMTP>> writing message and terminating \".\"\n");
transport_count = 0;
+
#ifndef DISABLE_DKIM
ok = dkim_transport_write_message(addrlist, inblock.sock,
topt_use_crlf | topt_end_dot | topt_escape_headers |
/* Set up confirmation if needed - applies only to SMTP */
if (
- #ifndef EXPERIMENTAL_TPDA
+#ifndef EXPERIMENTAL_TPDA
(log_extra_selector & LX_smtp_confirmation) != 0 &&
- #endif
+#endif
!lmtp
)
{
in message and save_errno, and setting_up will always be true. Treat as
a temporary error. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
TLS_FAILED:
code = '4';
- #endif
+#endif
/* If the failure happened while setting up the call, see if the failure was
a 5xx response (this will either be on connection, or following HELO - a 5xx
when TLS is shut down. We test for this by sending a new EHLO. If we
don't get a good response, we don't attempt to pass the socket on. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (tls_out.active >= 0)
{
tls_close(FALSE, TRUE);
smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
ob->command_timeout);
}
- #endif
+#endif
/* If the socket is successfully passed, we musn't send QUIT (or
indeed anything!) from here. */
case continue_more won't get set. */
(void)close(inblock.sock);
+
+#ifdef EXPERIMENTAL_TPDA
+(void) tpda_raise_event(tblock->tpda_event_action, US"tcp:close", NULL);
+#endif
+
continue_transport = NULL;
continue_hostname = NULL;
return yield;
addr->basic_errno = 0;
addr->more_errno = (host->mx >= 0)? 'M' : 'A';
addr->message = NULL;
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
addr->cipher = NULL;
addr->ourcert = NULL;
addr->peercert = NULL;
addr->peerdn = NULL;
addr->ocsp = OCSP_NOT_REQ;
- #endif
+#endif
}
return first_addr;
}
first_addr->basic_errno != ERRNO_TLSFAILURE)
write_logs(first_addr, host);
- #ifdef EXPERIMENTAL_TPDA
+#ifdef EXPERIMENTAL_TPDA
if (rc == DEFER)
- tpda_deferred(ob, first_addr, host);
- #endif
+ tpda_deferred(first_addr, host);
+#endif
/* If STARTTLS was accepted, but there was a failure in setting up the
TLS session (usually a certificate screwup), and the host is not in
session, so the in-clear transmission after those errors, if permitted,
happens inside smtp_deliver().] */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (rc == DEFER && first_addr->basic_errno == ERRNO_TLSFAILURE &&
ob->tls_tempfail_tryclear &&
verify_check_this_host(&(ob->hosts_require_tls), NULL, host->name,
expanded_hosts != NULL, &message_defer, TRUE);
if (rc == DEFER && first_addr->basic_errno != ERRNO_AUTHFAIL)
write_logs(first_addr, host);
- #ifdef EXPERIMENTAL_TPDA
+# ifdef EXPERIMENTAL_TPDA
if (rc == DEFER)
- tpda_deferred(ob, first_addr, host);
- #endif
+ tpda_deferred(first_addr, host);
+# endif
}
- #endif
+#endif
}
/* Delivery attempt finished */
uschar *dkim_sign_headers;
uschar *dkim_strict;
#endif
-#ifdef EXPERIMENTAL_TPDA
- uschar *tpda_host_defer_action;
-#endif
} smtp_transport_options_block;
/* Data for reading the private options. */
deliver_host = host->name;
deliver_host_address = host->address;
+ deliver_host_port = host->port;
deliver_domain = addr->domain;
if (!smtp_get_interface(tf->interface, host_af, addr, NULL, &interface,
tls_retry_connection:
inblock.sock = outblock.sock =
- smtp_connect(host, host_af, port, interface, callout_connect, TRUE, NULL);
+ smtp_connect(host, host_af, port, interface, callout_connect, TRUE, NULL
+#ifdef EXPERIMENTAL_TPDA
+ /*XXX tpda action? NULL for now. */
+ , NULL
+#endif
+ );
/* reconsider DSCP here */
if (inblock.sock < 0)
{
/* Unless ssl-on-connect, wait for the initial greeting */
smtps_redo_greeting:
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (!smtps || (smtps && tls_out.active >= 0))
- #endif
+#endif
+ {
if (!(done= smtp_read_response(&inblock, responsebuffer, sizeof(responsebuffer), '2', callout)))
goto RESPONSE_FAILED;
+#ifdef EXPERIMENTAL_TPDA
+ if (tpda_raise_event(addr->transport->tpda_event_action,
+ US"smtp:connect", responsebuffer) == DEFER)
+ {
+ /* Logging? Debug? */
+ goto RESPONSE_FAILED;
+ }
+#endif
+ }
+
/* Not worth checking greeting line for ESMTP support */
if (!(esmtp = verify_check_this_host(&(ob->hosts_avoid_esmtp), NULL,
host->name, host->address, NULL) != OK))
tls_redo_helo:
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (smtps && tls_out.active < 0) /* ssl-on-connect, first pass */
{
tls_offered = TRUE;
ob->tls_tempfail_tryclear = FALSE;
}
- else /* all other cases */
- #endif
+ else /* all other cases */
+#endif
{ esmtp_retry:
done= FALSE;
goto RESPONSE_FAILED;
}
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
tls_offered = FALSE;
- #endif
+#endif
esmtp = FALSE;
goto esmtp_retry; /* fallback to HELO */
}
/* Set tls_offered if the response to EHLO specifies support for STARTTLS. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (esmtp && !suppress_tls && tls_out.active < 0)
- {
- if (regex_STARTTLS == NULL) regex_STARTTLS =
- regex_must_compile(US"\\n250[\\s\\-]STARTTLS(\\s|\\n|$)", FALSE, TRUE);
+ {
+ if (regex_STARTTLS == NULL) regex_STARTTLS =
+ regex_must_compile(US"\\n250[\\s\\-]STARTTLS(\\s|\\n|$)", FALSE, TRUE);
- tls_offered = pcre_exec(regex_STARTTLS, NULL, CS responsebuffer,
- Ustrlen(responsebuffer), 0, PCRE_EOPT, NULL, 0) >= 0;
+ tls_offered = pcre_exec(regex_STARTTLS, NULL, CS responsebuffer,
+ Ustrlen(responsebuffer), 0, PCRE_EOPT, NULL, 0) >= 0;
}
else
tls_offered = FALSE;
- #endif
+#endif
}
/* If TLS is available on this connection attempt to
the client not be required to use TLS. If the response is bad, copy the buffer
for error analysis. */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
if (tls_offered &&
verify_check_this_host(&(ob->hosts_avoid_tls), NULL, host->name,
host->address, NULL) != OK &&
{
if (errno != 0 || buffer2[0] == 0 ||
(buffer2[0] == '4' && !ob->tls_tempfail_tryclear))
- {
- Ustrncpy(responsebuffer, buffer2, sizeof(responsebuffer));
- done= FALSE;
- goto RESPONSE_FAILED;
- }
+ {
+ Ustrncpy(responsebuffer, buffer2, sizeof(responsebuffer));
+ done= FALSE;
+ goto RESPONSE_FAILED;
+ }
}
/* STARTTLS accepted or ssl-on-connect: try to negotiate a TLS session. */
int rc;
ob->command_timeout = callout;
- rc = tls_client_start(inblock.sock, host, addr, ob);
+ rc = tls_client_start(inblock.sock, host, addr, addr->transport);
ob->command_timeout = oldtimeout;
/* TLS negotiation failed; give an error. Try in clear on a new connection,
if the options permit it for this host. */
if (rc != OK)
{
- if (rc == DEFER && ob->tls_tempfail_tryclear && !smtps &&
- verify_check_this_host(&(ob->hosts_require_tls), NULL, host->name,
- host->address, NULL) != OK)
- {
- (void)close(inblock.sock);
- log_write(0, LOG_MAIN, "TLS session failure: delivering unencrypted "
- "to %s [%s] (not in hosts_require_tls)", host->name, host->address);
- suppress_tls = TRUE;
- goto tls_retry_connection;
- }
- /*save_errno = ERRNO_TLSFAILURE;*/
- /*message = US"failure while setting up TLS session";*/
- send_quit = FALSE;
- done= FALSE;
- goto TLS_FAILED;
- }
+ if (rc == DEFER && ob->tls_tempfail_tryclear && !smtps &&
+ verify_check_this_host(&(ob->hosts_require_tls), NULL, host->name,
+ host->address, NULL) != OK)
+ {
+ (void)close(inblock.sock);
+#ifdef EXPERIMENTAL_TPDA
+ (void) tpda_raise_event(addr->transport->tpda_event_action,
+ US"tcp:close", NULL);
+#endif
+ log_write(0, LOG_MAIN, "TLS session failure: delivering unencrypted "
+ "to %s [%s] (not in hosts_require_tls)", host->name, host->address);
+ suppress_tls = TRUE;
+ goto tls_retry_connection;
+ }
+ /*save_errno = ERRNO_TLSFAILURE;*/
+ /*message = US"failure while setting up TLS session";*/
+ send_quit = FALSE;
+ done= FALSE;
+ goto TLS_FAILED;
+ }
/* TLS session is set up. Copy info for logging. */
addr->cipher = tls_out.cipher;
/* For SMTPS we need to wait for the initial OK response, then do HELO. */
if (smtps)
- goto smtps_redo_greeting;
+ goto smtps_redo_greeting;
/* For STARTTLS we need to redo EHLO */
goto tls_redo_helo;
cutthrough_delivery= FALSE;
HDEBUG(D_acl|D_v) debug_printf("Cutthrough cancelled by presence of transport filter\n");
}
- #ifndef DISABLE_DKIM
+#ifndef DISABLE_DKIM
if (ob->dkim_domain)
{
cutthrough_delivery= FALSE;
HDEBUG(D_acl|D_v) debug_printf("Cutthrough cancelled by presence of DKIM signing\n");
}
- #endif
+#endif
}
SEND_FAILED:
cancel_cutthrough_connection("multiple verify calls");
if (send_quit) (void)smtp_write_command(&outblock, FALSE, "QUIT\r\n");
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
tls_close(FALSE, TRUE);
- #endif
+#endif
(void)close(inblock.sock);
+#ifdef EXPERIMENTAL_TPDA
+ (void) tpda_raise_event(addr->transport->tpda_event_action,
+ US"tcp:close", NULL);
+#endif
}
} /* Loop through all hosts, while !done */
accept
logger:
+ accept condition = ${if !eq {msg} {${listextract{1}{$tpda_event}}}}
warn logwrite = client ocsp status: $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
hosts_require_tls = *
hosts_request_ocsp = :
headers_add = X-TLS-out: ocsp status $tls_out_ocsp
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
# norequire: request stapling but do not verify
send_to_server2:
hosts_require_tls = *
# note no ocsp mention here
headers_add = X-TLS-out: ocsp status $tls_out_ocsp
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
# (any other name): request and verify
send_to_server3:
hosts_require_tls = *
hosts_require_ocsp = *
headers_add = X-TLS-out: ocsp status $tls_out_ocsp
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
# (any other name): request and verify, ssl-on-connect
send_to_server4:
hosts_require_tls = *
hosts_require_ocsp = *
headers_add = X-TLS-out: ocsp status $tls_out_ocsp
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
# ----- Retry -----
accept
logger:
+ accept condition = ${if !eq {msg} {${listextract{1}{$tpda_event}}}}
warn logwrite = client ocsp status: $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
headers_add = X-TLS-out: OCSP status $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
send_to_server2:
driver = smtp
headers_add = X-TLS-out: OCSP status $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
send_to_server3:
driver = smtp
headers_add = X-TLS-out: OCSP status $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
send_to_server4:
driver = smtp
headers_add = X-TLS-out: OCSP status $tls_out_ocsp \
(${listextract {${eval:$tls_out_ocsp+1}} \
{notreq:notresp:vfynotdone:failed:verified}})
- tpda_delivery_action = ${acl {logger}}
- tpda_host_defer_action = ${acl {logger}}
+ tpda_event_action = ${acl {logger}}
# ----- Retry -----
begin acl
-logger:
- accept condition = ${if eq {$acl_arg2}{domain1}}
- logwrite = \
- $acl_arg1 \
- ip <$tpda_delivery_ip> \
- port <$tpda_delivery_port> \
- fqdn <$tpda_delivery_fqdn> \
- local_part <$tpda_delivery_local_part> \
- domain <$tpda_delivery_domain> \
- confirmation <$tpda_delivery_confirmation> \
+ev_tcp:
+ accept condition = ${if eq {$tpda_event}{tcp:connect}}
+ logwrite = . [$host_address]:$sending_port
+ accept condition = ${if eq {$tpda_event}{tcp:close}}
+ logwrite = . [$sending_ip_address] -> \
+ [$host_address]:$host_port
+ accept
+
+ev_smtp:
+ accept
+ logwrite = . [$sending_ip_address] -> \
+ [$host_address]:$host_port
+ logwrite = . banner <$tpda_data>
+
+ev_msg:
+ accept condition = ${if !eq {$acl_arg2}{domain1}}
+ logwrite = $this_expansion_will_fail
+
+ accept condition = ${if eq {$acl_arg1}{msg:delivery}}
+ logwrite = . \
+ delivery \
+ ip <$host_address> \
+ port <$host_port> \
+ fqdn <$host> \
+ local_part <$local_part> \
+ domain <$domain> \
+ confirmation <$tpda_data> \
+ router <$router_name> \
+ transport <$transport_name>
+
+ accept condition = ${if eq {$acl_arg1}{msg:host:defer}}
+ logwrite = . \
+ deferral \
+ ip <$host_address> \
+ port <$host_port> \
+ fqdn <$host> \
+ local_part <$local_part> \
+ domain <$domain> \
errno <$tpda_defer_errno> \
- errstr <$tpda_defer_errstr> \
+ errstr <$tpda_data> \
router <$router_name> \
transport <$transport_name>
- accept logwrite = $this_expansion_will_fail
+logger:
+ warn logwrite = event $tpda_event
+ accept condition = ${if eq {tcp} {${listextract{1}{$tpda_event}}}}
+ acl = ev_tcp
+ accept condition = ${if eq {smtp} {${listextract{1}{$tpda_event}}}}
+ acl = ev_smtp
+ accept condition = ${if eq {msg} {${listextract{1}{$tpda_event}}}}
+ acl = ev_msg $tpda_event $acl_arg2
+
# ----- Routers -----
port = PORT_S
command_timeout = 1s
final_timeout = 1s
- tpda_delivery_action = ${acl {logger} {delivery} {$domain} }
- tpda_host_defer_action = ${acl {logger} {deferral} {$domain} }
+ tpda_event_action = ${acl {logger} {$tpda_event} {$domain} }
# End
#
begin acl
-logger:
- warn logwrite = $acl_arg1 $tpda_delivery_local_part
+
+ev_tls:
+ accept logwrite = $tpda_event depth=$tpda_data \
+ <${certextract {subject} {$tls_out_peercert}}>
+# message = noooo
+
+ev_msg:
+ warn logwrite = $acl_arg1 $local_part
warn logwrite = ${if !def:tls_out_ourcert \
- {NO CLENT CERT presented} \
+ {NO CLIENT CERT presented} \
{Our cert SN: ${certextract{subject}{$tls_out_ourcert}}}}
accept condition = ${if !def:tls_out_peercert}
logwrite = No Peer cert
# logwrite = ${certextract {ocsp_uri} {$tls_out_peercert} {OCU <$value>}{(no OCU)}}
logwrite = ${certextract {crl_uri} {$tls_out_peercert} {CRU <$value>}{(no CRU)}}
+logger:
+ accept condition = ${if eq {msg} {${listextract{1}{$tpda_event}}}}
+ acl = ev_msg $tpda_event $acl_arg2
+ accept condition = ${if eq {tls} {${listextract{1}{$tpda_event}}}}
+ message = ${acl {ev_tls}}
+ accept
# ----- Routers -----
{example.com/server1.example.com/ca_chain.pem}\
{example.net/server1.example.net/ca_chain.pem}}
- tpda_delivery_action = ${acl {logger} {delivery} {$domain} }
- tpda_host_defer_action = ${acl {logger} {deferral} {$domain} }
+ tpda_event_action = ${acl {logger} {$tpda_event} {$domain} }
# ----- Retry -----
#
begin acl
-logger:
- warn logwrite = $acl_arg1 $tpda_delivery_local_part
+
+ev_tls:
+ accept logwrite = $tpda_event depth=$tpda_data \
+ <${certextract {subject} {$tls_out_peercert}}>
+# message = nooooo
+
+ev_msg:
+ warn logwrite = $acl_arg1 $local_part
warn logwrite = ${if !def:tls_out_ourcert \
- {NO CLENT CERT presented} \
+ {NO CLIENT CERT presented} \
{Our cert SN: ${certextract{subject}{$tls_out_ourcert}}}}
accept condition = ${if !def:tls_out_peercert}
logwrite = No Peer cert
logwrite = ${certextract {ocsp_uri} {$tls_out_peercert} {OCU <$value>}{(no OCU)}}
logwrite = ${certextract {crl_uri} {$tls_out_peercert} {CRU <$value>}{(no CRU)}}
+logger:
+ accept condition = ${if eq {msg} {${listextract{1}{$tpda_event}}}}
+ acl = ev_msg $tpda_event $acl_arg2
+ accept condition = ${if eq {tls} {${listextract{1}{$tpda_event}}}}
+ message = ${acl {ev_tls}}
+ accept
# ----- Routers -----
{example.com/server1.example.com/ca_chain.pem}\
{example.net/server1.example.net/ca_chain.pem}}
- tpda_delivery_action = ${acl {logger} {delivery} {$domain} }
- tpda_host_defer_action = ${acl {logger} {deferral} {$domain} }
+ tpda_event_action = ${acl {logger} {$tpda_event} {$domain} }
# ----- Retry -----
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss
1999-03-02 09:44:33 Start queue run: pid=pppp -qqf
+1999-03-02 09:44:33 10HmaY-0005vi-00 event tcp:connect
+1999-03-02 09:44:33 10HmaY-0005vi-00 . [127.0.0.1]:-1
+1999-03-02 09:44:33 10HmaY-0005vi-00 event smtp:connect
+1999-03-02 09:44:33 10HmaY-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaY-0005vi-00 . banner <220 ESMTP>
+1999-03-02 09:44:33 10HmaY-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaY-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
1999-03-02 09:44:33 10HmaY-0005vi-00 => 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-0005vi-00 delivery ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> confirmation <250 OK> errno <0> errstr <> router <others> transport <smtp>
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:delivery
+1999-03-02 09:44:33 10HmaY-0005vi-00 . delivery ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> confirmation <250 OK> router <others> transport <smtp>
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss
1999-03-02 09:44:33 Start queue run: pid=pppp -qqf
+1999-03-02 09:44:33 10HmaX-0005vi-00 event tcp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1]:-1
+1999-03-02 09:44:33 10HmaX-0005vi-00 event smtp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaX-0005vi-00 . banner <220 ESMTP>
+1999-03-02 09:44:33 10HmaX-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@domain2 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
-1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger"
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:delivery
+1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_event_action msg:delivery in smtp: error from acl "logger"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf
1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmaZ-0005vi-00 event tcp:connect
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . [127.0.0.1]:-1
+1999-03-02 09:44:33 10HmaZ-0005vi-00 event smtp:connect
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . banner <220 ESMTP>
+1999-03-02 09:44:33 10HmaZ-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
1999-03-02 09:44:33 10HmaZ-0005vi-00 SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name: Connection timed out
-1999-03-02 09:44:33 10HmaZ-0005vi-00 deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> confirmation <> errno <110> errstr <SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name: Connection timed out> router <others> transport <smtp>
+1999-03-02 09:44:33 10HmaZ-0005vi-00 event msg:host:defer
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> errno <110> errstr <SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name: Connection timed out> router <others> transport <smtp>
1999-03-02 09:44:33 10HmaZ-0005vi-00 == userx@domain1 R=others T=smtp defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name
1999-03-02 09:44:33 10HmaZ-0005vi-00 ** userx@domain1: retry timeout exceeded
1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
+1999-03-02 09:44:33 10HmaX-0005vi-00 tls:cert depth=0 <CN=server1.example.com>
1999-03-02 09:44:33 10HmaX-0005vi-00 TLS error on connection to 127.0.0.1 [127.0.0.1] (certificate verification failed): certificate invalid
-1999-03-02 09:44:33 10HmaX-0005vi-00 deferral bad
-1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLENT CERT presented
+1999-03-02 09:44:33 10HmaX-0005vi-00 msg:host:defer bad
+1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLIENT CERT presented
1999-03-02 09:44:33 10HmaX-0005vi-00 Peer cert:
1999-03-02 09:44:33 10HmaX-0005vi-00 ver <3>
1999-03-02 09:44:33 10HmaX-0005vi-00 SN <CN=server1.example.com>
1999-03-02 09:44:33 10HmaX-0005vi-00 CRU <http://crl.example.com/latest.crl>
1999-03-02 09:44:33 10HmaX-0005vi-00 TLS session failure: delivering unencrypted to 127.0.0.1 [127.0.0.1] (not in hosts_require_tls)
1999-03-02 09:44:33 10HmaX-0005vi-00 => bad@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaZ-0005vi-00"
-1999-03-02 09:44:33 10HmaX-0005vi-00 delivery bad
-1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLENT CERT presented
+1999-03-02 09:44:33 10HmaX-0005vi-00 msg:delivery bad
+1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLIENT CERT presented
1999-03-02 09:44:33 10HmaX-0005vi-00 No Peer cert
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 tls:cert depth=0 <CN=server1.example.com>
1999-03-02 09:44:33 10HmaY-0005vi-00 => good@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 DN="CN=server1.example.com" C="250 OK id=10HmbA-0005vi-00"
-1999-03-02 09:44:33 10HmaY-0005vi-00 delivery good
+1999-03-02 09:44:33 10HmaY-0005vi-00 msg:delivery good
1999-03-02 09:44:33 10HmaY-0005vi-00 Our cert SN: CN=server2.example.com
1999-03-02 09:44:33 10HmaY-0005vi-00 Peer cert:
1999-03-02 09:44:33 10HmaY-0005vi-00 ver <3>
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 SSL verify error: depth=2 error=self signed certificate in certificate chain cert=/O=example.com/CN=clica CA
1999-03-02 09:44:33 10HmaX-0005vi-00 TLS error on connection to 127.0.0.1 [127.0.0.1] (SSL_connect): error: <<detail omitted>>
-1999-03-02 09:44:33 10HmaX-0005vi-00 deferral bad
-1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLENT CERT presented
+1999-03-02 09:44:33 10HmaX-0005vi-00 msg:host:defer bad
+1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLIENT CERT presented
1999-03-02 09:44:33 10HmaX-0005vi-00 Peer cert:
1999-03-02 09:44:33 10HmaX-0005vi-00 ver <2>
1999-03-02 09:44:33 10HmaX-0005vi-00 SN <CN=clica CA,O=example.com>
1999-03-02 09:44:33 10HmaX-0005vi-00 (no CRU)
1999-03-02 09:44:33 10HmaX-0005vi-00 TLS session failure: delivering unencrypted to 127.0.0.1 [127.0.0.1] (not in hosts_require_tls)
1999-03-02 09:44:33 10HmaX-0005vi-00 => bad@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaZ-0005vi-00"
-1999-03-02 09:44:33 10HmaX-0005vi-00 delivery bad
-1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLENT CERT presented
+1999-03-02 09:44:33 10HmaX-0005vi-00 msg:delivery bad
+1999-03-02 09:44:33 10HmaX-0005vi-00 NO CLIENT CERT presented
1999-03-02 09:44:33 10HmaX-0005vi-00 No Peer cert
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 tls:cert depth=2 <CN=clica CA,O=example.com>
+1999-03-02 09:44:33 10HmaY-0005vi-00 tls:cert depth=1 <CN=clica Signing Cert,O=example.com>
+1999-03-02 09:44:33 10HmaY-0005vi-00 tls:cert depth=0 <CN=server1.example.com>
1999-03-02 09:44:33 10HmaY-0005vi-00 => good@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/CN=server1.example.com" C="250 OK id=10HmbA-0005vi-00"
-1999-03-02 09:44:33 10HmaY-0005vi-00 delivery good
+1999-03-02 09:44:33 10HmaY-0005vi-00 msg:delivery good
1999-03-02 09:44:33 10HmaY-0005vi-00 Our cert SN: CN=server2.example.com
1999-03-02 09:44:33 10HmaY-0005vi-00 Peer cert:
1999-03-02 09:44:33 10HmaY-0005vi-00 ver <2>
-1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger"
+1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_event_action msg:delivery in smtp: error from acl "logger"
{ 'mainlog' => 's/\(gnutls_handshake\): Error in the push function/\(gnutls_handshake\): A TLS packet with unexpected length was received/', },
'tpda' =>
- { 'stdout' => '/tpda_delivery_action =/', },
+ { 'stdout' => '/tpda_event_action =/', },
};
partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch
1.2.3.4"? yes (matched "partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch")
deny: condition test succeeded in ACL "connect1"
+end of ACL "connect1": DENY
SMTP>> 550 Administrative prohibition
LOG: MAIN REJECT
H=ten-1.test.ex [V4NET.0.0.1] rejected connection in "connect" ACL
>>> using ACL "connect0"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "connect0"
+>>> end of ACL "connect0": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> using ACL "check_data"
>>> processing "warn"
>>> check logwrite = Subject is: "$h_subject:"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaX-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbA-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbB-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x@y>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> using ACL "connect0"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "connect0"
+>>> end of ACL "connect0": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbC-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> using ACL "connect0"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "connect0"
+>>> end of ACL "connect0": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
>>> processing "deny"
>>> message: reply_address=<$reply_address>
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbD-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
Exim version x.yz ....
changed uid/gid: -C, -D, -be or -bf forces real uid
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@b.c in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@b.c> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@B.C in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"
>>> b.c in "b.c"? yes (matched "b.c")
>>> A@b.c in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<A@b.c> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> b.c in "b.c"? yes (matched "b.c")
>>> A@B.C in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<A@B.C> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> x@y.z in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@Y.Z")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<x@y.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> x@Y.Z in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@Y.Z")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<x@Y.Z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> X@y.z in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@Y.Z")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<X@y.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> X@Y.Z in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@Y.Z")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<X@Y.Z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@e.f in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "^\Dx@e\.f")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ay@g.h in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "^\DY@G\.H")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ay@g.h> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bX@E.F in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "^\Dx@e\.f")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<bX@E.F> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bY@G.H in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "^\DY@G\.H")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<bY@G.H> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@aa.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@aa.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@AA.COM in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@AA.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@bb.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@bb.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@BB.Com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@BB.Com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> cc@dd.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<cc@dd.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> CC@DD.COM in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<CC@DD.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@nn.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@nn.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@NN.COM in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@NN.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@MM.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@MM.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Pp@Qq.com in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Pp@Qq.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> abcd@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<abcd@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ABCD@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ABCD@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ax@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bX@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<bX@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Ay@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Ay@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BY@aa.bb in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<BY@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> blocked@xy.zz in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<blocked@xy.zz> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BLOCKED@zz.xy in "a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<BLOCKED@zz.xy> rejected RCPT <x@test.ex>
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@b.c in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@b.c> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@B.C in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@B.C> rejected RCPT <x@test.ex>
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@e.f in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "^\Dx@e\.f")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ax@e.f> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@aa.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@aa.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@AA.COM in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@AA.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@bb.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@bb.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@BB.Com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@BB.Com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> cc@dd.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<cc@dd.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> CC@DD.COM in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<CC@DD.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@nn.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@nn.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@NN.COM in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Q@NN.COM> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@MM.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@MM.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@mm.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<q@mm.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Pp@Qq.com in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<Pp@Qq.com> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> AbCd@aa.bb in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<AbCd@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@aa.bb in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<ax@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BY@aa.bb in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<BY@aa.bb> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = +caseful: a@b.c : X@Y.Z : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BlOcKeD@zz.xy in "+caseful: a@b.c : X@Y.Z : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<BlOcKeD@zz.xy> rejected RCPT <x@test.ex>
LOG: unexpected disconnection while reading SMTP command from [1.1.1.1]
LOG: H=[127.0.0.1] Warning: accepted etrn #some.random.domain
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_etrn"
+>>> end of ACL "check_etrn": ACCEPT
>>> ETRN command is: exim -R
>>> ETRN command execution skipped
>>> check hosts = 10.250.104.0/21
>>> host in "10.250.104.0/21"? yes (matched "10.250.104.0/21")
>>> accept: condition test succeeded in ACL "check_connect"
+>>> end of ACL "check_connect": ACCEPT
LOG: MAIN
10.9.8.8 accepted by connect ACL
accept: condition test succeeded in ACL "connect"
+end of ACL "connect": ACCEPT
using ACL "mail"
processing "warn"
message: added header line
LOG: MAIN REJECT
mail accepted "mail from:<ok@test1>" "<ok@test1>"
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
using ACL "rcpt"
processing "accept"
check senders = +ok_senders
LOG: PANIC
rcpt accepted
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
using ACL "rcpt"
processing "accept"
check senders = +ok_senders
LOG: PANIC
rcpt accepted
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
LOG: smtp_connection MAIN
SMTP connection from CALLER closed by QUIT
>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
LOG: MAIN
10.9.8.8 accepted by connect ACL
accept: condition test succeeded in ACL "connect"
+end of ACL "connect": ACCEPT
using ACL "mail"
processing "warn"
message: added header line
LOG: MAIN REJECT
mail accepted "mail from:<ok@test3>" "<ok@test3>"
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
using ACL "rcpt"
processing "accept"
check senders = +ok_senders
LOG: PANIC
rcpt accepted
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
host in ignore_fromline_hosts? no (option unset)
>>Headers added by MAIL or RCPT ACL:
X-ACL-Warn: added header line
warn: condition test succeeded in ACL "warn_empty"
processing "accept"
accept: condition test succeeded in ACL "warn_empty"
+end of ACL "warn_empty": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
H=[V4NET.9.8.7] Warning: warn log message
processing "accept"
accept: condition test succeeded in ACL "warn_log"
+end of ACL "warn_log": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
warn: condition test succeeded in ACL "warn_user"
processing "accept"
accept: condition test succeeded in ACL "warn_user"
+end of ACL "warn_user": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
>>> processing "defer"
>>> message: forcibly deferred
>>> defer: condition test succeeded in ACL "defer"
+>>> end of ACL "defer": DEFER
LOG: H=[V4NET.9.8.7] F=<x@y> temporarily rejected RCPT <defer@y>: forcibly deferred
>>> using ACL "accept"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "accept"
+>>> end of ACL "accept": ACCEPT
>>> using ACL "drop"
>>> processing "drop"
>>> message: forcibly dropped
>>> drop: condition test succeeded in ACL "drop"
+>>> end of ACL "drop": DROP
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <drop@y>: forcibly dropped
LOG: SMTP connection from [V4NET.9.8.7] closed by DROP in ACL
>>> host in hosts_connection_nolog? no (end of list)
>>> check senders = :
>>> in ":"? yes (matched "")
>>> defer: condition test succeeded in ACL "defer_senders"
+>>> end of ACL "defer_senders": DEFER
LOG: H=[V4NET.9.8.7] F=<> temporarily rejected RCPT <defer_senders@y>
LOG: SMTP connection from [V4NET.9.8.7] closed by QUIT
>>> host in hosts_connection_nolog? no (end of list)
>>> delay modifier requests 1-second delay
>>> delay skipped in -bh checking mode
>>> accept: condition test succeeded in ACL "delay_accept"
+>>> end of ACL "delay_accept": ACCEPT
>>> using ACL "delay_warn"
>>> processing "warn"
>>> check delay = 1s
>>> warn: condition test succeeded in ACL "delay_warn"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "delay_warn"
+>>> end of ACL "delay_warn": ACCEPT
LOG: SMTP connection from [V4NET.9.8.7] closed by QUIT
>>> host in hosts_connection_nolog? no (end of list)
LOG: SMTP connection from [V4NET.9.8.7]
>>> host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"? yes (matched "net-lsearch;TESTSUITE/aux-var/0022.hosts")
>>> message: host data >$host_data<
>>> deny: condition test succeeded in ACL "host_check"
+>>> end of ACL "host_check": DENY
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check@y>: host data >A host-specific message<
>>> using ACL "host_check"
>>> processing "deny"
>>> host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"? yes (matched "net-lsearch;TESTSUITE/aux-var/0022.hosts")
>>> message: host data >$host_data<
>>> deny: condition test succeeded in ACL "host_check"
+>>> end of ACL "host_check": DENY
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check@y>: host data >A host-specific message<
>>> using ACL "host_check2"
>>> processing "deny"
>>> host in "net-lsearch;TESTSUITE/aux-var/0022.hosts"? yes (matched "net-lsearch;TESTSUITE/aux-var/0022.hosts")
>>> host in "+some_hosts"? yes (matched "+some_hosts")
>>> deny: condition test succeeded in ACL "host_check2"
+>>> end of ACL "host_check2": DENY
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check2@y>: host data >A host-specific message<
>>> using ACL "host_check2"
>>> processing "deny"
>>> check hosts = +some_hosts
>>> host in "+some_hosts"? yes (matched "+some_hosts" - cached)
>>> deny: condition test succeeded in ACL "host_check2"
+>>> end of ACL "host_check2": DENY
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check2@y>: host data >A host-specific message<
LOG: SMTP connection from [V4NET.9.8.7] closed by QUIT
LOG: smtp_connection MAIN
>>> processing "drop"
>>> message: forcibly dropped
>>> drop: condition test succeeded in ACL "drop"
+>>> end of ACL "drop": DROP
>>> accept: condition test yielded "drop" in ACL "nested_drop"
>>> accept: endpass encountered - denying access
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <nested_drop@y>: forcibly dropped
>>> processing "drop"
>>> message: forcibly dropped
>>> drop: condition test succeeded in ACL "drop"
+>>> end of ACL "drop": DROP
>>> require: condition test yielded "drop" in ACL "nested_drop_require"
+>>> end of ACL "nested_drop_require": not OK
LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <nested_drop_require@y>: forcibly dropped
LOG: SMTP connection from [V4NET.9.8.7] closed by DROP in ACL
>>> check domains = !refuse.test.ex
>>> test.ex in "!refuse.test.ex"? yes (end of list)
>>> accept: condition test succeeded in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": ACCEPT
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !nopass
>>> check domains = !refuse.test.ex
>>> test.ex in "!refuse.test.ex"? yes (end of list)
>>> accept: condition test succeeded in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": ACCEPT
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !nopass
>>> check domains = !refuse.test.ex
>>> test.ex in "!refuse.test.ex"? yes (end of list)
>>> accept: condition test succeeded in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": ACCEPT
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !nopass
>>> check domains = !refuse.test.ex
>>> relay.test.ex in "!refuse.test.ex"? yes (end of list)
>>> accept: condition test succeeded in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": ACCEPT
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !nopass
>>> check domains = deny.test.ex
>>> deny.test.ex in "deny.test.ex"? yes (matched "deny.test.ex")
>>> deny: condition test succeeded in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@deny.test.ex>: DOMAIN EXPLICITLY DENIED
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !nopass
>>> nopass in "!nopass"? no (matched "!nopass")
>>> require: condition test failed in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": not OK
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@nopass>
>>> using ACL "acl_1_2_3"
>>> processing "require"
>>> check domains = !wontpass
>>> wontpass in "!wontpass"? no (matched "!wontpass")
>>> require: condition test failed in ACL "acl_1_2_3"
+>>> end of ACL "acl_1_2_3": not OK
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@wontpass>: x@wontpass shall not pass
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> check local_parts = $domain_data
>>> userx in "userx : spqr"? yes (matched "userx")
>>> accept: condition test succeeded in ACL "acl_5_6_7"
+>>> end of ACL "acl_5_6_7": ACCEPT
>>> using ACL "acl_5_6_7"
>>> processing "accept"
>>> check domains = lsearch;TESTSUITE/aux-fixed/0023.doms
>>> check local_parts = $domain_data
>>> spqr in "userx : spqr"? yes (matched "spqr")
>>> accept: condition test succeeded in ACL "acl_5_6_7"
+>>> end of ACL "acl_5_6_7": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> host in "9.9.9.9"? yes (matched "9.9.9.9")
>>> 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
>>> using ACL "acl_9_9_9"
>>> processing "accept"
>>> check hosts = +ok9_hosts
>>> 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
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> check hosts = 9.9.9.0/26
>>> host in "9.9.9.0/26"? yes (matched "9.9.9.0/26")
>>> deny: condition test succeeded in ACL "acl_9_9_9"
+>>> end of ACL "acl_9_9_9": DENY
LOG: H=[9.9.9.8] F=<x@y> rejected RCPT <x@y>: don't like this host
>>> using ACL "acl_9_9_9"
>>> processing "accept"
>>> check hosts = 9.9.9.0/26
>>> host in "9.9.9.0/26"? yes (matched "9.9.9.0/26")
>>> deny: condition test succeeded in ACL "acl_9_9_9"
+>>> end of ACL "acl_9_9_9": DENY
LOG: H=[9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> check hosts = 9.9.9.0/24
>>> host in "9.9.9.0/24"? yes (matched "9.9.9.0/24")
>>> accept: condition test succeeded in ACL "acl_9_9_9"
+>>> end of ACL "acl_9_9_9": ACCEPT
>>> using ACL "acl_9_9_9"
>>> processing "accept"
>>> check hosts = +ok9_hosts
>>> check hosts = 9.9.9.0/24
>>> host in "9.9.9.0/24"? yes (matched "9.9.9.0/24")
>>> accept: condition test succeeded in ACL "acl_9_9_9"
+>>> end of ACL "acl_9_9_9": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> domain1 in "domain1"? yes (matched "domain1")
>>> user1@domain1 in "user1@domain1 : domain2 : +ok_senders"? yes (matched "user1@domain1")
>>> accept: condition test succeeded in ACL "acl_5_6_8"
+>>> end of ACL "acl_5_6_8": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "acl_5_6_8"
>>> processing "accept"
>>> domain2 in "domain2"? yes (matched "domain2")
>>> user1@domain2 in "user1@domain1 : domain2 : +ok_senders"? yes (matched "domain2")
>>> accept: condition test succeeded in ACL "acl_5_6_8"
+>>> end of ACL "acl_5_6_8": ACCEPT
>>> using ACL "acl_5_6_8"
>>> processing "accept"
>>> check senders = user1@domain1 : domain2 : +ok_senders
>>> ok@ok.ok in "ok@ok.ok"? yes (matched "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
>>> using ACL "acl_5_6_8"
>>> processing "accept"
>>> check senders = user1@domain1 : domain2 : +ok_senders
>>> ok.ok in "domain2"? no (end of list)
>>> 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
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> check condition = ${if match{$local_part}{^x}{yes}{no}}
>>> = yes
>>> accept: condition test succeeded in ACL "acl_5_6_11"
+>>> end of ACL "acl_5_6_11": ACCEPT
>>> using ACL "acl_5_6_11"
>>> processing "accept"
>>> check condition = ${if match{$local_part}{^x}{yes}{no}}
>>> = yes
>>> accept: condition test succeeded in ACL "acl_5_6_11"
+>>> end of ACL "acl_5_6_11": ACCEPT
>>> using ACL "acl_5_6_11"
>>> processing "accept"
>>> check condition = ${if match{$local_part}{^x}{yes}{no}}
>>> processing "deny"
>>> message: "local part of wrong type\n(quotes are literal)
>>> deny: condition test succeeded in ACL "acl_5_6_11"
+>>> end of ACL "acl_5_6_11": DENY
LOG: H=[5.6.11.1] F=<x@y> rejected RCPT <y2@y>: "local part of wrong type
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> check domains = ok
>>> ok in "ok"? yes (matched "ok")
>>> accept: condition test succeeded in ACL "acl_5_6_12A"
+>>> end of ACL "acl_5_6_12A": ACCEPT
>>> accept: condition test succeeded in ACL "acl_5_6_12"
+>>> end of ACL "acl_5_6_12": ACCEPT
>>> using ACL "acl_5_6_12"
>>> processing "accept"
>>> check hosts = 5.6.12.1
>>> accept: condition test failed in ACL "acl_5_6_12"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_5_6_12"
+>>> end of ACL "acl_5_6_12": ACCEPT
>>> using ACL "acl_5_6_12"
>>> processing "accept"
>>> check hosts = 5.6.12.1
>>> accept: condition test failed in ACL "acl_5_6_12"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_5_6_12"
+>>> end of ACL "acl_5_6_12": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> check local_parts = x
>>> x in "x"? yes (matched "x")
>>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl1"
+>>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": ACCEPT
>>> accept: condition test succeeded in ACL "acl_5_6_13"
+>>> end of ACL "acl_5_6_13": ACCEPT
>>> using ACL "acl_5_6_13"
>>> processing "accept"
>>> check acl = TESTSUITE/aux-fixed/0023.acl1
>>> DNS lookup for 13.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.13 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "acl_V4NET_11_12"
+>>> end of ACL "acl_V4NET_11_12": DENY
LOG: H=[V4NET.11.12.13] F=<x@y> rejected RCPT <x@y>: DNSLIST (rbl.test.ex: This is a test blacklisting message)
>>> using ACL "acl_V4NET_11_12"
>>> processing "deny"
>>> DNS lookup for 13.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.13 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "acl_V4NET_11_12"
+>>> end of ACL "acl_V4NET_11_12": DENY
LOG: H=[V4NET.11.12.13] F=<x@y> rejected RCPT <x1@y>: DNSLIST (rbl.test.ex: This is a test blacklisting message)
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> deny: condition test failed in ACL "acl_V4NET_11_12"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_V4NET_11_12"
+>>> end of ACL "acl_V4NET_11_12": ACCEPT
>>> using ACL "acl_V4NET_11_12"
>>> processing "deny"
>>> message: host in DNS list $dnslist_domain: $dnslist_text
>>> deny: condition test failed in ACL "acl_V4NET_11_12"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_V4NET_11_12"
+>>> end of ACL "acl_V4NET_11_12": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> routed by r1 router
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "acl_20_20_20"
+>>> end of ACL "acl_20_20_20": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> routed by r1 router
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "acl_21_21_21"
+>>> end of ACL "acl_21_21_21": ACCEPT
>>> using ACL "acl_21_21_21"
>>> processing "accept"
>>> check verify = sender
>>> y in "y"? yes (matched "y")
>>> x@y in "x@y"? yes (matched "x@y")
>>> accept: condition test succeeded in ACL "acl_22_22_22"
+>>> end of ACL "acl_22_22_22": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> no more routers
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "acl_23_23_23"
+>>> end of ACL "acl_23_23_23": DENY
LOG: H=[23.23.23.0] sender verify fail for <x@y>: Unrouteable address
LOG: H=[23.23.23.0] F=<x@y> rejected RCPT <userx@y>: Sender verify failed
>>> using ACL "acl_23_23_23"
>>> deny: condition test failed in ACL "acl_23_23_23"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_23_23_23"
+>>> end of ACL "acl_23_23_23": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> deny: condition test failed in ACL "acl_23_23_23"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_23_23_23"
+>>> end of ACL "acl_23_23_23": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> deny: condition test failed in ACL "acl_26_26_26"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_26_26_26"
+>>> end of ACL "acl_26_26_26": ACCEPT
>>> using ACL "acl_26_26_26"
>>> processing "deny"
>>> check senders = :
>>> check condition = ${if > {$recipients_count}{0}{yes}{no}}
>>> = yes
>>> deny: condition test succeeded in ACL "acl_26_26_26"
+>>> end of ACL "acl_26_26_26": DENY
LOG: H=[26.26.26.26] F=<> rejected RCPT <y@y>: bounce messages can have only one recipient
>>> using ACL "acl_26_26_26"
>>> processing "deny"
>>> check condition = ${if > {$recipients_count}{0}{yes}{no}}
>>> = yes
>>> deny: condition test succeeded in ACL "acl_26_26_26"
+>>> end of ACL "acl_26_26_26": DENY
LOG: H=[26.26.26.26] F=<> rejected RCPT <z@y>: bounce messages can have only one recipient
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> deny: condition test failed in ACL "acl_27_27_27"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_27_27_27"
+>>> end of ACL "acl_27_27_27": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> check sender_domains = : okdomain
>>> in ": okdomain"? yes (matched "")
>>> accept: condition test succeeded in ACL "acl_28_28_28"
+>>> end of ACL "acl_28_28_28": ACCEPT
>>> using ACL "acl_28_28_28"
>>> processing "accept"
>>> check sender_domains = : okdomain
>>> okdomain in ": okdomain"? yes (matched "okdomain")
>>> accept: condition test succeeded in ACL "acl_28_28_28"
+>>> end of ACL "acl_28_28_28": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "acl_28_28_28"
>>> processing "accept"
>>> require: condition test succeeded in ACL "acl_V4NET_0_0"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_V4NET_0_0"
+>>> end of ACL "acl_V4NET_0_0": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> looking up host name for V4NET.0.0.97
LOG: no host name found for IP address V4NET.0.0.97
>>> require: condition test failed in ACL "acl_V4NET_0_0"
+>>> end of ACL "acl_V4NET_0_0": not OK
LOG: H=[V4NET.0.0.97] F=<> rejected RCPT <x@y>: host lookup failed for reverse lookup check (failed to find host name from IP address)
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> DNS lookup for localhost.test.ex succeeded (yielding 127.0.0.1)
>>> => that means localhost is listed at test.ex
>>> deny: condition test succeeded in ACL "acl_29_29_29"
+>>> end of ACL "acl_29_29_29": DENY
LOG: H=[29.29.29.29] F=<a@localhost> rejected RCPT <x@y>
>>> using ACL "acl_29_29_29"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl_29_29_29"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_29_29_29"
+>>> end of ACL "acl_29_29_29": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> DNS lookup for ten-1.test.ex succeeded (yielding V4NET.0.0.1)
>>> => that means ten-1 is listed at test.ex
>>> deny: condition test succeeded in ACL "acl_30_30_30"
+>>> end of ACL "acl_30_30_30": DENY
LOG: H=[30.30.30.30] F=<a@ten-1> rejected RCPT <x@y>: domain=test.ex
>>> using ACL "acl_30_30_30"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl_30_30_30"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_30_30_30"
+>>> end of ACL "acl_30_30_30": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "acl_30_30_30"
>>> processing "deny"
>>> DNS lookup for 13.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means 13.12.11.V4NET.rbl is listed at test.ex
>>> deny: condition test succeeded in ACL "acl_30_30_30"
+>>> end of ACL "acl_30_30_30": DENY
LOG: H=[30.30.30.30] F=<a@13.12.11.V4NET.rbl> rejected RCPT <x@y>: domain=test.ex
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> deny: condition test failed in ACL "acl_31_31_31"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_31_31_31"
+>>> end of ACL "acl_31_31_31": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
LOG: H=[44.44.44.1] Warning: ACL "warn" statement skipped: condition test deferred
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_44_44_44"
+>>> end of ACL "acl_44_44_44": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl2"
>>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": implicit DENY
>>> accept: condition test succeeded in ACL "acl_60_60_60"
+>>> end of ACL "acl_60_60_60": ACCEPT
>>> using ACL "acl_60_60_60"
>>> processing "accept"
>>> check !acl = TESTSUITE/aux-fixed/0023.acl2
>>> check local_parts = a
>>> a in "a"? yes (matched "a")
>>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl2"
+>>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": ACCEPT
>>> accept: condition test failed in ACL "acl_60_60_60"
>>> end of ACL "acl_60_60_60": implicit DENY
LOG: H=[60.60.60.60] F=<x@y> rejected RCPT <a@b>
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "acl_data"
>>> processing "deny"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "acl_data"
+>>> end of ACL "acl_data": not OK
LOG: 10HmbH-0005vi-00 H=[10.0.0.0] F=<x@y> rejected after DATA: domain missing or malformed: failing address in "From:" header is: @
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "acl_data"
>>> processing "deny"
>>> check condition = ${if match{$message_body}{trigger}{yes}{no}}
>>> = yes
>>> deny: condition test succeeded in ACL "acl_data"
+>>> end of ACL "acl_data": DENY
LOG: 10HmbI-0005vi-00 H=[10.0.0.0] F=<x@y> rejected after DATA: body contains trigger
LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmaX-0005vi-00 H=(test.ex) [V4NET.9.8.7] Warning: DATA: sender_rate=1.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaX-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=2.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmaY-0005vi-00 H=(test.ex) [V4NET.9.8.7] Warning: DATA: sender_rate=2.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaY-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmaZ-0005vi-00 H=(test.ex) [V4NET.9.8.7] Warning: DATA: sender_rate=1.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmaZ-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=2.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmbA-0005vi-00 H=(test.ex) [V4NET.9.8.7] Warning: DATA: sender_rate=2.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbA-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> using ACL "check_rcpt"
>>> processing "warn"
>>> check ratelimit = 0/1h/per_rcpt
>>> warn: condition test succeeded in ACL "check_rcpt"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> using ACL "check_rcpt"
>>> processing "warn"
>>> check ratelimit = 0/1h/per_rcpt
>>> warn: condition test succeeded in ACL "check_rcpt"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmbB-0005vi-00 H=(test.ex) [V4NET.9.8.7] Warning: DATA: sender_rate=3.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbB-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> warn: condition test failed in ACL "check_rcpt2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt2"
+>>> end of ACL "check_rcpt2": ACCEPT
>>> using ACL "check_rcpt2"
>>> processing "warn"
>>> check ratelimit = 1/1m/per_rcpt/noupdate
>>> warn: condition test failed in ACL "check_rcpt2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt2"
+>>> end of ACL "check_rcpt2": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_data"
>>> processing "warn"
LOG: 10HmbC-0005vi-00 H=(test.ex) [V4NET.9.8.6] Warning: DATA: sender_rate=19.0 sender_rate_limit=0 sender_rate_period=1h
>>> processing "deny"
>>> deny: condition test succeeded in ACL "check_data"
+>>> end of ACL "check_data": DENY
LOG: 10HmbC-0005vi-00 H=(test.ex) [V4NET.9.8.6] F=<> rejected after DATA
>>> check hosts = 2.2.2.2
>>> host in "2.2.2.2"? yes (matched "2.2.2.2")
>>> accept: condition test succeeded in ACL "check_expn"
+>>> end of ACL "check_expn": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing list@test.ex
>>> calling system_aliases router
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
>>> test.ex in "test.ex"? yes (matched "test.ex")
>>> routed by localuser router
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing junkjunk@test.ex
>>> test.ex in "test.ex"? yes (matched "test.ex")
LOG: VRFY failed for junkjunk@test.ex H=[1.1.1.1]
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing expan@test.ex
>>> test.ex in "test.ex"? yes (matched "test.ex")
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=(exim.test.ex) [V4NET.0.0.97] sender verify fail for <junkjunk@exim.test.ex>: Unrouteable address
LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<junkjunk@exim.test.ex> rejected RCPT <postmaster@exim.test.ex>: Sender verify failed
LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjunk@exim.test.ex>
>>> exim.test.ex in "exim.test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> no more routers
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<postmaster@exim.test.ex> rejected RCPT junkjunk@exim.test.ex: Unrouteable address
>>> using ACL "check_recipient"
>>> processing "accept"
>>> system_aliases router forced address failure
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<postmaster@exim.test.ex> rejected RCPT fail@exim.test.ex: this alias is forced to fail
LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (QUIT) from <postmaster@exim.test.ex> for postmaster@exim.test.ex
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@exim.test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> DNS lookup for 13.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.13 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.11.12.13] F=<postmaster@exim.test.ex> rejected RCPT list@exim.test.ex: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaX-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
>>> there.test.ex in "*"? yes (matched "*")
>>> myfriend@there.test.ex in "myfriend@*"? yes (matched "myfriend@*")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaY-0005vi-00 <= myfriend@there.test.ex H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> otherhost.example.com in "*"? yes (matched "*")
>>> otherhost.example.com in "+relay_domains"? yes (matched "+relay_domains")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 3rdhost.example.com in "*"? yes (matched "*")
>>> 3rdhost.example.com in "+relay_domains"? yes (matched "+relay_domains")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex : *.test.ex"? yes (matched "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? no (end of list)
>>> using ACL "check_recipient"
>>> processing "accept"
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[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? no (end of list)
>>> using ACL "check_recipient"
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@3rdhost.example.com>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> host in "*"? yes (matched "*")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = +relay_hosts
>>> host in "+relay_hosts"? yes (matched "+relay_hosts" - cached)
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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 "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.2] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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 "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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 "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbA-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.6] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.255.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbB-0005vi-00 <= userx@somehost.example.com H=[V4NET.255.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.255.0.2] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbC-0005vi-00 <= userx@somehost.example.com H=[V4NET.255.0.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.255.0.3] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbD-0005vi-00 <= userx@somehost.example.com H=[V4NET.255.0.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.255.0.4] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbE-0005vi-00 <= userx@somehost.example.com H=[V4NET.255.0.4] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "@"? yes (matched "@")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.2] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.2] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=ten-1.test.ex [V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
>>> using ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-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
>>> using ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=ten-2.test.ex [V4NET.0.0.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "*-2.test.ex : *-3-alias.test.ex"? yes (matched "*-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
>>> using ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=ten-3.test.ex [V4NET.0.0.3] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=ten-1.test.ex [V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "^[^\d]+2"? yes (matched "^[^\d]+2")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=ten-2.test.ex [V4NET.0.0.2] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=ten-1.test.ex [V4NET.0.0.1] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "lsearch;TESTSUITE/aux-fixed/0064.hosts"? yes (matched "lsearch;TESTSUITE/aux-fixed/0064.hosts")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=ten-2.test.ex [V4NET.0.0.2] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[1.2.3.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.5] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=[1.2.3.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=[1.2.4.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.3.2.4] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbA-0005vi-00 <= userx@somehost.example.com H=[1.3.2.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbB-0005vi-00 <= userx@somehost.example.com H=[131.111.8.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbC-0005vi-00 <= userx@somehost.example.com H=[192.152.98.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbD-0005vi-00 <= userx@somehost.example.com H=[192.153.98.4] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> host in "!TESTSUITE/aux-fixed/0066.nothosts : TESTSUITE/aux-var/0066.hostnets"? yes (matched "1.2.3.4" in TESTSUITE/aux-var/0066.hostnets)
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@somehost.example.com H=[1.2.3.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.5] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@somehost.example.com H=[1.2.3.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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)
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@somehost.example.com H=[1.2.4.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.3.2.4] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbA-0005vi-00 <= userx@somehost.example.com H=[1.3.2.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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)
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbB-0005vi-00 <= userx@somehost.example.com H=[131.111.8.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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)
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbC-0005vi-00 <= userx@somehost.example.com H=[192.152.98.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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 "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbD-0005vi-00 <= userx@somehost.example.com H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.11.12.13] F=<userx@somehost.example.com> rejected RCPT <userx@anotherhost.example.com>: relay not permitted
LOG: 10HmbE-0005vi-00 <= userx@somehost.example.com H=[V4NET.11.12.13] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +local_domains
>>> 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 "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
LOG: 10HmbF-0005vi-00 <= userx@somehost.example.com H=[V4NET.0.0.3] P=smtp S=sss
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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 smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"
>>> processing "accept"
>>> b.c in "b.c"? yes (matched "b.c")
>>> y@b.c in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "*@b.c")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<y@b.c> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> xy.z in "b.c"? no (end of list)
>>> philip@xy.z in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "^(phil|quil)[^@]*@")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<philip@xy.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> patch.work in "b.c"? no (end of list)
>>> quilt@patch.work in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "^(phil|quil)[^@]*@")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<quilt@patch.work> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> abc.def in "b.c"? no (end of list)
>>> xx@abc.def in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<xx@abc.def> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> d.e.f in "b.c"? no (end of list)
>>> abc@d.e.f in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<abc@d.e.f> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> z.z in "b.c"? no (end of list)
>>> abc@z.z in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<abc@z.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> z.z in "b.c"? no (end of list)
>>> xyz@z.z in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<xyz@z.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> p.q.r in "b.c"? no (end of list)
>>> 12345678@p.q.r in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<12345678@p.q.r> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> z.z in "b.c"? no (end of list)
>>> 12345678@z.z in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<12345678@z.z> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> m.n.o in "m.n.o"? yes (matched "m.n.o")
>>> 1234@m.n.o in "1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "1234@m.n.o")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<1234@m.n.o> rejected RCPT <userx@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "*"? yes (matched "*")
>>> postmaster@test.ex in "postmaster@*"? yes (matched "postmaster@*")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> myhost.ex in "*"? yes (matched "*")
>>> postmaster@myhost.ex in "postmaster@*"? yes (matched "postmaster@*")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> a.b.c in "a.b.c"? yes (matched "a.b.c")
>>> rr01@a.b.c in "1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "rr01@a.b.c" in TESTSUITE/aux-fixed/0067.rejrec)
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<rr01@a.b.c> rejected RCPT <userx@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check senders = 1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec
>>> qq@a.b.c in "1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "^qq" in TESTSUITE/aux-fixed/0067.rejrec)
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<qq@a.b.c> rejected RCPT <userx@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check senders = 1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec
>>> !excl@z.z in "1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "^!excl" in TESTSUITE/aux-fixed/0067.rejrec)
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<!excl@z.z> rejected RCPT <userx@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> y.p.s in "y.p.s"? yes (matched "y.p.s")
>>> sh#rp@y.p.s in "1234@m.n.o : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "sh#rp@y.p.s" in TESTSUITE/aux-fixed/0067.rejrec)
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<sh#rp@y.p.s> rejected RCPT <userx@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> xx.yy in "b.c"? no (end of list)
>>> xyzbc@xx.yy in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<xyzbc@xx.yy> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> xx.yy in "b.c"? no (end of list)
>>> aabc@xx.yy in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<aabc@xx.yy> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> bb.cc in "bb.cc"? yes (matched "bb.cc")
>>> y@bb.cc in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "*@bb.cc")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<y@bb.cc> rejected RCPT <x@test.ex>
>>> using ACL "check_recipient"
>>> processing "accept"
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> test.ex in "test.ex : myhost.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> bbb.ccc in "bbb.ccc"? yes (matched "bbb.ccc")
>>> z@bbb.ccc in "!x@b.c : *@b.c :!^philip@a.b.c : ^(phil|quil)[^@]*@ :!yy@lsearch;TESTSUITE/aux-fixed/0067.rej.lsearch :lsearch*@;TESTSUITE/aux-fixed/0067.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0067.rej.bydomain : ! x@bb.cc : *@bb.cc :! TESTSUITE/aux-fixed/0067.not1 : !TESTSUITE/aux-fixed/0067.not2 : bbb.ccc"? yes (matched "bbb.ccc")
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<z@bbb.ccc> rejected RCPT <x@test.ex>
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
LOG: too many recipients: message rejected: sender=<x@y> H=[V4NET.10.10.10]
>>> check hosts = +include_unknown : ^ten-1\\.test\\.ex
>>> host in "+include_unknown : ^ten-1\.test\.ex"? yes (matched "^ten-1\.test\.ex")
>>> deny: condition test succeeded in ACL "check_recipientx"
+>>> end of ACL "check_recipientx": DENY
LOG: H=ten-1.test.ex [V4NET.0.0.1] F=<x@y> rejected RCPT <x@test.ex>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in "+include_unknown : ^ten-1\.test\.ex"? yes (failed to find host name for V4NET.0.0.13)
LOG: failed to find host name for V4NET.0.0.13: accepted by +include_unknown
>>> deny: condition test succeeded in ACL "check_recipientx"
+>>> end of ACL "check_recipientx": DENY
LOG: H=[V4NET.0.0.13] F=<userx@myhost.test.ex> rejected RCPT <x@test.ex>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> processing "deny"
>>> message: "Denied"
>>> deny: condition test succeeded in ACL "check_recipienty"
+>>> end of ACL "check_recipienty": DENY
LOG: H=[V4NET.0.0.13] F=<userx@test.ex> rejected RCPT <y@test.ex>: "Denied"
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> failed to find IP address for non.existent.invalid: item ignored by +ignore_unknown
>>> host in "+ignore_unknown : non.existent.invalid : V4NET.0.0.13"? yes (matched "V4NET.0.0.13")
>>> accept: condition test succeeded in ACL "check_recipientz"
+>>> end of ACL "check_recipientz": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> processing "deny"
>>> message: "Denied"
>>> deny: condition test succeeded in ACL "check_recipienty"
+>>> end of ACL "check_recipienty": DENY
LOG: H=[V4NET.0.0.13] F=<userx@test.ex> rejected RCPT <y@test.ex>: "Denied"
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.again.dns in dns_again_means_nonexist? no (option unset)
LOG: DNS lookup of test.again.dns deferred: accepted by +include_defer
>>> deny: condition test succeeded in ACL "check_recipienta"
+>>> end of ACL "check_recipienta": DENY
LOG: H=[V4NET.0.0.13] F=<userx@myhost.test.ex> rejected RCPT <a@test.ex>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> DNS lookup of test.again.dns deferred: item ignored by +ignore_defer
>>> host in "+ignore_defer : test.again.dns : V4NET.0.0.13"? yes (matched "V4NET.0.0.13")
>>> accept: condition test succeeded in ACL "check_recipientc"
+>>> end of ACL "check_recipientc": ACCEPT
>>> verifying EHLO/HELO argument "NULL"
>>> no EHLO/HELO command was issued
>>> require: condition test failed in ACL "rcpt"
+>>> end of ACL "rcpt": not OK
LOG: H=[V4NET.0.0.13] F=<userx@cus.cam.ac.uk> rejected RCPT <a@b>: helo not verified
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> message: helo not verified
>>> check verify = helo
>>> require: condition test failed in ACL "rcpt"
+>>> end of ACL "rcpt": not OK
LOG: H=([V4NET.0.0.1]) [V4NET.0.0.2] F=<a@b> rejected RCPT <c@d>: helo not verified
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> processing "deny"
>>> message: helo did verify
>>> deny: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": DENY
LOG: H=([V4NET.0.0.2]) [V4NET.0.0.2] F=<a@b> rejected RCPT <c@d>: helo did verify
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> check verify = helo
>>> verifying EHLO/HELO argument "[V4NET.0.0.99]"
>>> require: condition test failed in ACL "rcpt"
+>>> end of ACL "rcpt": not OK
LOG: H=([V4NET.0.0.99]) [V4NET.0.0.13] F=<a@b> rejected RCPT <c@d>: helo not verified
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> processing "deny"
>>> message: helo did verify
>>> deny: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": DENY
LOG: H=([V4NET.0.0.13]) [V4NET.0.0.13] F=<a@b> rejected RCPT <c@d>: helo did verify
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> getting IP address for rhubarb
>>> no IP address found for host rhubarb (during SMTP connection from (rhubarb) [99.99.99.99])
>>> 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
>>> test.ex in "test.ex : myhost.test.ex"? yes (matched "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 hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> test.ex in "test.ex : myhost.test.ex"? yes (matched "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 hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> name=localhost address=127.0.0.1
>>> host in "! @ : ! localhost"? yes (end of list)
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.1] F=<x@test.ex> rejected RCPT <x@test.ex>
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@exim.test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> DNS lookup for 14.12.11.V4NET.rbl2.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.14 is listed at rbl2.test.ex
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.11.12.14] F=<postmaster@exim.test.ex> rejected RCPT list@exim.test.ex: host is listed in rbl2.test.ex
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmbB-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@exim.test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check recipients = postmaster@exim.test.ex
>>> DNS lookup for 14.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.14 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.11.12.14] F=<postmaster@exim.test.ex> rejected RCPT list@exim.test.ex: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaX-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaY-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: '>' missing at end of address: failing address in "Cc:" header is: <abcd@x.y.z
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaZ-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: '>' missing at end of address: failing address in "Cc:" header is: <abcd@x.y.z
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: '>' missing at end of address: failing address in "Resent-To:" header is: <xyz@a.b.c.d
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbB-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: unmatched doublequote in local part: failing address in "Cc:" header begins: "abcd@x.y.z (missing quote),\n longlonglonglonglong@long.long.long.long.long.long.long.long,\n listlistlistlistlist@list.list.list.list.list.list.list.list,\n ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,\n addressesaddresses@addresses.addresses.addresses.addresses, \n longlonglonglonglong@long.long.long.long.long.long.long.long,\n listlistlistlistlist@list.list.list.list.list.list.list.list,\n ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,\n addressesaddresses@addresses.addresses.addresses.addresses, \n longlonglonglonglong@long.long.long.long.long.long.long.long,\n listlistlistlistlist@list.list.list.list.list.list.list.list,\n ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,\n addressesaddresses@addresses.addresses.addresses.addresses, \n longlonglonglonglong@long.long.long.long.long.long.long.long,\n listlistlistlistlist@list.list.list.list.list.list.list.list,\n ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,\n addressesaddresses@addresses.addre
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_syntax
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: unqualified address not permitted: failing address in "Cc:" header is: <abcd>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@exim.test.ex H=[V4NET.10.10.9] P=smtp S=sss
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@test.ex H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@test.ex H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> badbad in "userx"? no (end of list)
>>> no more routers
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@test.ex> rejected after DATA: there is no valid sender in any header line
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@test.ex H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> test.ex in "Test.ex : myhost.test.EX"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(abc_xyz) [V4NET.0.0.0] F=<userx@cus.cam.ac.uk> rejected RCPT <userx@else.where>: relay not permitted
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> relay.one.ex in "Test.ex : Relay.one.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=ten-99.test.ex (@#$%^&*()) [V4NET.0.0.99] F=<root@myhost.test.ex> rejected RCPT <yy@relay.two.ex>: relay not permitted
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> junk in "userx"? no (end of list)
>>> no more routers
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.1] F=<junk@jink.jonk.test.ex> rejected after DATA: there is no valid sender in any header line
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> no more routers
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.2] sender verify fail for <junk@jink.jonk.test.ex>: Unrouteable address
LOG: H=[V4NET.0.0.2] F=<junk@jink.jonk.test.ex> rejected RCPT <root@test.ex>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> junk in "userx"? no (end of list)
>>> no more routers
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.2] F=<userx@test.ex> rejected after DATA: there is no valid sender in any header line
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@test.ex H=[V4NET.0.0.2] P=smtp S=sss
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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 [V4NET.0.0.1] F=<userx@test.ex>
exim: timed out while reading - message abandoned
exim: timed out while reading - message abandoned
>>> no more routers
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.1] F=<userx@test.ex> rejected RCPT verify@test.ex: Unrouteable address
LOG: SMTP command timeout on connection from [V4NET.0.0.1]
An error was detected while processing a file of BSMTP input.
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.11.12.13] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.uk>: relay not permitted
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "0.0.0.0/0")
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=ten-1.test.ex [V4NET.0.0.1] F=<userx@cam.ac.uk> rejected RCPT <userx@cam.ac.uk>: relay not permitted
Exim version x.yz ....
changed uid/gid: forcing real = effective
test.ex in "test.ex"? yes (matched "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
SMTP>> 250 Accepted
SMTP<< rcpt to:<userx@cam.ac.uk>
using ACL "check_recipient"
processing "deny"
message: relay not permitted
deny: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": DENY
SMTP>> 550 relay not permitted
LOG: MAIN REJECT
H=oneback.test.ex [V4NET.99.99.90] F=<userx@test.ex> rejected RCPT <userx@cam.ac.uk>: relay not permitted
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[127.0.0.1] sender verify fail for <unknown@test.ex>: Unrouteable address
LOG: H=[127.0.0.1] F=<unknown@test.ex> rejected RCPT <userx@test.ex>: Sender verify failed
>>> using ACL "check_recipient"
>>> fail_remote_domains router forced address failure
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[127.0.0.1] sender verify fail for <userx@unknown.dom.ain>: unrouteable mail domain "unknown.dom.ain"
LOG: H=[127.0.0.1] F=<userx@unknown.dom.ain> rejected RCPT <userx@test.ex>: Sender verify failed
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[127.0.0.1] sender verify fail for <"unknown with spaces"@test.ex>: Unrouteable address
LOG: H=[127.0.0.1] F=<"unknown with spaces"@test.ex> rejected RCPT <userx@test.ex>: Sender verify failed
>>> using ACL "check_recipient"
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> unknown in "userx"? no (end of list)
>>> no more routers
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaX-0005vi-00 H=[127.0.0.1] F=<userx@test.ex> rejected after DATA: there is no valid sender in any header line
>>> using ACL "check_recipient"
>>> processing "require"
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> check verify = header_sender
>>> verifying From: header address <>
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmaY-0005vi-00 H=[127.0.0.1] F=<userx@test.ex> rejected after DATA: syntax error in 'From:' header when scanning for sender: missing or malformed local part in "<>"
>>> using ACL "check_recipient"
>>> processing "require"
>>> test.ex in "test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.97] F=<userx@test.ex> rejected RCPT <userx@external.test.ex>: relay not permitted
>>> using ACL "check_recipient"
>>> processing "accept"
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.97] F=<userx@test.ex> rejected RCPT <userx@external.test.ex>: relay not permitted
>>> DNS lookup for 14.12.11.V4NET.rbl3.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.14 is listed at rbl3.test.ex
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> DNS lookup for 14.12.11.V4NET.rbl3.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.14 is listed at rbl3.test.ex
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaX-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> exim.test.ex in "exim.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
LOG: 10HmaY-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
>>> warn: condition test failed in ACL "check_mail"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_mail"
+>>> end of ACL "check_mail": ACCEPT
>>> using ACL "check_recipient"
>>> processing "warn"
>>> message: X-Warn: host is listed in $dnslist_domain but not =127.0.0.3${if def:dnslist_text{\n $dnslist_text}}
>>> exim.test.ex in "exim.test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "warn"
>>> message: X-Warn: host is listed in $dnslist_domain but not =127.0.0.3${if def:dnslist_text{\n $dnslist_text}}
>>> exim.test.ex in "exim.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
LOG: 10HmaY-0005vi-00 <= postmaster@exim.test.ex H=[V4NET.11.12.14] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> warn: condition test failed in ACL "check_mail"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_mail"
+>>> end of ACL "check_mail": ACCEPT
>>> using ACL "check_recipient"
>>> processing "warn"
>>> message: X-Warn: host is listed in $dnslist_domain but not =127.0.0.3${if def:dnslist_text{\n $dnslist_text}}
>>> DNS lookup for 15.12.11.V4NET.rbl3.test.ex succeeded (yielding 127.0.0.3)
>>> => that means V4NET.11.12.15 is listed at rbl3.test.ex
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.11.12.15] F=<postmaster@exim.test.ex> rejected RCPT <userx@exim.test.ex>: host is listed in rbl3.test.ex with value 127.0.0.3
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> warn: condition test failed in ACL "check_mail"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_mail"
+>>> end of ACL "check_mail": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> warn: condition test failed in ACL "check_mail"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_mail"
+>>> end of ACL "check_mail": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> warn: condition test succeeded in ACL "check_helo"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_helo"
+>>> end of ACL "check_helo": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> warn: condition test failed in ACL "check_vrfy"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_vrfy"
+>>> end of ACL "check_vrfy": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing a@b
>>> calling system_aliases router
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[V4NET.9.8.7] sender verify fail for <x@mxt10.test.ex>: all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
LOG: H=[V4NET.9.8.7] F=<x@mxt10.test.ex> rejected RCPT <x@y>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)
>>> no more routers
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[V4NET.9.8.7] F=<x@ten-1.test.ex> rejected RCPT <x@mxt10.test.ex>: all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
>>> test.ex in "test.ex"? yes (matched "test.ex")
>>> userx@test.ex in "userx@test.ex"? yes (matched "userx@test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> host in "V4NET.0.0.1 : V4NET.0.0.2"? yes (matched "V4NET.0.0.2")
>>> host in "+relay_hosts"? yes (matched "+relay_hosts")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> check hosts = +relay_hosts
>>> host in "+relay_hosts"? yes (matched "+relay_hosts" - cached)
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.3] F=<x@y.z> rejected RCPT <a@b.c>: relay not permitted
>>> using ACL "check_recipient"
>>> processing "accept"
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.3] F=<userx@test.ex> rejected RCPT <a@b.c>: relay not permitted
>>> fail_sender router forced address failure
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[V4NET.0.0.0] sender verify fail for <user@bad.domain>: remote host address is the local host
LOG: H=[V4NET.0.0.0] F=<user@bad.domain> rejected RCPT <userx@test.ex>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)
>>> name=localhost address=127.0.0.1
>>> ----------- end verify ------------
>>> require: condition test failed in ACL "check_recipient"
+>>> end of ACL "check_recipient": not OK
LOG: H=[V4NET.0.0.0] sender verify fail for <user@bad.domain2>: fail_sender2 router forced verify failure
LOG: H=[V4NET.0.0.0] F=<user@bad.domain2> rejected RCPT <userx@test.ex>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)
>>> test.ex in "test.ex"? yes (matched "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: 10HmaX-0005vi-00 <= user@ten-1.test.ex H=[V4NET.0.0.0] P=smtp S=sss
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=[V4NET.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
>>> using ACL "check_recipient"
>>> processing "accept"
>>> mxt1.test.ex in "@mx_any"? yes (matched "@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
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check domains = +relay_domains
>>> mxt6.test.ex in "@mx_any"? yes (matched "@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
>>> nl.demon.net in "nl.demon.net"? yes (matched "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
>>> listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.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
>>> using ACL "check_recipient"
>>> processing "deny"
>>> message: unrouteable address
>>> listr.test.ex in "test.ex : *.test.ex"? yes (matched "*.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
******** SERVER ********
>>> require: condition test succeeded in ACL "acl_rcpt_1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_1"
+>>> end of ACL "acl_rcpt_1": ACCEPT
>>> using ACL "acl_rcpt_1"
>>> processing "require"
>>> message: domain doesn't match @ or @[]
>>> require: condition test succeeded in ACL "acl_rcpt_1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_1"
+>>> end of ACL "acl_rcpt_1": ACCEPT
>>> using ACL "acl_rcpt_1"
>>> processing "require"
>>> message: domain doesn't match @ or @[]
>>> check domains = @ : @[]
>>> else.where in "@ : @[]"? no (end of list)
>>> require: condition test failed in ACL "acl_rcpt_1"
+>>> end of ACL "acl_rcpt_1": not OK
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <1@else.where>: domain doesn't match @ or @[]
>>> using ACL "acl_rcpt_2"
>>> processing "require"
>>> require: condition test succeeded in ACL "acl_rcpt_2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_2"
+>>> end of ACL "acl_rcpt_2": ACCEPT
>>> using ACL "acl_rcpt_2"
>>> processing "require"
>>> message: domain doesn't match @mx_any
>>> require: condition test succeeded in ACL "acl_rcpt_2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_2"
+>>> end of ACL "acl_rcpt_2": ACCEPT
>>> using ACL "acl_rcpt_2"
>>> processing "require"
>>> message: domain doesn't match @mx_any
>>> require: condition test succeeded in ACL "acl_rcpt_2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_2"
+>>> end of ACL "acl_rcpt_2": ACCEPT
>>> using ACL "acl_rcpt_2"
>>> processing "require"
>>> message: domain doesn't match @mx_any
>>> ten-3.test.ex in hosts_treat_as_local? no (end of list)
>>> mxt9.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <2@mxt9.test.ex>: domain doesn't match @mx_any
>>> using ACL "acl_rcpt_2"
>>> processing "require"
>>> check domains = @mx_any
>>> 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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <2@mxnone.test.ex>: domain doesn't match @mx_any
>>> using ACL "acl_rcpt_3"
>>> processing "require"
>>> require: condition test succeeded in ACL "acl_rcpt_3"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_3"
+>>> end of ACL "acl_rcpt_3": ACCEPT
>>> using ACL "acl_rcpt_3"
>>> processing "require"
>>> message: domain doesn't match @mx_primary
>>> eximtesthost.test.ex ip4.ip4.ip4.ip4 6
>>> mxt6.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt6.test.ex>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_3"
>>> processing "require"
>>> ten-3.test.ex in hosts_treat_as_local? no (end of list)
>>> mxt9.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt9.test.ex>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_3"
>>> processing "require"
>>> check domains = @mx_primary
>>> 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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxnone.test.ex>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_4"
>>> processing "require"
>>> local host has lowest MX
>>> mxt5.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxt5.test.ex>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_4"
>>> processing "require"
>>> require: condition test succeeded in ACL "acl_rcpt_4"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_4"
+>>> end of ACL "acl_rcpt_4": ACCEPT
>>> using ACL "acl_rcpt_4"
>>> processing "require"
>>> message: domain doesn't match @mx_secondary
>>> ten-3.test.ex in hosts_treat_as_local? no (end of list)
>>> mxt9.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxt9.test.ex>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_4"
>>> processing "require"
>>> check domains = @mx_secondary
>>> 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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@mxnone.test.ex>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_5"
>>> processing "require"
>>> name=myhost.test.ex address=V4NET.10.10.10
>>> host in "@ : @[]"? no (end of list)
>>> require: condition test failed in ACL "acl_rcpt_5"
+>>> end of ACL "acl_rcpt_5": not OK
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <5@myhost.test.ex>: host doesn't match @ or @[]
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> require: condition test succeeded in ACL "acl_rcpt_5"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_5"
+>>> end of ACL "acl_rcpt_5": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> require: condition test succeeded in ACL "acl_rcpt_5"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_5"
+>>> end of ACL "acl_rcpt_5": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> require: condition test succeeded in ACL "acl_rcpt_2"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_2"
+>>> end of ACL "acl_rcpt_2": ACCEPT
>>> using ACL "acl_rcpt_3"
>>> processing "require"
>>> message: domain doesn't match @mx_primary
>>> eximtesthost.test.ex ip4.ip4.ip4.ip4 6
>>> mxt3.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
LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@mxt3.test.ex>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_4"
>>> processing "require"
>>> require: condition test succeeded in ACL "acl_rcpt_4"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl_rcpt_4"
+>>> end of ACL "acl_rcpt_4": ACCEPT
deny: condition test failed in inline ACL
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< rcpt to:<one@z>
host in smtp_ratelimit_hosts? no (end of list)
deny: condition test failed in inline ACL
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
deny: condition test failed in inline ACL
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< rcpt to:<one@z>
host in smtp_ratelimit_hosts? yes (matched "V4NET.9.8.7")
deny: condition test failed in inline ACL
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
SMTP<< rcpt to:<x@y>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
SMTP<< rcpt to:<x@y>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
>>> x in "x"? yes (matched "x")
>>> b1@x in "b1@x"? yes (matched "b1@x")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<> rejected RCPT <b1@x>: failed 7
>>> using ACL "acl1"
>>> processing "deny"
>>> x in "x"? yes (matched "x")
>>> b2@x in "b2@x"? yes (matched "b2@x")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<> rejected RCPT <b2@x>: failed 8
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> check recipients = \N^abc.*@.*\.x\.y\.z\N : a@b
>>> abc@w.x.y.z in "^abc.*@.*\.x\.y\.z : a@b"? yes (matched "^abc.*@.*\.x\.y\.z")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@w.x.y.z>: failed 1
>>> using ACL "acl1"
>>> processing "deny"
>>> check recipients = \N^abc.*@.*\.x\.y\.z\N : a@b
>>> abcdef@q.x.y.z in "^abc.*@.*\.x\.y\.z : a@b"? yes (matched "^abc.*@.*\.x\.y\.z")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abcdef@q.x.y.z>: failed 1
>>> using ACL "acl1"
>>> processing "deny"
>>> b in "b"? yes (matched "b")
>>> a@b in "^abc.*@.*\.x\.y\.z : a@b"? yes (matched "a@b")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <a@b>: failed 1
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> check recipients = lsearch*@;TESTSUITE/aux-fixed/0304.d1
>>> x@a.b.c in "lsearch*@;TESTSUITE/aux-fixed/0304.d1"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0304.d1")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@a.b.c>: failed 2
>>> using ACL "acl1"
>>> processing "deny"
>>> check recipients = lsearch*@;TESTSUITE/aux-fixed/0304.d1
>>> abc@d.e.f in "lsearch*@;TESTSUITE/aux-fixed/0304.d1"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0304.d1")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@d.e.f>: failed 2
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> check recipients = @@lsearch;TESTSUITE/aux-fixed/0304.d2
>>> abc@at.1 in "@@lsearch;TESTSUITE/aux-fixed/0304.d2"? yes (matched "@@lsearch;TESTSUITE/aux-fixed/0304.d2")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@at.1>: failed 3
>>> using ACL "acl1"
>>> processing "deny"
>>> check recipients = @@lsearch;TESTSUITE/aux-fixed/0304.d2
>>> xyz@at.1 in "@@lsearch;TESTSUITE/aux-fixed/0304.d2"? yes (matched "@@lsearch;TESTSUITE/aux-fixed/0304.d2")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@at.1>: failed 3
>>> using ACL "acl1"
>>> processing "deny"
>>> check recipients = @@lsearch;TESTSUITE/aux-fixed/0304.d2
>>> abcxyz@at.1 in "@@lsearch;TESTSUITE/aux-fixed/0304.d2"? yes (matched "@@lsearch;TESTSUITE/aux-fixed/0304.d2")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abcxyz@at.1>: failed 3
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> domain.only in "domain.only"? yes (matched "domain.only")
>>> x@domain.only in "domain.only : *.domain2.only"? yes (matched "domain.only")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@domain.only>: failed 4
>>> using ACL "acl1"
>>> processing "deny"
>>> abc.domain2.only in "*.domain2.only"? yes (matched "*.domain2.only")
>>> x@abc.domain2.only in "domain.only : *.domain2.only"? yes (matched "*.domain2.only")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@abc.domain2.only>: failed 4
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> domain3 in "domain3"? yes (matched "domain3")
>>> abc@domain3 in "abc@domain3 : xyz@*.domain4"? yes (matched "abc@domain3")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@domain3>: failed 5
>>> using ACL "acl1"
>>> processing "deny"
>>> x.domain4 in "*.domain4"? yes (matched "*.domain4")
>>> xyz@x.domain4 in "abc@domain3 : xyz@*.domain4"? yes (matched "xyz@*.domain4")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@x.domain4>: failed 5
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> myhost.test.ex in "@"? yes (matched "@")
>>> pqr@myhost.test.ex in "pqr@@"? yes (matched "pqr@@")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <pqr@myhost.test.ex>: failed 6
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> domain5 in "lsearch;TESTSUITE/aux-fixed/0304.d3"? yes (matched "lsearch;TESTSUITE/aux-fixed/0304.d3")
>>> a@domain5 in "*@lsearch;TESTSUITE/aux-fixed/0304.d3"? yes (matched "*@lsearch;TESTSUITE/aux-fixed/0304.d3")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <a@domain5>: failed 9
>>> using ACL "acl1"
>>> processing "deny"
>>> domain6 in "lsearch;TESTSUITE/aux-fixed/0304.d4"? yes (matched "lsearch;TESTSUITE/aux-fixed/0304.d4")
>>> xyz@domain6 in "xyz@lsearch;TESTSUITE/aux-fixed/0304.d4"? yes (matched "xyz@lsearch;TESTSUITE/aux-fixed/0304.d4")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@domain6>: failed 10
>>> using ACL "acl1"
>>> processing "deny"
>>> deny: condition test failed in ACL "acl1"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "deny"
>>> message: failed 1
>>> check recipients = lsearch*@;TESTSUITE/aux-fixed/0304.d5
>>> x@domain7 in "lsearch*@;TESTSUITE/aux-fixed/0304.d5"? yes (matched "lsearch*@;TESTSUITE/aux-fixed/0304.d5")
>>> deny: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": DENY
LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@domain7>: failed 11
>>> ten-1.test.ex in "ten-1.test.ex"? yes (matched "ten-1.test.ex")
>>> ten-1.test.ex in "+ok_domains"? yes (matched "+ok_domains")
>>> accept: condition test succeeded in ACL "acl1"
+>>> end of ACL "acl1": ACCEPT
>>> using ACL "acl1"
>>> processing "accept"
>>> check domains = +ok_domains
>>> routed by r5 router
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": ACCEPT
>>> using ACL "rcpt"
>>> processing "accept"
>>> check verify = recipient
>>> routed by r2 router
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "rcpt"
>>> processing "accept"
>>> check hosts = V4NET.0.0.97
>>> host in "V4NET.0.0.97"? yes (matched "V4NET.0.0.97")
>>> accept: condition test succeeded in ACL "acl_V4NET_0_0"
+>>> end of ACL "acl_V4NET_0_0": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> V4NET.0.0.1 OK
>>> host in "*.test.ex"? yes (matched "*.test.ex")
>>> accept: condition test succeeded in ACL "acl_V4NET_0_0"
+>>> end of ACL "acl_V4NET_0_0": ACCEPT
>>> 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"
+>>> end of ACL "a1": DENY
LOG: H=[V4NET.0.0.0] F=<a@b.c> rejected RCPT xxx@a.b.c: $domain_data=DOMAIN DATA $local_part_data=LOCAL PART DATA
>>> deny: condition test failed in ACL "check_rcpt"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
transport: t2
----------- end verify ------------
accept: condition test succeeded in ACL "check_rcpt"
+end of ACL "check_rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 the.local.host.name closing connection
check set acl_c9 = $acl_c9; connect
= ; connect
accept: condition test succeeded in ACL "connect"
+end of ACL "connect": ACCEPT
SMTP>> 220 mail.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
smtp_setup_msg entered
SMTP<< ehlo something
check set acl_m0 = $acl_m0; mail
= ; mail
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
SMTP>> 250 OK
SMTP<< rcpt to:<x@y>
using ACL "rcpt"
check set acl_c0 = $acl_c0; rcpt
= ; connect; mail; rcpt
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
check set acl_m9 = $acl_m9; data
= ; rcpt; data
accept: condition test succeeded in ACL "data"
+end of ACL "data": ACCEPT
calling local_scan(); timeout=300
local_scan() returned 0 NULL
LOG: MAIN
check set acl_m0 = $acl_m0; vrfy
= ; vrfy
accept: condition test succeeded in ACL "vrfy"
+end of ACL "vrfy": ACCEPT
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Verifying x@y
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
check set acl_m0 = $acl_m0; mail
= ; mail
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
SMTP>> 250 OK
SMTP<< quit
SMTP>> 221 mail.test.ex closing connection
warn: condition test failed in ACL "check_rcpt"
processing "accept"
accept: condition test succeeded in ACL "check_rcpt"
+end of ACL "check_rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
LOG: rejected "EHLO [1.2.3.4]" from ([1.2.3.4]) [V4NET.9.8.7]
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
processing "deny"
message: No such user here
deny: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl1"
+end of ACL "TESTSUITE/aux-fixed/0386.acl1": DENY
SMTP>> 550 No such user here
LOG: MAIN REJECT
H=[V4NET.9.8.7] F=<x@y> rejected RCPT <1@b>: No such user here
processing "deny"
message: No such user here
deny: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl1"
+end of ACL "TESTSUITE/aux-fixed/0386.acl1": DENY
SMTP>> 550 No such user here
LOG: MAIN REJECT
H=[V4NET.9.8.7] F=<x@y> rejected RCPT <1@b>: No such user here
created log directory TESTSUITE/spool/log
processing "accept"
accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl2"
+end of ACL "TESTSUITE/aux-fixed/0386.acl2": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
H=[V4NET.11.12.13] U=CALLER Warning: found in rbl.test.ex: This is a test blacklisting message
processing "accept"
accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl2"
+end of ACL "TESTSUITE/aux-fixed/0386.acl2": ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
----------- end verify ------------
sender U@W.x.y verified ok as U@x.y
accept: condition test succeeded in ACL "acl_rcpt"
+end of ACL "acl_rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
>>> processing "require"
>>> check verify = reverse_host_lookup
>>> require: condition test failed in ACL "connect"
+>>> end of ACL "connect": not OK
LOG: H=[V4NET.255.255.255] rejected connection in "connect" ACL: host lookup failed (failed to find host name from IP address)
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
remote in "remote"? yes (matched "remote")
qq@remote in "qq@remote"? yes (matched "qq@remote")
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< rcpt to:<xyz@local>
using ACL "rcpt"
remote in "remote"? yes (matched "remote")
qq@remote in "qq@remote"? yes (matched "qq@remote")
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 mail.test.ex closing connection
>>> check hosts = TESTSUITE/aux-var/0401.hosts1
>>> host in "TESTSUITE/aux-var/0401.hosts1"? yes (matched "V4NET.9.8.7" in TESTSUITE/aux-var/0401.hosts1)
>>> accept: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": ACCEPT
>>> xxx in helo_lookup_domains? no (end of list)
>>> using ACL "mail"
>>> processing "accept"
SMTP<< rcpt to:<x@y>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
SMTP<< rcpt to:<x@y>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
>>> deny: condition test failed in ACL "connect"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> DNS lookup for 2.13.13.V4NET.rbl.test.ex succeeded (yielding 127.0.0.1, 127.0.0.2)
>>> => that means V4NET.13.13.2 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": DENY
LOG: H=[V4NET.13.13.2] rejected connection in "connect" ACL: dnslist_value is 127.0.0.1, 127.0.0.2
>>> processing "deny"
>>> message: xxxxxxxxxxxxxx has refused this message because it looks like it is infected with the Sobig.E worm. See http://www.xxxx.xxx/xxxxxxxx/xxxx/xxxx/w32.sobig.e@xx.html for details. If you feel this determination is in error, please forward the entire message to postmaster@xxxxxxxxxxxxx.com and include code \"xx#1\" in the Subject
>>> deny: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": DENY
LOG: H=[V4NET.13.13.1] rejected connection in "connect" ACL: xxxxxxxxxxxxxx has refused this message because it looks like it is infected with the Sobig.E worm. See http://www.xxxx.xxx/xxxxxxxx/xxxx/xxxx/w32.sobig.e@xx.html for details. If you feel this determination is in error, please forward the entire message to postmaster@xxxxxxxxxxxxx.com and include code "xx#1" in the Subject
>>> (Use -bhc if you want the callouts to happen.)
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "mail"
+>>> end of ACL "mail": ACCEPT
Exim version x.yz ....
changed uid/gid: forcing real = effective
uid=uuuu gid=CALLER_GID pid=pppp
----------- end verify ------------
sender x@y verified ok
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
SMTP>> 250 OK
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
----------- end verify ------------
sender x@y verified ok
accept: condition test succeeded in ACL "mail"
+end of ACL "mail": ACCEPT
SMTP>> 250 OK
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
>>> callout cache: address record is positive
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "mail"
+>>> end of ACL "mail": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> wrote positive callout cache address record
>>> ----------- end verify ------------
>>> accept: condition test succeeded in ACL "mail"
+>>> end of ACL "mail": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> bad_addresses router forced address failure
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": DENY
LOG: H=[1.2.3.4] sender verify fail for <lp1@x.y>:
LOG: H=[1.2.3.4] F=<lp1@x.y> rejected RCPT <zz@x.y>: Sender verify failed
>>> using ACL "rcpt"
>>> bad_addresses router forced address failure
>>> ----------- end verify ------------
>>> deny: condition test succeeded in ACL "rcpt"
+>>> end of ACL "rcpt": DENY
LOG: H=[1.2.3.4] sender verify fail for <lp2@x.y>: This is a message
LOG: H=[1.2.3.4] F=<lp2@x.y> rejected RCPT <zz@x.y>: Sender verify failed
require: condition test succeeded in ACL "rcpt"
processing "accept"
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
SMTP<< rcpt to:<abc@domain.>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
processing "accept"
check verify = header_syntax
accept: condition test succeeded in ACL "check_data"
+end of ACL "check_data": ACCEPT
calling local_scan(); timeout=300
local_scan() returned 0 NULL
Writing spool header file
SMTP<< rcpt to:<abc@xyz>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
require: condition test succeeded in ACL "rcpt"
processing "accept"
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< rcpt to:<e@f>
using ACL "rcpt"
require: condition test succeeded in ACL "rcpt"
processing "accept"
accept: condition test succeeded in ACL "rcpt"
+end of ACL "rcpt": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 the.local.host.name closing connection
SMTP<< rcpt to:<userx@test.ex>
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> 250 Accepted
SMTP<< data
SMTP>> 354 Enter message, ending with "." on a line by itself
>>> ----------- end verify ------------
>>> message: >$acl_verify_message< ++++
>>> defer: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": DEFER
LOG: H=(a.b.c.d) [1.2.3.4] F=<> temporarily rejected RCPT <x@mxt2.test.ex>: all relevant MX records point to non-existent hosts
>>> message: CSA status is $csa_status
>>> check verify = csa
>>> accept: condition test succeeded in ACL "check_mail"
+>>> end of ACL "check_mail": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> csa2.test.ex in helo_lookup_domains? no (end of list)
>>> host in pipelining_advertise_hosts? yes (matched "*")
>>> check hosts = 5.6.7.8
>>> host in "5.6.7.8"? yes (matched "5.6.7.8")
>>> accept: condition test succeeded in ACL "two"
+>>> end of ACL "two": ACCEPT
>>> = sender_ident=
LOG: sender_ident=
>>> accept: condition test succeeded in ACL "log"
+>>> end of ACL "log": ACCEPT
>>> accept: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> = sender_ident=ident
LOG: sender_ident=ident
>>> accept: condition test succeeded in ACL "log"
+>>> end of ACL "log": ACCEPT
>>> accept: condition test succeeded in ACL "connect"
+>>> end of ACL "connect": ACCEPT
>>> host in pipelining_advertise_hosts? yes (matched "*")
>>> using ACL "mail"
>>> processing "accept"
>>> = sender_ident=ident
LOG: sender_ident=ident
>>> accept: condition test succeeded in ACL "log"
+>>> end of ACL "log": ACCEPT
>>> check acl = auth
>>> using ACL "auth"
>>> processing "accept"
>>> check logwrite = +++ host is authenticated +++
LOG: +++ host is authenticated +++
>>> accept: condition test succeeded in ACL "auth"
+>>> end of ACL "auth": ACCEPT
>>> accept: condition test succeeded in ACL "mail"
+>>> end of ACL "mail": ACCEPT
>>> using ACL "mail"
>>> processing "accept"
>>> check acl = log
>>> = sender_ident=ident
LOG: sender_ident=ident
>>> accept: condition test succeeded in ACL "log"
+>>> end of ACL "log": ACCEPT
>>> check acl = auth
>>> using ACL "auth"
>>> processing "accept"
>>> check logwrite = +++ host is authenticated +++
LOG: +++ host is authenticated +++
>>> accept: condition test succeeded in ACL "auth"
+>>> end of ACL "auth": ACCEPT
>>> accept: condition test succeeded in ACL "mail"
+>>> end of ACL "mail": ACCEPT
>>> accept: condition test failed in ACL "check_from"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaX-0005vi-00 <= userx@exim.test.ex H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> accept: condition test failed in ACL "check_from"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> message: ${if def:acl_m_message {$acl_m_message}}
>>> check verify = header_names_ascii
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: Invalid character in header "Received" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> usery@exim.test.ex in "usery@exim.test.ex"? yes (matched "usery@exim.test.ex")
>>> check set acl_m_message = I do not like your message
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> message: ${if def:acl_m_message {$acl_m_message}}
>>> check verify = header_names_ascii
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbB-0005vi-00 H=[V4NET.10.10.10] F=<usery@exim.test.ex> rejected after DATA: Invalid character in header "Subjec⍅" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> accept: condition test failed in ACL "check_from"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> message: ${if def:acl_m_message {$acl_m_message}}
>>> check verify = header_names_ascii
>>> require: condition test failed in ACL "check_message"
+>>> end of ACL "check_message": not OK
LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@exim.test.ex> rejected after DATA: Invalid character in header "Subjec⍅" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> accept: condition test failed in ACL "check_from"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaY-0005vi-00 <= userx@exim.test.ex H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> accept: condition test failed in ACL "check_from"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_from"
+>>> end of ACL "check_from": ACCEPT
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL
+>>> end of inline ACL: ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
>>> using ACL "check_message"
>>> processing "require"
>>> require: condition test succeeded in ACL "check_message"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_message"
+>>> end of ACL "check_message": ACCEPT
LOG: 10HmaZ-0005vi-00 <= userx@exim.test.ex H=[V4NET.10.10.10] P=smtp S=sss
processing "deny"
message: relay not permitted
deny: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": DENY
SMTP>> 550 relay not permitted
LOG: MAIN REJECT
H=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
processing "deny"
message: relay not permitted
deny: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": DENY
SMTP>> 550 relay not permitted
LOG: MAIN REJECT
H=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'"? yes (matched "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'")
host in "+relay_hosts"? yes (matched "+relay_hosts")
accept: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": ACCEPT
SMTP>> 250 Accepted
SMTP<< rcpt to:<c@d>
using ACL "check_recipient"
host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'"? yes (matched "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'")
host in "+relay_hosts"? yes (matched "+relay_hosts")
accept: condition test succeeded in ACL "check_recipient"
+end of ACL "check_recipient": ACCEPT
SMTP>> 250 Accepted
SMTP<< quit
SMTP>> 221 myhost.test.ex closing connection
>>> check condition = ${if !eq {${perl{foo_warn}}}{}}
>>> = true
>>> accept: condition test succeeded in ACL "check_rcpt"
+>>> end of ACL "check_rcpt": ACCEPT
******** SERVER ********
>>> test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? yes (matched "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
>>> other.ex in percent_hack_domains? list match deferred for testdb;defer
LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCPT <a@other.ex>: defer in percent_hack_domains check
>>> testhack.ex in percent_hack_domains? yes (matched "testhack.ex")
>>> test.ex in "!*relay.ex : test.ex : testhack.ex : testhack2.ex : testdb;defer"? yes (matched "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
>>> testhack2.ex in percent_hack_domains? list match deferred for testdb;defer
LOG: H=(remote.host) [V4NET.0.0.1] F=<user@remote.host> temporarily rejected RCPT <a%b@testhack2.ex>: defer in percent_hack_domains check
>>> yesrelay.ex in percent_hack_domains? no (matched "!*relay.ex")
>>> yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "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
>>> norelay.ex in percent_hack_domains? no (matched "!*relay.ex")
>>> using ACL "check_recipient"
>>> processing "accept"
>>> yesrelay.ex in "test.ex : testhack.ex : testhack2.ex : yesrelay.ex : testdb;defer"? yes (matched "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
>>> testhack.ex in percent_hack_domains? yes (matched "testhack.ex")
>>> norelay.ex in percent_hack_domains? no (matched "!*relay.ex")
>>> using ACL "check_recipient"
>>> warn: condition test failed in ACL "check_connect"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_connect"
+>>> end of ACL "check_connect": ACCEPT
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_vrfy"
>>> processing "deny"
>>> deny: condition test failed in ACL "check_vrfy"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_vrfy"
+>>> end of ACL "check_vrfy": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
>>> test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
>>> check hosts = 10.0.0.0/24
>>> host in "10.0.0.0/24"? yes (matched "10.0.0.0/24")
>>> accept: condition test succeeded in ACL "check_expn"
+>>> end of ACL "check_expn": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing list@test.ex
>>> test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
LOG: H=[10.0.0.2] Warning: accepted ETRN #abcd
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_etrn"
+>>> end of ACL "check_etrn": ACCEPT
>>> ETRN command is: exim -R
>>> ETRN command execution skipped
>>> host in hosts_connection_nolog? no (option unset)
>>> warn: condition test failed in ACL "check_connect"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_connect"
+>>> end of ACL "check_connect": ACCEPT
>>> test.host in helo_lookup_domains? no (end of list)
>>> host in pipelining_advertise_hosts? yes (matched "*")
>>> host in "10.0.0.1"? yes (matched "10.0.0.1")
>>> message: authentication required
>>> check !authenticated = *
>>> deny: condition test succeeded in ACL "check_vrfy"
+>>> end of ACL "check_vrfy": DENY
LOG: H=(test.host) [10.0.0.1] rejected VRFY userx@test.ex: authentication required
>>> using ACL "check_expn"
>>> processing "deny"
>>> message: authentication required
>>> check !authenticated = *
>>> deny: condition test succeeded in ACL "check_expn"
+>>> end of ACL "check_expn": DENY
LOG: H=(test.host) [10.0.0.1] rejected EXPN list@test.ex: authentication required
LOG: ETRN abcd received from (test.host) [10.0.0.1]
>>> using ACL "check_etrn"
>>> message: authentication required
>>> check !authenticated = *
>>> deny: condition test succeeded in ACL "check_etrn"
+>>> end of ACL "check_etrn": DENY
LOG: H=(test.host) [10.0.0.1] rejected ETRN abcd: authentication required
>>> using ACL "check_recipient"
>>> processing "warn"
>>> message: authentication required
>>> check !authenticated = *
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> rejected RCPT <userx@test.ex>: authentication required
>>> mylogin authenticator server_condition:
>>> $auth1 = userx secret
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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
>>> using ACL "check_recipient"
>>> processing "warn"
>>> check hosts = 10.0.0.5
>>> processing "deny"
>>> message: relay not permitted
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(test.host) [10.0.0.1] F=<junk@jink.jonk.test.ex> A=mylogin rejected RCPT <userx@cus.cam.ac.uk>: relay not permitted
>>> using ACL "check_vrfy"
>>> processing "deny"
>>> deny: condition test failed in ACL "check_vrfy"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_vrfy"
+>>> end of ACL "check_vrfy": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing userx@test.ex
>>> test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
>>> check hosts = 10.0.0.0/24
>>> host in "10.0.0.0/24"? yes (matched "10.0.0.0/24")
>>> accept: condition test succeeded in ACL "check_expn"
+>>> end of ACL "check_expn": ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing list@test.ex
>>> test.ex in "test.ex : *.test.ex"? yes (matched "test.ex")
LOG: H=(test.host) [10.0.0.1] Warning: accepted ETRN #abcd
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_etrn"
+>>> end of ACL "check_etrn": ACCEPT
>>> ETRN command is: exim -R
>>> ETRN command execution skipped
>>> host in hosts_connection_nolog? no (option unset)
>>> warn: condition test failed in ACL "check_connect"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_connect"
+>>> end of ACL "check_connect": ACCEPT
>>> test.host in helo_lookup_domains? no (end of list)
>>> host in pipelining_advertise_hosts? yes (matched "*")
>>> host in "10.0.0.1"? no (end of list)
>>> check authenticated = *
>>> mylogin in "*"? yes (matched "*")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> warn: condition test failed in ACL "check_connect"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_connect"
+>>> end of ACL "check_connect": ACCEPT
>>> test.host in helo_lookup_domains? no (end of list)
>>> host in pipelining_advertise_hosts? yes (matched "*")
>>> host in "10.0.0.1"? no (end of list)
warn: condition test failed in ACL "check_connect"
processing "accept"
accept: condition test succeeded in ACL "check_connect"
+end of ACL "check_connect": ACCEPT
SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
smtp_setup_msg entered
SMTP<< ehlo testing.testing
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@exim.test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> DNS lookup for 14.12.11.V4NET.rbl.test.ex succeeded (yielding 127.0.0.2)
>>> => that means V4NET.11.12.14 is listed at rbl.test.ex
>>> deny: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": DENY
LOG: H=(exim.test.ex) [V4NET.11.12.14] F=<postmaster@exim.test.ex> rejected RCPT userx@exim.test.ex: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaX-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@exim.test.ex")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> using ACL "check_recipient"
>>> processing "accept"
>>> check hosts = :
>>> exim.test.ex in "exim.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
LOG: 10HmaY-0005vi-00 <= postmaster@exim.test.ex H=(exim.test.ex) [V4NET.11.12.14] P=esmtpa A=plain:userx S=sss
>>> check authenticated = *
>>> auth1 in "*"? yes (matched "*")
>>> accept: condition test succeeded in ACL "acl_5_6_9"
+>>> end of ACL "acl_5_6_9": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> check authenticated = auth1
>>> auth1 in "auth1"? yes (matched "auth1")
>>> accept: condition test succeeded in ACL "acl_5_6_10"
+>>> end of ACL "acl_5_6_10": ACCEPT
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> test.ex in "test.ex : *.test.ex"? yes (matched "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 ignore_fromline_hosts? no (option unset)
LOG: 10HmaY-0005vi-00 <= userx@some.domain H=(test.host) [10.0.0.1] P=esmtpa A=cram_md5:tim S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> check hosts = 10.0.0.5
>>> host in "10.0.0.5"? yes (matched "10.0.0.5")
>>> accept: condition test succeeded in ACL "check_recipient"
+>>> end of ACL "check_recipient": ACCEPT
>>> host in ignore_fromline_hosts? no (option unset)
LOG: 10HmaZ-0005vi-00 <= userx@some.domain H=(test.host) [10.0.0.5] P=esmtp S=sss
rcpt for userx@domain.com
created log directory TESTSUITE/spool/log
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
----------- start cutthrough setup ------------
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 ESMTP
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Send data
----------- start cutthrough headers send -----------
LOG: MAIN
rcpt for userz@domain.com
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
----------- start cutthrough setup ------------
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 SMTP only spoken here
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Send data
----------- start cutthrough headers send -----------
LOG: MAIN
rcpt for usery@domain.com
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
----------- start cutthrough setup ------------
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 ESMTP
LOG: MAIN
rcpt for userx@domain.com
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
SMTP>> QUIT
----------- cutthrough shutdown (more than one recipient) ------------
LOG: MAIN
LOG: MAIN
rcpt for userx@domain.com
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
----------- start cutthrough setup ------------
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 ESMTP
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Send data
----------- start cutthrough headers send -----------
check verify = recipient
----------- end verify ------------
accept: condition test succeeded in ACL "acl_rcpt"
+end of ACL "acl_rcpt": ACCEPT
----------- start cutthrough setup ------------
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 ESMTP
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Send data
----------- start cutthrough headers send -----------
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
domain.com in "*"? yes (matched "*")
----------- end verify ------------
accept: condition test succeeded in ACL "cutthrough"
+end of ACL "cutthrough": ACCEPT
----------- start cutthrough setup ------------
domain.com in "test.ex : *.test.ex"? no (end of list)
domain.com in "! +local_domains"? yes (end of list)
----------- end cutthrough setup ------------
processing "accept"
accept: condition test succeeded in inline ACL
+end of inline ACL: ACCEPT
SMTP>> DATA
SMTP<< 354 Enter message, ending with "." on a line by itself
expanding: ${tod_full}
-1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger"
+1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_event_action msg:delivery in smtp: error from acl "logger"
Attempting to start TLS
SSL info: before/connect initialization
SSL info: before/connect initialization
-SSL info: SSLv2/v3 write client hello A
SSL info: SSLv3 read server hello A
SSL info: SSLv3 read server certificate A
SSL info: SSLv3 read server key exchange A
Attempting to start TLS
SSL info: before/connect initialization
SSL info: before/connect initialization
-SSL info: SSLv2/v3 write client hello A
SSL info: SSLv3 read server hello A
SSL info: SSLv3 read server certificate A
SSL info: SSLv3 read server key exchange A
Attempting to start TLS
SSL info: before/connect initialization
SSL info: before/connect initialization
-SSL info: SSLv2/v3 write client hello A
SSL info: SSLv3 read server hello A
SSL info: SSLv3 read server certificate A
SSL info: SSLv3 read server key exchange A