[exim-cvs] Expanded EXPERIMENTAL_TPDA feature

Kezdőlap
Üzenet törlése
Válasz az üzenetre
Szerző: Exim Git Commits Mailing List
Dátum:  
Címzett: exim-cvs
Tárgy: [exim-cvs] Expanded EXPERIMENTAL_TPDA feature
Gitweb: http://git.exim.org/exim.git/commitdiff/a7538db17824b7fd70c12ef7561a67b85d6f247e
Commit:     a7538db17824b7fd70c12ef7561a67b85d6f247e
Parent:     9fc9357028c3ada0ca912e2f58d002d8f4c7a321
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Wed Aug 20 14:05:30 2014 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Wed Aug 20 14:09:05 2014 +0100


    Expanded EXPERIMENTAL_TPDA feature


    Note this introduces incompatible changes; users who are compiling
    the feature in, and with configuration files using it, will need to
    change their configurations appropriately.  See the experimental-spec.txt
    file.
---
 doc/doc-docbook/spec.xfpt         |   10 +
 doc/doc-txt/experimental-spec.txt |  107 +++++-----
 src/src/acl.c                     |   31 +++-
 src/src/deliver.c                 |  178 +++++++++-------
 src/src/expand.c                  |   13 +-
 src/src/functions.h               |    8 +-
 src/src/globals.c                 |   10 +-
 src/src/globals.h                 |   10 +-
 src/src/smtp_out.c                |   14 ++-
 src/src/structs.h                 |    2 +-
 src/src/tls-gnu.c                 |   82 +++++++-
 src/src/tls-openssl.c             |   64 +++++-
 src/src/transport.c               |    4 +-
 src/src/transports/smtp.c         |  412 +++++++++++++++++++------------------
 src/src/transports/smtp.h         |    3 -
 src/src/verify.c                  |  111 ++++++----
 test/confs/5608                   |   13 +-
 test/confs/5658                   |   13 +-
 test/confs/5700                   |   63 +++++--
 test/confs/5750                   |   21 ++-
 test/confs/5760                   |   21 ++-
 test/log/5700                     |   30 +++-
 test/log/5750                     |   12 +-
 test/log/5760                     |   13 +-
 test/paniclog/5700                |    2 +-
 test/runtest                      |    2 +-
 test/stderr/0002                  |   18 ++
 test/stderr/0003                  |   33 +++
 test/stderr/0004                  |   36 ++++
 test/stderr/0018                  |    1 +
 test/stderr/0020                  |    1 +
 test/stderr/0021                  |    7 +
 test/stderr/0022                  |   16 ++
 test/stderr/0023                  |   55 +++++
 test/stderr/0026                  |    4 +
 test/stderr/0038                  |   15 ++
 test/stderr/0041                  |    1 +
 test/stderr/0042                  |    3 +
 test/stderr/0043                  |    4 +
 test/stderr/0044                  |    3 +
 test/stderr/0056                  |    3 +
 test/stderr/0057                  |    3 +
 test/stderr/0058                  |    2 +
 test/stderr/0059                  |    2 +
 test/stderr/0060                  |   16 ++
 test/stderr/0061                  |    4 +
 test/stderr/0062                  |    9 +
 test/stderr/0063                  |    4 +
 test/stderr/0064                  |    4 +
 test/stderr/0065                  |   14 ++
 test/stderr/0066                  |   18 ++
 test/stderr/0067                  |   32 +++
 test/stderr/0068                  |    5 +
 test/stderr/0069                  |    7 +
 test/stderr/0070                  |    6 +
 test/stderr/0077                  |    3 +
 test/stderr/0079                  |    2 +
 test/stderr/0080                  |    2 +
 test/stderr/0086                  |   12 +
 test/stderr/0087                  |    9 +
 test/stderr/0089                  |    4 +
 test/stderr/0091                  |    7 +
 test/stderr/0092                  |    2 +
 test/stderr/0094                  |    4 +
 test/stderr/0121                  |    8 +
 test/stderr/0124                  |    2 +
 test/stderr/0138                  |    3 +
 test/stderr/0139                  |    9 +
 test/stderr/0145                  |    2 +
 test/stderr/0157                  |    5 +
 test/stderr/0175                  |    3 +
 test/stderr/0234                  |    3 +
 test/stderr/0243                  |    1 +
 test/stderr/0251                  |    2 +
 test/stderr/0281                  |   22 ++
 test/stderr/0294                  |    4 +
 test/stderr/0303                  |    2 +
 test/stderr/0304                  |   27 +++
 test/stderr/0305                  |    1 +
 test/stderr/0306                  |    2 +
 test/stderr/0308                  |    2 +
 test/stderr/0325                  |    1 +
 test/stderr/0342                  |    1 +
 test/stderr/0362                  |    1 +
 test/stderr/0371                  |    6 +
 test/stderr/0381                  |    1 +
 test/stderr/0384                  |    1 +
 test/stderr/0386                  |    4 +
 test/stderr/0391                  |    1 +
 test/stderr/0394                  |    1 +
 test/stderr/0398                  |    2 +
 test/stderr/0401                  |    1 +
 test/stderr/0420                  |    2 +
 test/stderr/0422                  |    2 +
 test/stderr/0423                  |    1 +
 test/stderr/0432                  |    5 +
 test/stderr/0445                  |    2 +
 test/stderr/0464                  |    1 +
 test/stderr/0465                  |    3 +
 test/stderr/0479                  |    2 +
 test/stderr/0487                  |    1 +
 test/stderr/0513                  |    1 +
 test/stderr/0524                  |    1 +
 test/stderr/0534                  |    1 +
 test/stderr/0537                  |   10 +
 test/stderr/0569                  |   18 ++
 test/stderr/2600                  |    4 +
 test/stderr/3000                  |    1 +
 test/stderr/3208                  |    4 +
 test/stderr/3400                  |   18 ++
 test/stderr/3408                  |    4 +
 test/stderr/3410                  |    2 +
 test/stderr/3500                  |    2 +
 test/stderr/5400                  |    8 +
 test/stderr/5401                  |    2 +
 test/stderr/5410                  |    6 +
 test/stderr/5420                  |    6 +
 test/stderr/5700                  |    2 +-
 test/stdout/3450                  |    1 -
 test/stdout/3454                  |    2 -
 120 files changed, 1371 insertions(+), 479 deletions(-)


diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index 38c8b34..0775cb1 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -11413,6 +11413,11 @@ the result, the name is not accepted, and &$host_lookup_deferred$& is set to
.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$&"
@@ -27632,6 +27637,11 @@ anyway. If the message contains newlines, this gives rise to a multi-line SMTP
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
diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt
index 6657f63..b98ac79 100644
--- a/doc/doc-txt/experimental-spec.txt
+++ b/doc/doc-txt/experimental-spec.txt
@@ -767,82 +767,83 @@ and (for SMTP transports) a second string on deferrals caused by a host error.
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
diff --git a/src/src/acl.c b/src/src/acl.c
index 6e635fb..fe1e254 100644
--- a/src/src/acl.c
+++ b/src/src/acl.c
@@ -4129,7 +4129,11 @@ while (acl != NULL)
   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");
@@ -4140,17 +4144,26 @@ while (acl != NULL)
     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");
@@ -4159,11 +4172,19 @@ while (acl != NULL)
     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:
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 87b54d8..48d3fd7 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -141,11 +141,13 @@ the first address. */
 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;
@@ -705,6 +707,43 @@ d_tlslog(uschar * s, int * sizep, int * ptrp, address_item * 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.
@@ -728,12 +767,7 @@ have a pointer to the host item that succeeded; local deliveries can have a
 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


@@ -782,13 +816,8 @@ if ((log_extra_selector & LX_delivery_size) != 0)

 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));
@@ -804,24 +833,20 @@ else
     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)
     {
@@ -834,10 +859,10 @@ else
       }
     }


-  #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)) */
@@ -877,19 +902,22 @@ s[ptr] = 0;
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);
@@ -1089,7 +1117,7 @@ if (result == OK)
     }


/* Certificates for logging (via TPDA) */
- #ifdef SUPPORT_TLS
+#ifdef SUPPORT_TLS
tls_out.ourcert = addr->ourcert;
addr->ourcert = NULL;
tls_out.peercert = addr->peercert;
@@ -1098,11 +1126,11 @@ if (result == OK)
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);
@@ -1116,7 +1144,7 @@ if (result == OK)
   tls_out.cipher = NULL;
   tls_out.peerdn = NULL;
   tls_out.ocsp = OCSP_NOT_REQ;
-  #endif
+#endif
   }



@@ -1297,9 +1325,9 @@ else
   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": ",
@@ -1888,19 +1916,19 @@ if ((pid = fork()) == 0)
   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. */
@@ -2987,7 +3015,7 @@ while (!done)
     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++)
@@ -3015,17 +3043,17 @@ while (!done)
     (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++)
@@ -3049,14 +3077,14 @@ while (!done)
     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)
@@ -3954,11 +3982,11 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
     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
@@ -4127,7 +4155,7 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
       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;
@@ -4163,7 +4191,7 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
       *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;
@@ -4171,8 +4199,8 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
     while(*ptr++);
         rmt_dlv_checked_write(fd, big_buffer, ptr - big_buffer);
     }
-      # endif
-      #endif    /*SUPPORT_TLS*/
+# endif
+#endif    /*SUPPORT_TLS*/


       if (client_authenticator)
         {
@@ -4196,17 +4224,17 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
         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. */


@@ -4921,7 +4949,7 @@ attempted. */

 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. */
@@ -4929,7 +4957,7 @@ if (deliver_freeze)
   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
@@ -5358,13 +5386,13 @@ if (process_recipients != RECIP_IGNORE)
       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)
         {
@@ -6300,21 +6328,21 @@ if (addr_remote != NULL)
     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
@@ -7653,10 +7681,10 @@ if (remove_journal)

/* 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
diff --git a/src/src/expand.c b/src/src/expand.c
index e3e1c78..f6b70cb 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -501,6 +501,7 @@ static var_entry var_table[] = {
   { "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 },
@@ -706,14 +707,12 @@ static var_entry var_table[] = {
   { "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 },
diff --git a/src/src/functions.h b/src/src/functions.h
index a6257a9..fee4429 100644
--- a/src/src/functions.h
+++ b/src/src/functions.h
@@ -44,7 +44,7 @@ extern uschar * tls_cert_fprt_sha1(void *);
 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);
@@ -337,7 +337,11 @@ extern int     sieve_interpret(uschar *, int, uschar *, uschar *, uschar *,
 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);
diff --git a/src/src/globals.c b/src/src/globals.c
index d3f9987..f1b771a 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -577,6 +577,7 @@ time_t  deliver_frozen_at      = 0;
 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;
@@ -1326,13 +1327,8 @@ BOOL    timestamps_utc         = FALSE;


 #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;
diff --git a/src/src/globals.h b/src/src/globals.h
index 2bedcf5..f0a3091 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -328,6 +328,7 @@ extern uschar *deliver_home;           /* Home directory for pipes */
 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 */
@@ -870,13 +871,8 @@ extern BOOL    timestamps_utc;         /* Use UTC for all times */


 #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 */
diff --git a/src/src/smtp_out.c b/src/src/smtp_out.c
index b6ff511..4920b73 100644
--- a/src/src/smtp_out.c
+++ b/src/src/smtp_out.c
@@ -165,13 +165,18 @@ Arguments:
   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;
@@ -198,6 +203,13 @@ HDEBUG(D_transport|D_acl|D_v)
       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;
diff --git a/src/src/structs.h b/src/src/structs.h
index 71ac5d8..80c23fb 100644
--- a/src/src/structs.h
+++ b/src/src/structs.h
@@ -188,7 +188,7 @@ typedef struct transport_instance {
   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;


diff --git a/src/src/tls-gnu.c b/src/src/tls-gnu.c
index 266ab89..b7eae17 100644
--- a/src/src/tls-gnu.c
+++ b/src/src/tls-gnu.c
@@ -47,6 +47,10 @@ require current GnuTLS, then we'll drop support for the ancient libraries).
# 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>
@@ -115,6 +119,9 @@ typedef struct exim_gnutls_state {
#ifdef EXPERIMENTAL_CERTNAMES
uschar *exp_tls_verify_cert_hostnames;
#endif
+#ifdef EXPERIMENTAL_TPDA
+ uschar *event_action;
+#endif

   tls_support *tlsp;    /* set in tls_init() */


@@ -133,6 +140,9 @@ static const exim_gnutls_state_st exim_gnutls_state_init = {
 #ifdef EXPERIMENTAL_CERTNAMES
                                             NULL,
 #endif
+#ifdef EXPERIMENTAL_TPDA
+                                            NULL,
+#endif
   NULL,
   NULL, 0, 0, 0, 0,
 };
@@ -144,7 +154,9 @@ context we're currently dealing with" pointer and rely upon being
 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;

@@ -174,18 +186,18 @@ static BOOL exim_gnutls_base_init_done = FALSE;
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 { \
@@ -1512,6 +1524,52 @@ return 0;
#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




@@ -1694,7 +1752,7 @@ Arguments:
   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
@@ -1703,9 +1761,10 @@ Returns:            OK/DEFER/FAIL (because using common functions),
 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;
@@ -1804,6 +1863,15 @@ if (request_ocsp)
   }
 #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;
diff --git a/src/src/tls-openssl.c b/src/src/tls-openssl.c
index e562a89..c031b8e 100644
--- a/src/src/tls-openssl.c
+++ b/src/src/tls-openssl.c
@@ -116,6 +116,9 @@ typedef struct tls_ext_ctx_cb {
#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
@@ -262,6 +265,9 @@ when asked. We get here only if a certificate has been received. Handling of
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.
@@ -275,6 +281,7 @@ verify_callback(int state, X509_STORE_CTX *x509ctx,
   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));
@@ -282,7 +289,7 @@ 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;
@@ -296,10 +303,9 @@ if (state == 0)
     "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  */
@@ -311,6 +317,23 @@ else if (X509_STORE_CTX_get_error_depth(x509ctx) != 0)
       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
   {
@@ -361,6 +384,21 @@ 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",
@@ -369,7 +407,7 @@ else
*calledp = TRUE;
}

-return 1; /* accept */
+return 1; /* accept, at least for this level */
}

static int
@@ -1032,7 +1070,7 @@ tls_init(SSL_CTX **ctxp, host_item *host, uschar *dhparam, uschar *certificate,
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;
@@ -1050,6 +1088,9 @@ else
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();
@@ -1546,7 +1587,7 @@ Argument:
   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
@@ -1555,9 +1596,10 @@ Returns:           OK on success


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;
@@ -1672,6 +1714,10 @@ if (request_ocsp)
}
#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");
diff --git a/src/src/transport.c b/src/src/transport.c
index 3648bfc..31437b1 100644
--- a/src/src/transport.c
+++ b/src/src/transport.c
@@ -95,8 +95,8 @@ optionlist optionlist_transports[] = {
   { "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) },
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index 40eebe8..0dfa019 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -172,10 +172,6 @@ optionlist smtp_transport_options[] = {
   { "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
@@ -261,9 +257,6 @@ smtp_transport_options_block smtp_transport_option_defaults = {
   NULL,                /* dkim_sign_headers */
   NULL                 /* dkim_strict */
 #endif
-#ifdef EXPERIMENTAL_TPDA
- ,NULL                 /* tpda_host_defer_action */
-#endif
 };


 #ifdef EXPERIMENTAL_DSN
@@ -485,7 +478,8 @@ Arguments:
 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"";
@@ -636,7 +630,6 @@ else
    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


@@ -644,36 +637,39 @@ Returns: nothing
*/

 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
@@ -940,147 +936,147 @@ smtp_auth(uschar *buffer, unsigned bufsize, address_item *addrlist, host_item *h
     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;
}


@@ -1283,9 +1279,14 @@ specially so they can be identified for retries. */

 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)
     {
@@ -1309,6 +1310,17 @@ if (continue_hostname == NULL)
     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. */


@@ -1363,7 +1375,7 @@ goto SEND_QUIT;
   /* 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;
@@ -1372,7 +1384,7 @@ goto SEND_QUIT;
     smtp_command = US"SSL-on-connect";
     goto TLS_NEGOTIATE;
     }
-  #endif
+#endif


   if (esmtp)
     {
@@ -1409,13 +1421,13 @@ goto SEND_QUIT;


/* 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) &&
@@ -1424,7 +1436,7 @@ goto SEND_QUIT;


   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
@@ -1481,7 +1493,7 @@ if (tls_offered && !suppress_tls &&
   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
@@ -1582,9 +1594,9 @@ continued session down a previously-used socket, we haven't just done EHLO, so
 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
@@ -1721,12 +1733,11 @@ if (prdr_offered)
       {            /* 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
@@ -1769,7 +1780,10 @@ otherwise no check - this feature is expected to be used with LMTP and other
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
@@ -1823,25 +1837,22 @@ for (addr = first_addr;
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)
       {
@@ -1850,7 +1861,6 @@ for (addr = first_addr;
       strcpy(p, " NOTIFY=");
       while (*p) p++;
       for (i = 0; i < 4; i++)
-        {
         if ((addr->dsn_flags & rf_list[i]) != 0)
           {
           if (!first) *p++ = ',';
@@ -1858,16 +1868,16 @@ for (addr = first_addr;
           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
@@ -1875,13 +1885,13 @@ for (addr = first_addr;
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)
@@ -1972,6 +1982,7 @@ if (!ok) ok = TRUE; else
   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 |
@@ -2098,9 +2109,9 @@ if (!ok) ok = TRUE; else
     /* 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
        )
       {
@@ -2276,10 +2287,10 @@ if (!ok)
   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
@@ -2472,7 +2483,7 @@ if (completed_address && ok && send_quit)
       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);
@@ -2483,7 +2494,7 @@ if (completed_address && ok && send_quit)
                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. */
@@ -2539,6 +2550,11 @@ specified in the transports, and therefore not visible at top level, in which
 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;
@@ -2627,13 +2643,13 @@ for (addr = addrlist; addr != NULL; addr = addr->next)
   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;
 }
@@ -3246,10 +3262,10 @@ for (cutoff_retry = 0; expired &&
                          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
@@ -3260,7 +3276,7 @@ for (cutoff_retry = 0; expired &&
       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,
@@ -3273,12 +3289,12 @@ for (cutoff_retry = 0; expired &&
           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 */
diff --git a/src/src/transports/smtp.h b/src/src/transports/smtp.h
index dd41e1f..3030f3a 100644
--- a/src/src/transports/smtp.h
+++ b/src/src/transports/smtp.h
@@ -81,9 +81,6 @@ typedef struct {
   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. */
diff --git a/src/src/verify.c b/src/src/verify.c
index b1b9f29..8564aac 100644
--- a/src/src/verify.c
+++ b/src/src/verify.c
@@ -462,6 +462,7 @@ else

     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,
@@ -501,7 +502,12 @@ else
     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)
       {
@@ -533,12 +539,23 @@ else
     /* 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))
@@ -547,14 +564,14 @@ else


     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:


@@ -568,26 +585,26 @@ else
       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
@@ -598,7 +615,7 @@ else
     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 &&
@@ -623,11 +640,11 @@ else
         {
         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. */
@@ -637,29 +654,33 @@ else
     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;
@@ -667,7 +688,7 @@ else


         /* 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;
@@ -702,13 +723,13 @@ else
         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:
@@ -994,10 +1015,14 @@ else
         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 */
diff --git a/test/confs/5608 b/test/confs/5608
index 55d9a20..272d5f6 100644
--- a/test/confs/5608
+++ b/test/confs/5608
@@ -55,6 +55,7 @@ check_data:
   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}})
@@ -100,8 +101,7 @@ send_to_server1:
   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:
@@ -113,8 +113,7 @@ 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:
@@ -127,8 +126,7 @@ 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:
@@ -142,8 +140,7 @@ 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 -----
diff --git a/test/confs/5658 b/test/confs/5658
index e8f2494..e4c346a 100644
--- a/test/confs/5658
+++ b/test/confs/5658
@@ -52,6 +52,7 @@ check_data:
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}})
@@ -99,8 +100,7 @@ send_to_server1:
   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
@@ -113,8 +113,7 @@ send_to_server2:
   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
@@ -129,8 +128,7 @@ send_to_server3:
   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
@@ -146,8 +144,7 @@ send_to_server4:
   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 -----
diff --git a/test/confs/5700 b/test/confs/5700
index 52b2801..0856bb0 100644
--- a/test/confs/5700
+++ b/test/confs/5700
@@ -18,22 +18,58 @@ acl_smtp_data = accept

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 -----

@@ -61,7 +97,6 @@ smtp:
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
diff --git a/test/confs/5750 b/test/confs/5750
index a8ff603..bcb03ac 100644
--- a/test/confs/5750
+++ b/test/confs/5750
@@ -32,10 +32,16 @@ tls_verify_certificates = DIR/aux-fixed/exim-ca/example.com/server2.example.com/
#

 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
@@ -51,6 +57,12 @@ logger:
 #     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 -----

@@ -81,8 +93,7 @@ send_to_server:
{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 -----

diff --git a/test/confs/5760 b/test/confs/5760
index e9868d1..c3b49d1 100644
--- a/test/confs/5760
+++ b/test/confs/5760
@@ -32,10 +32,16 @@ tls_verify_certificates = DIR/aux-fixed/exim-ca/example.com/server2.example.com/
#

 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
@@ -51,6 +57,12 @@ logger:
      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 -----

@@ -81,8 +93,7 @@ send_to_server:
{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 -----

diff --git a/test/log/5700 b/test/log/5700
index d119365..150aef7 100644
--- a/test/log/5700
+++ b/test/log/5700
@@ -1,19 +1,43 @@
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? 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@??? 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@??? 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
diff --git a/test/log/5750 b/test/log/5750
index 8456246..c13fe6a 100644
--- a/test/log/5750
+++ b/test/log/5750
@@ -1,9 +1,10 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? 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>
@@ -16,12 +17,13 @@
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@??? 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@??? 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>
diff --git a/test/log/5760 b/test/log/5760
index 6b0b595..e8fd95f 100644
--- a/test/log/5760
+++ b/test/log/5760
@@ -3,8 +3,8 @@
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>
@@ -18,12 +18,15 @@
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@??? 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@??? 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>
diff --git a/test/paniclog/5700 b/test/paniclog/5700
index 4f28d19..dcb6969 100644
--- a/test/paniclog/5700
+++ b/test/paniclog/5700
@@ -1,2 +1,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"

diff --git a/test/runtest b/test/runtest
index c3faa42..57caa2c 100755
--- a/test/runtest
+++ b/test/runtest
@@ -1293,7 +1293,7 @@ $munges =
     { '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 =/', },


};

diff --git a/test/stderr/0002 b/test/stderr/0002
index 023c001..a30eb73 100644
--- a/test/stderr/0002
+++ b/test/stderr/0002
@@ -185,6 +185,7 @@ host in "<
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
@@ -245,8 +246,10 @@ search_tidyup called
>>> 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:"

@@ -256,9 +259,11 @@ LOG: 10HmaX-0005vi-00 Subject is: ""
>>> 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"

@@ -269,9 +274,11 @@ LOG: 10HmaY-0005vi-00 Subject is: ""
>>> 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"

@@ -282,9 +289,11 @@ LOG: 10HmaZ-0005vi-00 Subject is: ""
>>> 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"

@@ -295,9 +304,11 @@ LOG: 10HmbA-0005vi-00 Subject is: ""
>>> 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"

@@ -308,6 +319,7 @@ LOG: 10HmbB-0005vi-00 Subject is: ""
>>> 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)

@@ -320,8 +332,10 @@ LOG: 10HmbB-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x
>>> 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"

@@ -332,6 +346,7 @@ LOG: 10HmbC-0005vi-00 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_i
>>> 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)

@@ -344,8 +359,10 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
>>> 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"

@@ -356,6 +373,7 @@ LOG: 10HmbD-0005vi-00 Subject is: " here we go: a string that is going to be enc
>>> 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
diff --git a/test/stderr/0003 b/test/stderr/0003
index c149125..60cbaf3 100644
--- a/test/stderr/0003
+++ b/test/stderr/0003
@@ -16,6 +16,7 @@
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -27,6 +28,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"

@@ -39,6 +41,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> b.c in "b.c"? yes (matched "b.c")
>>> A@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<A@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -50,6 +53,7 @@ LOG: H=[1.1.1.1] F=<A@???> rejected RCPT <x@???>
>>> b.c in "b.c"? yes (matched "b.c")
>>> A@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<A@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -61,6 +65,7 @@ LOG: H=[1.1.1.1] F=<A@???> rejected RCPT <x@???>
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> x@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<x@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -72,6 +77,7 @@ LOG: H=[1.1.1.1] F=<x@???> rejected RCPT <x@???>
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> x@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<x@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -83,6 +89,7 @@ LOG: H=[1.1.1.1] F=<x@???> rejected RCPT <x@???>
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> X@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<X@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -94,6 +101,7 @@ LOG: H=[1.1.1.1] F=<X@???> rejected RCPT <x@???>
>>> y.z in "Y.Z"? yes (matched "Y.Z")
>>> X@??? in "a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "X@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<X@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -104,6 +112,7 @@ LOG: H=[1.1.1.1] F=<X@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -114,6 +123,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ay@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -124,6 +134,7 @@ LOG: H=[1.1.1.1] F=<ay@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bX@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -134,6 +145,7 @@ LOG: H=[1.1.1.1] F=<bX@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bY@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -149,6 +161,7 @@ LOG: H=[1.1.1.1] F=<bY@???> rejected RCPT <x@???>
>>> 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 = :

@@ -163,6 +176,7 @@ LOG: H=[1.1.1.1] F=<bY@???> rejected RCPT <x@???>
>>> 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 = :

@@ -172,6 +186,7 @@ LOG: H=[1.1.1.1] F=<bY@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -182,6 +197,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -192,6 +208,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -202,6 +219,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -212,6 +230,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> cc@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -222,6 +241,7 @@ LOG: H=[1.1.1.1] F=<cc@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> CC@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -237,6 +257,7 @@ LOG: H=[1.1.1.1] F=<CC@???> rejected RCPT <x@???>
>>> 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 = :

@@ -246,6 +267,7 @@ LOG: H=[1.1.1.1] F=<CC@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -256,6 +278,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -266,6 +289,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -276,6 +300,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Pp@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -286,6 +311,7 @@ LOG: H=[1.1.1.1] F=<Pp@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> abcd@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -296,6 +322,7 @@ LOG: H=[1.1.1.1] F=<abcd@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ABCD@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -306,6 +333,7 @@ LOG: H=[1.1.1.1] F=<ABCD@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -316,6 +344,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> bX@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -326,6 +355,7 @@ LOG: H=[1.1.1.1] F=<bX@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Ay@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -336,6 +366,7 @@ LOG: H=[1.1.1.1] F=<Ay@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BY@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -346,6 +377,7 @@ LOG: H=[1.1.1.1] F=<BY@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> blocked@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -356,4 +388,5 @@ LOG: H=[1.1.1.1] F=<blocked@???> rejected RCPT <x@???>
>>> check senders = a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BLOCKED@??? in "a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
diff --git a/test/stderr/0004 b/test/stderr/0004
index 958ee7b..310a4ef 100644
--- a/test/stderr/0004
+++ b/test/stderr/0004
@@ -16,6 +16,7 @@
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@??? in "+caseful: a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -27,6 +28,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> b.c in "b.c"? yes (matched "b.c")
>>> a@??? in "+caseful: a@??? : X@??? : ^\Dx@e\.f : ^\DY@G\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain"? yes (matched "a@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")
>>> using ACL "check_recipient"

@@ -43,6 +45,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -57,6 +60,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -71,6 +75,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -85,6 +90,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -100,6 +106,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -115,6 +122,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> 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 = :

@@ -124,6 +132,7 @@ LOG: H=[1.1.1.1] F=<a@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -139,6 +148,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -153,6 +163,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -167,6 +178,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -181,6 +193,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -195,6 +208,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -204,6 +218,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -214,6 +229,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -224,6 +240,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -234,6 +251,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -244,6 +262,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> cc@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -254,6 +273,7 @@ LOG: H=[1.1.1.1] F=<cc@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> CC@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -269,6 +289,7 @@ LOG: H=[1.1.1.1] F=<CC@???> rejected RCPT <x@???>
>>> 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 = :

@@ -278,6 +299,7 @@ LOG: H=[1.1.1.1] F=<CC@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -288,6 +310,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -298,6 +321,7 @@ LOG: H=[1.1.1.1] F=<Q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -308,6 +332,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> q@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -318,6 +343,7 @@ LOG: H=[1.1.1.1] F=<q@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> Pp@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -333,6 +359,7 @@ LOG: H=[1.1.1.1] F=<Pp@???> rejected RCPT <x@???>
>>> 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 = :

@@ -347,6 +374,7 @@ LOG: H=[1.1.1.1] F=<Pp@???> rejected RCPT <x@???>
>>> 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 = :

@@ -356,6 +384,7 @@ LOG: H=[1.1.1.1] F=<Pp@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> AbCd@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -366,6 +395,7 @@ LOG: H=[1.1.1.1] F=<AbCd@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> ax@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -381,6 +411,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -395,6 +426,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> 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 = :

@@ -404,6 +436,7 @@ LOG: H=[1.1.1.1] F=<ax@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BY@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -419,6 +452,7 @@ LOG: H=[1.1.1.1] F=<BY@???> rejected RCPT <x@???>
>>> 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 = :

@@ -433,6 +467,7 @@ LOG: H=[1.1.1.1] F=<BY@???> rejected RCPT <x@???>
>>> 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 = :

@@ -442,5 +477,6 @@ LOG: H=[1.1.1.1] F=<BY@???> rejected RCPT <x@???>
>>> check senders = +caseful: a@??? : X@??? : ^\\Dx@e\\.f : ^\\DY@G\\.H :lsearch*@;TESTSUITE/aux-fixed/0003.rej.lsearch :@@lsearch*;TESTSUITE/aux-fixed/0003.rej.bydomain
>>> BlOcKeD@??? in "+caseful: a@??? : X@??? : ^\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@???> rejected RCPT <x@???>
LOG: unexpected disconnection while reading SMTP command from [1.1.1.1]
diff --git a/test/stderr/0018 b/test/stderr/0018
index 6ab9814..833a0a3 100644
--- a/test/stderr/0018
+++ b/test/stderr/0018
@@ -21,5 +21,6 @@ MUNGED: ::1 will be omitted in what follows
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

diff --git a/test/stderr/0020 b/test/stderr/0020
index 07c3684..cbab114 100644
--- a/test/stderr/0020
+++ b/test/stderr/0020
@@ -2107,3 +2107,4 @@ MUNGED: ::1 will be omitted in what follows
>>> 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
diff --git a/test/stderr/0021 b/test/stderr/0021
index 3dbb816..43331d4 100644
--- a/test/stderr/0021
+++ b/test/stderr/0021
@@ -28,6 +28,7 @@ check logwrite = $sender_host_address accepted by connect ACL
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
@@ -66,6 +67,7 @@ check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argu
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
@@ -82,6 +84,7 @@ check logwrite = :panic: rcpt accepted
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
@@ -95,6 +98,7 @@ check logwrite = :panic: rcpt accepted
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 >>>>>>>>>>>>>>>>

@@ -129,6 +133,7 @@ check logwrite = $sender_host_address accepted by connect ACL
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
@@ -153,6 +158,7 @@ check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argu
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
@@ -171,6 +177,7 @@ check logwrite = :panic: rcpt accepted
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
diff --git a/test/stderr/0022 b/test/stderr/0022
index 864e197..65768e2 100644
--- a/test/stderr/0022
+++ b/test/stderr/0022
@@ -32,6 +32,7 @@ processing "warn"
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

@@ -98,6 +99,7 @@ LOG: MAIN
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

@@ -162,6 +164,7 @@ processing "warn"
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

@@ -207,14 +210,17 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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)

@@ -231,6 +237,7 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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)

@@ -248,6 +255,7 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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

@@ -256,6 +264,7 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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]
@@ -272,6 +281,7 @@ 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"

@@ -279,6 +289,7 @@ LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check@y>: host data >A host-spe
>>> 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"

@@ -287,6 +298,7 @@ LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check@y>: host data >A host-spe
>>> 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"

@@ -294,6 +306,7 @@ LOG: H=[V4NET.9.8.7] F=<x@y> rejected RCPT <host_check2@y>: host data >A host-sp
>>> 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
@@ -340,6 +353,7 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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
@@ -360,7 +374,9 @@ LOG: SMTP connection from [V4NET.9.8.7]
>>> 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

diff --git a/test/stderr/0023 b/test/stderr/0023
index 01994ef..16c4aba 100644
--- a/test/stderr/0023
+++ b/test/stderr/0023
@@ -31,6 +31,7 @@
>>> 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

@@ -89,6 +90,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <z@z>
>>> 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

@@ -114,6 +116,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <z@z>
>>> 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

@@ -139,6 +142,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <z@z>
>>> 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

@@ -156,6 +160,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <z@z>
>>> 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@???>: DOMAIN EXPLICITLY DENIED
>>> using ACL "acl_1_2_3"
>>> processing "require"

@@ -189,6 +194,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@???>: refuse.test.ex gets r
>>> 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"

@@ -200,6 +206,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@nopass>
>>> 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)

@@ -232,6 +239,7 @@ LOG: H=[5.6.7.8] F=<x@y> rejected RCPT <x@???>
>>> 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

@@ -239,6 +247,7 @@ LOG: H=[5.6.7.8] F=<x@y> rejected RCPT <x@???>
>>> 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)

@@ -253,11 +262,13 @@ LOG: H=[5.6.7.8] F=<x@y> rejected RCPT <x@???>
>>> 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)

@@ -277,6 +288,7 @@ LOG: H=[5.6.7.8] F=<x@y> rejected RCPT <x@???>
>>> 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"

@@ -288,6 +300,7 @@ LOG: H=[9.9.9.8] F=<x@y> rejected RCPT <x@y>: don't like this host
>>> 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)

@@ -312,6 +325,7 @@ LOG: H=[9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
>>> 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

@@ -326,6 +340,7 @@ LOG: H=[9.9.9.8] F=<x@y> rejected RCPT <a@b>: don't like this host
>>> 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)

@@ -357,6 +372,7 @@ LOG: H=[5.6.8.1] F=<x@y> rejected RCPT <y@x>
>>> 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"

@@ -374,6 +390,7 @@ LOG: H=[5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
>>> 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

@@ -382,12 +399,14 @@ LOG: H=[5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
>>> ok@??? in "ok@???"? yes (matched "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@??? 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)

@@ -401,11 +420,13 @@ LOG: H=[5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
 >>> 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}}

@@ -414,6 +435,7 @@ LOG: H=[5.6.8.1] F=<user2@domain1> rejected RCPT <x@y>
>>> 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)

@@ -434,7 +456,9 @@ LOG: H=[5.6.11.1] F=<x@y> rejected RCPT <y2@y>: "local part of wrong type
>>> 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

@@ -465,6 +489,7 @@ LOG: H=[5.6.12.1] F=<x@y> rejected RCPT <x@y>: failed nested acl
>>> 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

@@ -472,6 +497,7 @@ LOG: H=[5.6.12.1] F=<x@y> rejected RCPT <x@y>: failed nested acl
>>> 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)

@@ -583,7 +609,9 @@ LOG: H=[8.8.8.8] F=<x@y> temporarily rejected RCPT <x@y>: ACL nested too deep: p
>>> 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

@@ -630,6 +658,7 @@ LOG: H=[5.6.13.1] F=<x@y> rejected RCPT <x2@y>
>>> 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"

@@ -641,6 +670,7 @@ LOG: H=[V4NET.11.12.13] F=<x@y> rejected RCPT <x@y>: DNSLIST (rbl.test.ex: This
>>> 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)

@@ -662,6 +692,7 @@ LOG: H=[V4NET.11.12.13] F=<x@y> rejected RCPT <x1@y>: DNSLIST (rbl.test.ex: This
>>> 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

@@ -674,6 +705,7 @@ LOG: H=[V4NET.11.12.13] F=<x@y> rejected RCPT <x1@y>: DNSLIST (rbl.test.ex: This
>>> 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)

@@ -751,6 +783,7 @@ LOG: H=[20.20.20.20] F=<userx@y> rejected RCPT <x1@y>: Unrouteable address
>>> 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)

@@ -793,6 +826,7 @@ LOG: H=[21.21.21.21] F=<userx@y> rejected RCPT <x1@y>: Unrouteable address
>>> 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

@@ -867,6 +901,7 @@ LOG: H=[22.22.22.22] F=<userx@y> rejected RCPT <userx@y>
>>> 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)

@@ -889,6 +924,7 @@ LOG: H=[22.22.22.22] F=<userx@y> rejected RCPT <userx@y>
>>> 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"

@@ -907,6 +943,7 @@ LOG: H=[23.23.23.0] F=<x@y> rejected RCPT <userx@y>: Sender verify failed
>>> 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)

@@ -922,6 +959,7 @@ LOG: H=[23.23.23.0] F=<x@y> rejected RCPT <userx@y>: Sender verify failed
>>> 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)

@@ -971,6 +1009,7 @@ LOG: H=[25.25.25.25] F=<x@y> rejected RCPT <x@y>
>>> 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 = :

@@ -979,6 +1018,7 @@ LOG: H=[25.25.25.25] F=<x@y> rejected RCPT <x@y>
 >>> 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"

@@ -988,6 +1028,7 @@ LOG: H=[26.26.26.26] F=<> rejected RCPT <y@y>: bounce messages can have only one
 >>> 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)

@@ -1004,6 +1045,7 @@ LOG: H=[26.26.26.26] F=<> rejected RCPT <z@y>: bounce messages can have only one
>>> 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)

@@ -1017,11 +1059,13 @@ LOG: H=[26.26.26.26] F=<> rejected RCPT <z@y>: bounce messages can have only one
>>> 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"

@@ -1058,6 +1102,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -1073,6 +1118,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -1091,6 +1137,7 @@ LOG: H=[V4NET.0.0.97] F=<> rejected RCPT <x@y>: host lookup failed for reverse l
>>> 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"

@@ -1103,6 +1150,7 @@ LOG: H=[29.29.29.29] F=<a@localhost> rejected RCPT <x@y>
>>> 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)

@@ -1121,6 +1169,7 @@ LOG: H=[29.29.29.29] F=<a@localhost> rejected RCPT <x@y>
>>> 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"

@@ -1135,6 +1184,7 @@ LOG: H=[30.30.30.30] F=<a@ten-1> rejected RCPT <x@y>: domain=test.ex
>>> 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"

@@ -1146,6 +1196,7 @@ LOG: H=[30.30.30.30] F=<a@ten-1> rejected RCPT <x@y>: domain=test.ex
>>> 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@???> rejected RCPT <x@y>: domain=test.ex
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -1164,6 +1215,7 @@ LOG: dnslist query is too long (ignored): y+extra+extra+extra+extra+extra+extra+
>>> 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)

@@ -1235,6 +1287,7 @@ LOG: DNS list lookup defer (probably timeout) for 1.44.44.44.test.again.dns: ret
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)

@@ -1253,6 +1306,7 @@ LOG: H=[44.44.44.1] Warning: ACL "warn" statement skipped: condition test deferr
>>> 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

@@ -1263,6 +1317,7 @@ LOG: H=[44.44.44.1] Warning: ACL "warn" statement skipped: condition test deferr
>>> 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>
diff --git a/test/stderr/0026 b/test/stderr/0026
index 328b169..26c2736 100644
--- a/test/stderr/0026
+++ b/test/stderr/0026
@@ -8,6 +8,7 @@
>>> 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"

@@ -18,6 +19,7 @@
>>> 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)

@@ -29,6 +31,7 @@ LOG: 10HmbH-0005vi-00 H=[10.0.0.0] F=<x@y> rejected after DATA: domain missing o
>>> 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"

@@ -36,4 +39,5 @@ LOG: 10HmbH-0005vi-00 H=[10.0.0.0] F=<x@y> rejected after DATA: domain missing o
 >>> 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
diff --git a/test/stderr/0038 b/test/stderr/0038
index 727c1c6..2cde5de 100644
--- a/test/stderr/0038
+++ b/test/stderr/0038
@@ -21,6 +21,7 @@
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"

@@ -32,6 +33,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=
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)

@@ -55,6 +57,7 @@ LOG: 10HmaX-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
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"

@@ -66,6 +69,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=2.0 sender_rate_limit=
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)

@@ -90,6 +94,7 @@ LOG: 10HmaY-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
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"

@@ -101,6 +106,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=
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)

@@ -124,6 +130,7 @@ LOG: 10HmaZ-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
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"

@@ -135,6 +142,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=2.0 sender_rate_limit=
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)

@@ -159,6 +167,7 @@ LOG: 10HmbA-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
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

@@ -171,6 +180,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=
>>> 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

@@ -183,6 +193,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=
>>> 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"

@@ -196,6 +207,7 @@ LOG: H=(test.ex) [V4NET.9.8.7] Warning: RCPT: sender_rate=1.0 sender_rate_limit=
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)

@@ -223,6 +235,7 @@ LOG: 10HmbB-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> 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

@@ -239,6 +252,7 @@ LOG: 10HmbB-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
>>> 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"

@@ -253,4 +267,5 @@ LOG: 10HmbB-0005vi-00 H=(test.ex) [V4NET.9.8.7] F=<> rejected after DATA
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
diff --git a/test/stderr/0041 b/test/stderr/0041
index 6219369..4aacae8 100644
--- a/test/stderr/0041
+++ b/test/stderr/0041
@@ -30,6 +30,7 @@ LOG: H=[1.1.1.1] rejected EXPN postmaster
>>> 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@???
>>> calling system_aliases router

diff --git a/test/stderr/0042 b/test/stderr/0042
index e3ee2b7..63eb0fb 100644
--- a/test/stderr/0042
+++ b/test/stderr/0042
@@ -9,6 +9,7 @@
>>> 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 in "test.ex"? yes (matched "test.ex")

@@ -19,6 +20,7 @@
>>> routed by localuser router
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL

+>>> end of inline ACL: ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing junkjunk@???
>>> test.ex in "test.ex"? yes (matched "test.ex")

@@ -29,6 +31,7 @@
LOG: VRFY failed for junkjunk@??? H=[1.1.1.1]
>>> processing "accept"
>>> accept: condition test succeeded in inline ACL

+>>> end of inline ACL: ACCEPT
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing expan@???
>>> test.ex in "test.ex"? yes (matched "test.ex")

diff --git a/test/stderr/0043 b/test/stderr/0043
index 31ba8d9..6ea0099 100644
--- a/test/stderr/0043
+++ b/test/stderr/0043
@@ -25,6 +25,7 @@
>>> 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@???>: Unrouteable address
LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<junkjunk@???> rejected RCPT <postmaster@???>: Sender verify failed
LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjunk@???>
@@ -77,6 +78,7 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
>>> 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 = :

@@ -99,6 +101,7 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (RSET) from <junkjun
>>> 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@???> rejected RCPT junkjunk@???: Unrouteable address
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -120,5 +123,6 @@ LOG: H=(exim.test.ex) [V4NET.0.0.97] F=<postmaster@???> rejected RCPT j
>>> 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@???> rejected RCPT fail@???: this alias is forced to fail
LOG: H=(exim.test.ex) [V4NET.0.0.97] incomplete transaction (QUIT) from <postmaster@???> for postmaster@???
diff --git a/test/stderr/0044 b/test/stderr/0044
index d8b7ebe..71453d6 100644
--- a/test/stderr/0044
+++ b/test/stderr/0044
@@ -18,6 +18,7 @@
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@??? 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 = :

@@ -39,6 +40,7 @@
>>> 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@???> rejected RCPT list@???: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)

LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
@@ -66,5 +68,6 @@ LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.1
>>> there.test.ex in "*"? yes (matched "*")
>>> myfriend@??? 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@??? H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
diff --git a/test/stderr/0056 b/test/stderr/0056
index 6d75121..b23e4ca 100644
--- a/test/stderr/0056
+++ b/test/stderr/0056
@@ -12,6 +12,7 @@
>>> 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

@@ -23,6 +24,7 @@
>>> 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

@@ -34,4 +36,5 @@
>>> 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@??? H=[V4NET.0.0.1] P=smtp S=sss
diff --git a/test/stderr/0057 b/test/stderr/0057
index 483ca18..958a7cb 100644
--- a/test/stderr/0057
+++ b/test/stderr/0057
@@ -13,6 +13,7 @@
>>> 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"

@@ -28,6 +29,7 @@
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
>>> 3rdhost.example.com in percent_hack_domains? no (end of list)
>>> using ACL "check_recipient"

@@ -44,5 +46,6 @@ LOG: H=[V4NET.0.0.1] F=<userx@???> rejected RCPT <userx@another
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.0.0.1] P=smtp S=sss
diff --git a/test/stderr/0058 b/test/stderr/0058
index 66aa253..1698bc1 100644
--- a/test/stderr/0058
+++ b/test/stderr/0058
@@ -17,6 +17,7 @@
>>> 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@??? H=[V4NET.0.0.1] P=smtp S=sss
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -28,4 +29,5 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.0.0.1] P=smtp S=sss
>>> 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@??? H=[V4NET.0.0.1] P=smtp S=sss
diff --git a/test/stderr/0059 b/test/stderr/0059
index 34fffb5..9028e51 100644
--- a/test/stderr/0059
+++ b/test/stderr/0059
@@ -12,6 +12,7 @@
>>> 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

@@ -31,5 +32,6 @@
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.0.0.1] P=smtp S=sss
diff --git a/test/stderr/0060 b/test/stderr/0060
index 7e3e567..4d6fc41 100644
--- a/test/stderr/0060
+++ b/test/stderr/0060
@@ -12,6 +12,7 @@
>>> 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

@@ -31,6 +32,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -46,6 +48,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? 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

@@ -72,6 +75,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.0.0.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -88,6 +92,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? 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

@@ -111,6 +116,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[V4NET.0.0.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -126,6 +132,7 @@ LOG: 10HmaZ-0005vi-00 <= userx@??? H=[V4NET.0.0.5] 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

@@ -149,6 +156,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[V4NET.0.0.6] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -164,6 +172,7 @@ LOG: 10HmbA-0005vi-00 <= userx@??? H=[V4NET.0.0.6] 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

@@ -183,6 +192,7 @@ LOG: 10HmbA-0005vi-00 <= userx@??? H=[V4NET.0.0.6] 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.255.0.1] F=<userx@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbB-0005vi-00 <= userx@??? H=[V4NET.255.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -199,6 +209,7 @@ LOG: 10HmbB-0005vi-00 <= userx@??? H=[V4NET.255.0.1] P=smtp S=s
>>> 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

@@ -218,6 +229,7 @@ LOG: 10HmbB-0005vi-00 <= userx@??? H=[V4NET.255.0.1] P=smtp S=s
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbC-0005vi-00 <= userx@??? H=[V4NET.255.0.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -234,6 +246,7 @@ LOG: 10HmbC-0005vi-00 <= userx@??? H=[V4NET.255.0.2] P=smtp S=s
>>> 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

@@ -253,6 +266,7 @@ LOG: 10HmbC-0005vi-00 <= userx@??? H=[V4NET.255.0.2] P=smtp S=s
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbD-0005vi-00 <= userx@??? H=[V4NET.255.0.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -269,6 +283,7 @@ LOG: 10HmbD-0005vi-00 <= userx@??? H=[V4NET.255.0.3] P=smtp S=s
>>> 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

@@ -288,5 +303,6 @@ LOG: 10HmbD-0005vi-00 <= userx@??? H=[V4NET.255.0.3] P=smtp S=s
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbE-0005vi-00 <= userx@??? H=[V4NET.255.0.4] P=smtp S=sss
diff --git a/test/stderr/0061 b/test/stderr/0061
index 8e178fb..32c5f35 100644
--- a/test/stderr/0061
+++ b/test/stderr/0061
@@ -12,6 +12,7 @@
>>> 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

@@ -31,6 +32,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -46,6 +48,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? 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

@@ -68,5 +71,6 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.0.0.2] P=smtp S=sss
diff --git a/test/stderr/0062 b/test/stderr/0062
index 7343d7d..38648d6 100644
--- a/test/stderr/0062
+++ b/test/stderr/0062
@@ -12,6 +12,7 @@
>>> 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

@@ -39,10 +40,12 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: 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@??? 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)

@@ -58,6 +61,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1
>>> 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

@@ -82,9 +86,11 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? 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)

@@ -100,6 +106,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=ten-2.test.ex [V4NET.0.0.2
>>> 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

@@ -130,7 +137,9 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=ten-3.test.ex [V4NET.0.0.3] P=smtp S=sss
diff --git a/test/stderr/0063 b/test/stderr/0063
index 2eb0b31..16cf480 100644
--- a/test/stderr/0063
+++ b/test/stderr/0063
@@ -12,6 +12,7 @@
>>> 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

@@ -39,6 +40,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -55,6 +57,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1
>>> 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

@@ -79,4 +82,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=ten-2.test.ex [V4NET.0.0.2] P=smtp S=sss
diff --git a/test/stderr/0064 b/test/stderr/0064
index 6790f94..47de0e7 100644
--- a/test/stderr/0064
+++ b/test/stderr/0064
@@ -12,6 +12,7 @@
>>> 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

@@ -39,6 +40,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaX-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -55,6 +57,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1
>>> 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

@@ -79,4 +82,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=ten-2.test.ex [V4NET.0.0.2] P=smtp S=sss
diff --git a/test/stderr/0065 b/test/stderr/0065
index ae6fc7f..325ca98 100644
--- a/test/stderr/0065
+++ b/test/stderr/0065
@@ -12,6 +12,7 @@
>>> 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

@@ -28,6 +29,7 @@
>>> 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@??? H=[1.2.3.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -43,6 +45,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[1.2.3.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

@@ -62,6 +65,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[1.2.3.4] 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=[1.2.3.5] F=<userx@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@??? H=[1.2.3.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -78,6 +82,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[1.2.3.5] 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

@@ -94,6 +99,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[1.2.3.5] P=smtp S=sss
>>> 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@??? H=[1.2.4.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -109,6 +115,7 @@ LOG: 10HmaZ-0005vi-00 <= userx@??? H=[1.2.4.5] 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

@@ -128,6 +135,7 @@ LOG: 10HmaZ-0005vi-00 <= userx@??? H=[1.2.4.5] 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=[1.3.2.4] F=<userx@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbA-0005vi-00 <= userx@??? H=[1.3.2.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -144,6 +152,7 @@ LOG: 10HmbA-0005vi-00 <= userx@??? H=[1.3.2.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

@@ -160,6 +169,7 @@ LOG: 10HmbA-0005vi-00 <= userx@??? H=[1.3.2.4] P=smtp S=sss
>>> 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@??? H=[131.111.8.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -175,6 +185,7 @@ LOG: 10HmbB-0005vi-00 <= userx@??? H=[131.111.8.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

@@ -191,6 +202,7 @@ LOG: 10HmbB-0005vi-00 <= userx@??? H=[131.111.8.2] P=smtp S=sss
>>> 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@??? H=[192.152.98.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -206,6 +218,7 @@ LOG: 10HmbC-0005vi-00 <= userx@??? H=[192.152.98.3] P=smtp S=ss
>>> 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

@@ -222,4 +235,5 @@ LOG: 10HmbC-0005vi-00 <= userx@??? H=[192.152.98.3] P=smtp S=ss
>>> 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@??? H=[192.153.98.4] P=smtp S=sss
diff --git a/test/stderr/0066 b/test/stderr/0066
index 9dbb6f0..b86c2d5 100644
--- a/test/stderr/0066
+++ b/test/stderr/0066
@@ -12,6 +12,7 @@
>>> 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

@@ -34,6 +35,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[1.2.3.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -49,6 +51,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[1.2.3.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

@@ -74,6 +77,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmaY-0005vi-00 <= userx@??? H=[1.2.3.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -90,6 +94,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[1.2.3.5] 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

@@ -112,6 +117,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[1.2.4.5] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -127,6 +133,7 @@ LOG: 10HmaZ-0005vi-00 <= userx@??? H=[1.2.4.5] 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

@@ -155,6 +162,7 @@ LOG: no host name found for IP address 1.3.2.4
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbA-0005vi-00 <= userx@??? H=[1.3.2.4] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -171,6 +179,7 @@ LOG: 10HmbA-0005vi-00 <= userx@??? H=[1.3.2.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

@@ -193,6 +202,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[131.111.8.2] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -208,6 +218,7 @@ LOG: 10HmbB-0005vi-00 <= userx@??? H=[131.111.8.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

@@ -230,6 +241,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[192.152.98.3] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -245,6 +257,7 @@ LOG: 10HmbC-0005vi-00 <= userx@??? H=[192.152.98.3] P=smtp S=ss
>>> 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

@@ -275,6 +288,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? 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)

@@ -290,6 +304,7 @@ LOG: 10HmbD-0005vi-00 <= userx@??? H=ten-1.test.ex [V4NET.0.0.1
>>> 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

@@ -312,6 +327,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
LOG: 10HmbE-0005vi-00 <= userx@??? H=[V4NET.11.12.13] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -328,6 +344,7 @@ LOG: 10HmbE-0005vi-00 <= userx@??? H=[V4NET.11.12.13] P=smtp S=
>>> 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

@@ -350,4 +367,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@??? H=[V4NET.0.0.3] P=smtp S=sss
diff --git a/test/stderr/0067 b/test/stderr/0067
index b63242f..252f07e 100644
--- a/test/stderr/0067
+++ b/test/stderr/0067
@@ -31,6 +31,7 @@
>>> 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 = :

@@ -54,6 +55,7 @@
>>> 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"

@@ -69,6 +71,7 @@
>>> b.c in "b.c"? yes (matched "b.c")
>>> y@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -84,6 +87,7 @@ LOG: H=[1.2.3.4] F=<y@???> rejected RCPT <x@???>
>>> xy.z in "b.c"? no (end of list)
>>> philip@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -99,6 +103,7 @@ LOG: H=[1.2.3.4] F=<philip@???> rejected RCPT <x@???>
>>> patch.work in "b.c"? no (end of list)
>>> quilt@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -123,6 +128,7 @@ LOG: H=[1.2.3.4] F=<quilt@???> rejected RCPT <x@???>
>>> 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 = :

@@ -137,6 +143,7 @@ LOG: H=[1.2.3.4] F=<quilt@???> rejected RCPT <x@???>
>>> abc.def in "b.c"? no (end of list)
>>> xx@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -152,6 +159,7 @@ LOG: H=[1.2.3.4] F=<xx@???> rejected RCPT <x@???>
>>> d.e.f in "b.c"? no (end of list)
>>> abc@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -178,6 +186,7 @@ LOG: H=[1.2.3.4] F=<abc@???> rejected RCPT <x@???>
>>> 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 = :

@@ -202,6 +211,7 @@ LOG: H=[1.2.3.4] F=<abc@???> rejected RCPT <x@???>
>>> 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 = :

@@ -216,6 +226,7 @@ LOG: H=[1.2.3.4] F=<abc@???> rejected RCPT <x@???>
>>> z.z in "b.c"? no (end of list)
>>> abc@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -242,6 +253,7 @@ LOG: H=[1.2.3.4] F=<abc@???> rejected RCPT <x@???>
>>> 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 = :

@@ -256,6 +268,7 @@ LOG: H=[1.2.3.4] F=<abc@???> rejected RCPT <x@???>
>>> z.z in "b.c"? no (end of list)
>>> xyz@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -271,6 +284,7 @@ LOG: H=[1.2.3.4] F=<xyz@???> rejected RCPT <x@???>
>>> p.q.r in "b.c"? no (end of list)
>>> 12345678@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -286,6 +300,7 @@ LOG: H=[1.2.3.4] F=<12345678@???> rejected RCPT <x@???>
>>> z.z in "b.c"? no (end of list)
>>> 12345678@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -313,6 +328,7 @@ LOG: H=[1.2.3.4] F=<12345678@???> rejected RCPT <x@???>
>>> 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 = :

@@ -334,6 +350,7 @@ LOG: H=[1.2.3.4] F=<12345678@???> rejected RCPT <x@???>
>>> m.n.o in "m.n.o"? yes (matched "m.n.o")
>>> 1234@??? in "1234@??? : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "1234@???")
>>> deny: condition test succeeded in ACL "check_recipient"

+>>> end of ACL "check_recipient": DENY
LOG: H=[1.2.3.4] F=<1234@???> rejected RCPT <userx@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -345,6 +362,7 @@ LOG: H=[1.2.3.4] F=<1234@???> rejected RCPT <userx@???>
>>> test.ex in "*"? yes (matched "*")
>>> postmaster@??? 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 = :

@@ -355,6 +373,7 @@ LOG: H=[1.2.3.4] F=<1234@???> rejected RCPT <userx@???>
>>> myhost.ex in "*"? yes (matched "*")
>>> postmaster@??? 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 = :

@@ -376,6 +395,7 @@ LOG: H=[1.2.3.4] F=<1234@???> rejected RCPT <userx@???>
>>> a.b.c in "a.b.c"? yes (matched "a.b.c")
>>> rr01@??? in "1234@??? : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "rr01@???" 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@???> rejected RCPT <userx@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -402,6 +422,7 @@ LOG: H=[1.2.3.4] F=<rr01@???> rejected RCPT <userx@???>
>>> 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 = :

@@ -422,6 +443,7 @@ LOG: H=[1.2.3.4] F=<rr01@???> rejected RCPT <userx@???>
>>> check senders = 1234@??? : TESTSUITE/aux-fixed/0067.rejrec
>>> qq@??? in "1234@??? : 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@???> rejected RCPT <userx@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -443,6 +465,7 @@ LOG: H=[1.2.3.4] F=<qq@???> rejected RCPT <userx@???>
>>> check senders = 1234@??? : TESTSUITE/aux-fixed/0067.rejrec
>>> !excl@??? in "1234@??? : 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@???> rejected RCPT <userx@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -465,6 +488,7 @@ LOG: H=[1.2.3.4] F=<!excl@???> rejected RCPT <userx@???>
>>> y.p.s in "y.p.s"? yes (matched "y.p.s")
>>> sh#rp@??? in "1234@??? : TESTSUITE/aux-fixed/0067.rejrec"? yes (matched "sh#rp@???" 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@???> rejected RCPT <userx@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -491,6 +515,7 @@ LOG: H=[1.2.3.4] F=<sh#rp@???> rejected RCPT <userx@???>
>>> 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 = :

@@ -505,6 +530,7 @@ LOG: H=[1.2.3.4] F=<sh#rp@???> rejected RCPT <userx@???>
>>> xx.yy in "b.c"? no (end of list)
>>> xyzbc@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -520,6 +546,7 @@ LOG: H=[1.2.3.4] F=<xyzbc@???> rejected RCPT <x@???>
>>> xx.yy in "b.c"? no (end of list)
>>> aabc@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -546,6 +573,7 @@ LOG: H=[1.2.3.4] F=<aabc@???> rejected RCPT <x@???>
>>> 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 = :

@@ -561,6 +589,7 @@ LOG: H=[1.2.3.4] F=<aabc@???> rejected RCPT <x@???>
>>> bb.cc in "bb.cc"? yes (matched "bb.cc")
>>> y@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -589,6 +618,7 @@ LOG: H=[1.2.3.4] F=<y@???> rejected RCPT <x@???>
>>> 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 = :

@@ -614,6 +644,7 @@ LOG: H=[1.2.3.4] F=<y@???> rejected RCPT <x@???>
>>> 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 = :

@@ -630,4 +661,5 @@ LOG: H=[1.2.3.4] F=<y@???> rejected RCPT <x@???>
>>> bbb.ccc in "bbb.ccc"? yes (matched "bbb.ccc")
>>> z@??? in "!x@??? : *@b.c :!^philip@??? : ^(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 :! 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@???> rejected RCPT <x@???>
diff --git a/test/stderr/0068 b/test/stderr/0068
index 8966ab4..fe81f49 100644
--- a/test/stderr/0068
+++ b/test/stderr/0068
@@ -8,12 +8,17 @@
>>> 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]
diff --git a/test/stderr/0069 b/test/stderr/0069
index 2355b74..0772c28 100644
--- a/test/stderr/0069
+++ b/test/stderr/0069
@@ -23,6 +23,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -47,6 +48,7 @@ LOG: failed to find host name for V4NET.0.0.13: accepted by +include_unknown
>>> 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@???> rejected RCPT <x@???>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -70,6 +72,7 @@ LOG: no IP address found for host non.existent.invalid (during SMTP connection f
>>> 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@???> rejected RCPT <y@???>: "Denied"
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -91,6 +94,7 @@ LOG: no IP address found for host non.existent.invalid (during SMTP connection f
>>> 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)

@@ -114,6 +118,7 @@ LOG: list matching forced to fail: failed to find IP address for non.existent.in
>>> 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@???> rejected RCPT <y@???>: "Denied"
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -137,6 +142,7 @@ LOG: failed to find host name for V4NET.0.0.13: accepted by +include_unknown
>>> 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@???> rejected RCPT <a@???>
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -176,3 +182,4 @@ LOG: failed to find host name for V4NET.0.0.13: accepted by +include_unknown
>>> 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
diff --git a/test/stderr/0070 b/test/stderr/0070
index bb6e554..ebab42f 100644
--- a/test/stderr/0070
+++ b/test/stderr/0070
@@ -33,6 +33,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <a@b>: helo not verified
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -59,6 +60,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -88,6 +90,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -213,6 +216,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -242,6 +246,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -272,4 +277,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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
diff --git a/test/stderr/0077 b/test/stderr/0077
index eabe6ae..c8e30e9 100644
--- a/test/stderr/0077
+++ b/test/stderr/0077
@@ -22,6 +22,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -43,6 +44,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -62,4 +64,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <x@???>
diff --git a/test/stderr/0079 b/test/stderr/0079
index e00d790..15a8ba9 100644
--- a/test/stderr/0079
+++ b/test/stderr/0079
@@ -41,6 +41,7 @@ LOG: H=(exim.test.ex) [V4NET.11.12.14] Warning: accepting postmaster from host i
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@??? 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 = :

@@ -73,6 +74,7 @@ LOG: H=(exim.test.ex) [V4NET.11.12.14] Warning: accepting postmaster from host i
>>> 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@???> rejected RCPT list@???: host is listed in rbl2.test.ex
>>> host in ignore_fromline_hosts? no (option unset)

LOG: 10HmbB-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
diff --git a/test/stderr/0080 b/test/stderr/0080
index 0a0d03f..718dbba 100644
--- a/test/stderr/0080
+++ b/test/stderr/0080
@@ -14,6 +14,7 @@
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@??? 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 recipients = postmaster@???

@@ -27,6 +28,7 @@
>>> 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@???> rejected RCPT list@???: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)

LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
diff --git a/test/stderr/0086 b/test/stderr/0086
index ec49cd3..1d133ff 100644
--- a/test/stderr/0086
+++ b/test/stderr/0086
@@ -8,11 +8,13 @@
>>> 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@???> rejected after DATA: '>' missing at end of address: failing address in "Cc:" header is: <abcd@???
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -24,11 +26,13 @@ LOG: 10HmaY-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@???> rejected after DATA: '>' missing at end of address: failing address in "Cc:" header is: <abcd@???
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -40,11 +44,13 @@ LOG: 10HmaZ-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@???> rejected after DATA: '>' missing at end of address: failing address in "Resent-To:" header is: <xyz@???
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -56,11 +62,13 @@ LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@???> rejected after DATA: unmatched doublequote in local part: failing address in "Cc:" header begins: "abcd@??? (missing quote),\n longlonglonglonglong@???,\n listlistlistlistlist@???,\n ofofofofofofofofofof@???,\n addressesaddresses@???, \n longlonglonglonglong@???,\n listlistlistlistlist@???,\n ofofofofofofofofofof@???,\n addressesaddresses@???, \n longlonglonglonglong@???,\n listlistlistlistlist@???,\n ofofofofofofofofofof@???,\n addressesaddresses@???, \n longlonglonglonglong@???,\n listlistlistlistlist@???,\n ofofofofofofofofofof@???,\n addressesaddresses@???
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -72,11 +80,13 @@ LOG: 10HmbB-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@???> 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)

@@ -88,6 +98,7 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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"

@@ -95,4 +106,5 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@??? H=[V4NET.10.10.9] P=smtp S=sss
diff --git a/test/stderr/0087 b/test/stderr/0087
index ee44cf0..31cefea 100644
--- a/test/stderr/0087
+++ b/test/stderr/0087
@@ -26,6 +26,7 @@
>>> 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"

@@ -35,6 +36,7 @@
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -64,6 +66,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.10.10.10] 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"

@@ -73,6 +76,7 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -102,6 +106,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.10.10.10] 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"

@@ -113,6 +118,7 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> 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@???> 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)

@@ -142,6 +148,7 @@ LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after DATA:
>>> 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"

@@ -157,6 +164,7 @@ LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after DATA:
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -186,6 +194,7 @@ LOG: 10HmaZ-0005vi-00 <= userx@??? H=[V4NET.10.10.10] 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"

diff --git a/test/stderr/0089 b/test/stderr/0089
index 83fc35d..213760d 100644
--- a/test/stderr/0089
+++ b/test/stderr/0089
@@ -23,6 +23,7 @@ LOG: rejected HELO from [V4NET.0.0.0]: syntactically invalid argument(s): @#$%^&
>>> 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 = :

@@ -41,6 +42,7 @@ LOG: rejected HELO from [V4NET.0.0.0]: syntactically invalid argument(s): @#$%^&
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -73,6 +75,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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 = :

@@ -91,4 +94,5 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <yy@???>: relay not permitted
diff --git a/test/stderr/0091 b/test/stderr/0091
index 277cb8d..4f68528 100644
--- a/test/stderr/0091
+++ b/test/stderr/0091
@@ -16,6 +16,7 @@
>>> 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"

@@ -26,6 +27,7 @@
>>> 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@???> 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)

@@ -46,6 +48,7 @@ LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.1] F=<junk@???> rejected after
>>> 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@???>: Unrouteable address
LOG: H=[V4NET.0.0.2] F=<junk@???> rejected RCPT <root@???>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)

@@ -73,6 +76,7 @@ LOG: H=[V4NET.0.0.2] F=<junk@???> rejected RCPT <root@???>: Se
>>> 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"

@@ -83,6 +87,7 @@ LOG: H=[V4NET.0.0.2] F=<junk@???> rejected RCPT <root@???>: Se
>>> 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@???> 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)

@@ -109,6 +114,7 @@ LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.2] F=<userx@???> rejected after DATA: the
>>> 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"

@@ -122,4 +128,5 @@ LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.2] F=<userx@???> rejected after DATA: the
>>> 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@??? H=[V4NET.0.0.2] P=smtp S=sss
diff --git a/test/stderr/0092 b/test/stderr/0092
index f7bdef8..09bf352 100644
--- a/test/stderr/0092
+++ b/test/stderr/0092
@@ -30,6 +30,7 @@ LOG: SMTP command timeout on connection from [V4NET.0.0.1]
>>> 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@???>
exim: timed out while reading - message abandoned
exim: timed out while reading - message abandoned
@@ -61,6 +62,7 @@ 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@???> rejected RCPT verify@???: Unrouteable address
LOG: SMTP command timeout on connection from [V4NET.0.0.1]
An error was detected while processing a file of BSMTP input.
diff --git a/test/stderr/0094 b/test/stderr/0094
index 77ca6bc..8626c5e 100644
--- a/test/stderr/0094
+++ b/test/stderr/0094
@@ -27,6 +27,7 @@ LOG: no host name found for IP address V4NET.11.12.13
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "0.0.0.0/0")

@@ -61,6 +62,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
Exim version x.yz ....
changed uid/gid: forcing real = effective
@@ -125,6 +127,7 @@ check domains = +local_domains
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@???>
using ACL "check_recipient"
@@ -145,6 +148,7 @@ accept: condition test failed in 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@???> rejected RCPT <userx@???>: relay not permitted
diff --git a/test/stderr/0121 b/test/stderr/0121
index 39cdfba..a00b2fa 100644
--- a/test/stderr/0121
+++ b/test/stderr/0121
@@ -18,6 +18,7 @@
>>> 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@???>: Unrouteable address
LOG: H=[127.0.0.1] F=<unknown@???> rejected RCPT <userx@???>: Sender verify failed
>>> using ACL "check_recipient"

@@ -31,6 +32,7 @@ LOG: H=[127.0.0.1] F=<unknown@???> rejected RCPT <userx@???>: Sender ver
>>> 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@???>: unrouteable mail domain "unknown.dom.ain"
LOG: H=[127.0.0.1] F=<userx@???> rejected RCPT <userx@???>: Sender verify failed
>>> host in smtp_accept_max_nonmail_hosts? yes (matched "*")

@@ -46,6 +48,7 @@ LOG: H=[127.0.0.1] F=<userx@???> rejected RCPT <userx@???>: Send
>>> 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"@???>: Unrouteable address
LOG: H=[127.0.0.1] F=<"unknown with spaces"@???> rejected RCPT <userx@???>: Sender verify failed
>>> using ACL "check_recipient"

@@ -66,6 +69,7 @@ LOG: H=[127.0.0.1] F=<"unknown with spaces"@???> rejected RCPT <userx@???
>>> 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"

@@ -79,6 +83,7 @@ LOG: H=[127.0.0.1] F=<"unknown with spaces"@???> rejected RCPT <userx@???
>>> 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@???> rejected after DATA: there is no valid sender in any header line
>>> using ACL "check_recipient"
>>> processing "require"

@@ -98,12 +103,14 @@ LOG: 10HmaX-0005vi-00 H=[127.0.0.1] F=<userx@???> rejected after DATA: there
>>> 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@???> rejected after DATA: syntax error in 'From:' header when scanning for sender: missing or malformed local part in "<>"
>>> using ACL "check_recipient"
>>> processing "require"

@@ -138,6 +145,7 @@ LOG: H=[127.0.0.1] F=<defer@???> temporarily rejected RCPT <userx@???>:
>>> 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"

diff --git a/test/stderr/0124 b/test/stderr/0124
index 328d780..d259f47 100644
--- a/test/stderr/0124
+++ b/test/stderr/0124
@@ -27,6 +27,7 @@ LOG: no host name found for IP address V4NET.0.0.97
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -45,4 +46,5 @@ LOG: H=[V4NET.0.0.97] F=<userx@???> rejected RCPT <userx@???>:
>>> 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@???> rejected RCPT <userx@???>: relay not permitted
diff --git a/test/stderr/0138 b/test/stderr/0138
index 921115a..c84420e 100644
--- a/test/stderr/0138
+++ b/test/stderr/0138
@@ -24,6 +24,7 @@
>>> 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 = :

@@ -40,6 +41,7 @@
>>> 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@??? H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -116,5 +118,6 @@ LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.1
>>> 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@??? H=(exim.test.ex) [V4NET.11.12.13] P=esmtp S=sss
diff --git a/test/stderr/0139 b/test/stderr/0139
index c7f1f32..140f546 100644
--- a/test/stderr/0139
+++ b/test/stderr/0139
@@ -37,6 +37,7 @@
>>> 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}}

@@ -87,6 +88,7 @@
>>> 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}}

@@ -123,6 +125,7 @@
>>> 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@??? H=[V4NET.11.12.14] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -164,6 +167,7 @@ LOG: 10HmaY-0005vi-00 <= postmaster@??? H=[V4NET.11.12.14] P=smtp 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}}

@@ -182,6 +186,7 @@ LOG: 10HmaY-0005vi-00 <= postmaster@??? H=[V4NET.11.12.14] P=smtp S=sss
>>> 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@???> rejected RCPT <userx@???>: 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)

@@ -226,6 +231,7 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@???> rejected RCPT <userx@???
>>> 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)

@@ -267,6 +273,7 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@???> rejected RCPT <userx@???
>>> 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)

@@ -290,6 +297,7 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@???> rejected RCPT <userx@???
>>> 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)

@@ -361,6 +369,7 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@???> rejected RCPT <userx@???
>>> 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

diff --git a/test/stderr/0145 b/test/stderr/0145
index 129616b..aa06f5a 100644
--- a/test/stderr/0145
+++ b/test/stderr/0145
@@ -17,6 +17,7 @@
>>> 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@???>: all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
LOG: H=[V4NET.9.8.7] F=<x@???> rejected RCPT <x@y>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)

@@ -46,4 +47,5 @@ LOG: H=[V4NET.9.8.7] F=<x@???> rejected RCPT <x@y>: Sender verify fail
>>> 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@???> rejected RCPT <x@???>: all relevant MX records point to non-existent hosts or (invalidly) to IP addresses
diff --git a/test/stderr/0157 b/test/stderr/0157
index bcd4f6f..a36650c 100644
--- a/test/stderr/0157
+++ b/test/stderr/0157
@@ -43,6 +43,7 @@ LOG: H=[V4NET.0.0.1] F=<x@???> rejected RCPT <a@???>: invalid sender
>>> test.ex in "test.ex"? yes (matched "test.ex")
>>> userx@??? in "userx@???"? yes (matched "userx@???")
>>> 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)

@@ -70,6 +71,7 @@ LOG: H=[V4NET.0.0.1] F=<x@???> rejected RCPT <a@???>: invalid sender
>>> 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 = :

@@ -88,6 +90,7 @@ LOG: H=[V4NET.0.0.1] F=<x@???> rejected RCPT <a@???>: invalid sender
>>> 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)

@@ -118,6 +121,7 @@ LOG: H=[V4NET.0.0.1] F=<x@???> rejected RCPT <a@???>: invalid sender
>>> 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@???> rejected RCPT <a@???>: relay not permitted
>>> using ACL "check_recipient"
>>> processing "accept"

@@ -140,4 +144,5 @@ LOG: H=[V4NET.0.0.3] F=<x@???> rejected RCPT <a@???>: relay not permitted
>>> 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@???> rejected RCPT <a@???>: relay not permitted
diff --git a/test/stderr/0175 b/test/stderr/0175
index cbf66d5..9423139 100644
--- a/test/stderr/0175
+++ b/test/stderr/0175
@@ -23,6 +23,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???>: remote host address is the local host
LOG: H=[V4NET.0.0.0] F=<user@???> rejected RCPT <userx@???>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)

@@ -53,6 +54,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???>: fail_sender2 router forced verify failure
LOG: H=[V4NET.0.0.0] F=<user@???> rejected RCPT <userx@???>: Sender verify failed
>>> host in hosts_connection_nolog? no (option unset)

@@ -87,4 +89,5 @@ LOG: H=[V4NET.0.0.0] F=<user@???> rejected RCPT <userx@???>: Sender
>>> 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@??? H=[V4NET.0.0.0] P=smtp S=sss
diff --git a/test/stderr/0234 b/test/stderr/0234
index 727641b..b7c44c7 100644
--- a/test/stderr/0234
+++ b/test/stderr/0234
@@ -15,6 +15,7 @@
>>> 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"

@@ -23,6 +24,7 @@ LOG: H=[V4NET.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
>>> 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

@@ -32,3 +34,4 @@ LOG: H=[V4NET.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
>>> 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
diff --git a/test/stderr/0243 b/test/stderr/0243
index b8aaf25..605febb 100644
--- a/test/stderr/0243
+++ b/test/stderr/0243
@@ -29,3 +29,4 @@
>>> 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
diff --git a/test/stderr/0251 b/test/stderr/0251
index 982d9af..6a50936 100644
--- a/test/stderr/0251
+++ b/test/stderr/0251
@@ -32,6 +32,7 @@
>>> 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

@@ -50,5 +51,6 @@
>>> 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 ********
diff --git a/test/stderr/0281 b/test/stderr/0281
index 88d0814..9a3396b 100644
--- a/test/stderr/0281
+++ b/test/stderr/0281
@@ -14,6 +14,7 @@
>>> 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 @[]

@@ -22,12 +23,14 @@
>>> 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@???>: domain doesn't match @ or @[]
>>> using ACL "acl_rcpt_2"
>>> processing "require"

@@ -39,6 +42,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <1@???>: domain doesn't match
>>> 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

@@ -49,6 +53,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <1@???>: domain doesn't match
>>> 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

@@ -62,6 +67,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <1@???>: domain doesn't match
>>> 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

@@ -71,6 +77,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <1@???>: domain doesn't match
>>> 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@???>: domain doesn't match @mx_any
>>> using ACL "acl_rcpt_2"
>>> processing "require"

@@ -78,6 +85,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <2@???>: domain doesn't matc
>>> 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@???>: domain doesn't match @mx_any
>>> using ACL "acl_rcpt_3"
>>> processing "require"

@@ -90,6 +98,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <2@???>: domain doesn't ma
>>> 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

@@ -102,6 +111,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <2@???>: domain doesn't ma
>>> 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@???>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_3"
>>> processing "require"

@@ -112,6 +122,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@???>: domain doesn't matc
>>> 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@???>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_3"
>>> processing "require"

@@ -119,6 +130,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@???>: domain doesn't matc
>>> 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@???>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_4"
>>> processing "require"

@@ -128,6 +140,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@???>: domain doesn't ma
>>> 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@???>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_4"
>>> processing "require"

@@ -143,6 +156,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@???>: domain doesn't matc
>>> 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

@@ -152,6 +166,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@???>: domain doesn't matc
>>> 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@???>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_4"
>>> processing "require"

@@ -159,6 +174,7 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <4@???>: domain doesn't matc
>>> 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@???>: domain doesn't match @mx_secondary
>>> using ACL "acl_rcpt_5"
>>> processing "require"

@@ -169,6 +185,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???>: host doesn't match @ or @[]
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -189,6 +206,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -208,6 +226,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -228,6 +247,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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

@@ -238,6 +258,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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@???>: domain doesn't match @mx_primary
>>> using ACL "acl_rcpt_4"
>>> processing "require"

@@ -251,3 +272,4 @@ LOG: H=[V4NET.1.1.1] F=<x@y> rejected RCPT <3@???>: domain doesn't matc
>>> 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
diff --git a/test/stderr/0294 b/test/stderr/0294
index 3b09873..3626750 100644
--- a/test/stderr/0294
+++ b/test/stderr/0294
@@ -110,6 +110,7 @@ one in "reject"? 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<< rcpt to:<one@z>
host in smtp_ratelimit_hosts? no (end of list)
@@ -119,6 +120,7 @@ one in "reject"? 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

@@ -152,6 +154,7 @@ one in "reject"? 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<< rcpt to:<one@z>
host in smtp_ratelimit_hosts? yes (matched "V4NET.9.8.7")
@@ -162,6 +165,7 @@ one in "reject"? 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

diff --git a/test/stderr/0303 b/test/stderr/0303
index bd6f78c..9893e64 100644
--- a/test/stderr/0303
+++ b/test/stderr/0303
@@ -83,6 +83,7 @@ SMTP>> 250 OK
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

@@ -152,6 +153,7 @@ SMTP>> 250 OK
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

diff --git a/test/stderr/0304 b/test/stderr/0304
index 253287d..d82bb3e 100644
--- a/test/stderr/0304
+++ b/test/stderr/0304
@@ -47,6 +47,7 @@
>>> 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"

@@ -96,6 +97,7 @@ LOG: H=[1.2.3.4] F=<> rejected RCPT <b1@x>: failed 7
>>> 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"

@@ -162,12 +164,14 @@ LOG: H=[1.2.3.4] F=<> rejected RCPT <b2@x>: failed 8
>>> 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@??? 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@???>: failed 1
>>> using ACL "acl1"
>>> processing "deny"

@@ -175,6 +179,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@???>: failed 1
>>> check recipients = \N^abc.*@.*\.x\.y\.z\N : a@b
>>> abcdef@??? 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@???>: failed 1
>>> using ACL "acl1"
>>> processing "deny"

@@ -183,6 +188,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abcdef@???>: failed 1
>>> 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"

@@ -246,6 +252,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <a@b>: 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

@@ -257,6 +264,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <a@b>: failed 1
>>> check recipients = lsearch*@;TESTSUITE/aux-fixed/0304.d1
>>> x@??? 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@???>: failed 2
>>> using ACL "acl1"
>>> processing "deny"

@@ -269,6 +277,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@???>: failed 2
>>> check recipients = lsearch*@;TESTSUITE/aux-fixed/0304.d1
>>> abc@??? 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@???>: failed 2
>>> using ACL "acl1"
>>> processing "deny"

@@ -332,6 +341,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@???>: failed 2
>>> 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

@@ -348,6 +358,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@???>: failed 2
>>> 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"

@@ -365,6 +376,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@at.1>: failed 3
>>> 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"

@@ -382,6 +394,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@at.1>: failed 3
>>> 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"

@@ -445,6 +458,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abcxyz@at.1>: failed 3
>>> 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

@@ -467,6 +481,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abcxyz@at.1>: failed 3
>>> domain.only in "domain.only"? yes (matched "domain.only")
>>> x@??? 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@???>: failed 4
>>> using ACL "acl1"
>>> processing "deny"

@@ -491,6 +506,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@???>: failed 4
>>> abc.domain2.only in "*.domain2.only"? yes (matched "*.domain2.only")
>>> x@??? 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@???>: failed 4
>>> using ACL "acl1"
>>> processing "deny"

@@ -554,6 +570,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@???>: failed 4
>>> 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

@@ -583,6 +600,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <x@???>: failed 4
>>> 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"

@@ -613,6 +631,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <abc@domain3>: failed 5
>>> x.domain4 in "*.domain4"? yes (matched "*.domain4")
>>> xyz@??? 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@???>: failed 5
>>> using ACL "acl1"
>>> processing "deny"

@@ -677,6 +696,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@???>: failed 5
>>> 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

@@ -741,6 +761,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@???>: failed 5
>>> 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

@@ -775,6 +796,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@???>: failed 5
>>> myhost.test.ex in "@"? yes (matched "@")
>>> pqr@??? 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@???>: failed 6
>>> using ACL "acl1"
>>> processing "deny"

@@ -838,6 +860,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <pqr@???>: failed 6
>>> 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

@@ -889,6 +912,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <pqr@???>: failed 6
>>> 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"

@@ -947,6 +971,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <a@domain5>: failed 9
>>> 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"

@@ -1011,6 +1036,7 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@domain6>: failed 10
>>> 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

@@ -1071,4 +1097,5 @@ LOG: H=[1.2.3.4] F=<x@y> rejected RCPT <xyz@domain6>: failed 10
>>> 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
diff --git a/test/stderr/0305 b/test/stderr/0305
index ecf6bb9..7fc6cfc 100644
--- a/test/stderr/0305
+++ b/test/stderr/0305
@@ -12,6 +12,7 @@
>>> 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

diff --git a/test/stderr/0306 b/test/stderr/0306
index e4207e4..d2fcf91 100644
--- a/test/stderr/0306
+++ b/test/stderr/0306
@@ -24,6 +24,7 @@
>>> 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

@@ -35,6 +36,7 @@
>>> 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"

diff --git a/test/stderr/0308 b/test/stderr/0308
index 4a89c24..2c800bb 100644
--- a/test/stderr/0308
+++ b/test/stderr/0308
@@ -18,6 +18,7 @@ LOG: no host name found for IP address V4NET.0.0.97
>>> 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)

@@ -39,3 +40,4 @@ MUNGED: ::1 will be omitted in what follows
>>> 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
diff --git a/test/stderr/0325 b/test/stderr/0325
index 727ee56..cd66e20 100644
--- a/test/stderr/0325
+++ b/test/stderr/0325
@@ -32,4 +32,5 @@ r4: $local_part_data = LOCAL PART DATA
>>> xxx in "+test_local_parts"? yes (matched "+test_local_parts" - cached)
>>> message: \$domain_data=$domain_data \$local_part_data=$local_part_data
>>> deny: condition test succeeded in ACL "a1"

+>>> end of ACL "a1": DENY
LOG: H=[V4NET.0.0.0] F=<a@???> rejected RCPT xxx@???: $domain_data=DOMAIN DATA $local_part_data=LOCAL PART DATA
diff --git a/test/stderr/0342 b/test/stderr/0342
index 1e84be4..dc772a1 100644
--- a/test/stderr/0342
+++ b/test/stderr/0342
@@ -22,3 +22,4 @@
>>> deny: condition test failed in ACL "check_rcpt"
>>> processing "accept"
>>> accept: condition test succeeded in ACL "check_rcpt"

+>>> end of ACL "check_rcpt": ACCEPT
diff --git a/test/stderr/0362 b/test/stderr/0362
index 1406509..5f03562 100644
--- a/test/stderr/0362
+++ b/test/stderr/0362
@@ -73,6 +73,7 @@ routed by r2 router
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

diff --git a/test/stderr/0371 b/test/stderr/0371
index c4f9a93..df1a378 100644
--- a/test/stderr/0371
+++ b/test/stderr/0371
@@ -27,6 +27,7 @@ check set acl_c0 = $acl_c0; connect
 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
@@ -50,6 +51,7 @@ check set acl_c9 = $acl_c9; mail
 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"
@@ -61,6 +63,7 @@ check set acl_m9 = $acl_m9; 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

@@ -84,6 +87,7 @@ check set acl_m0 = $acl_m0; data
 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
@@ -101,6 +105,7 @@ check set acl_c9 = $acl_c9; vrfy
 check set acl_m0 = $acl_m0; vrfy
                  = ; vrfy
 accept: condition test succeeded in ACL "vrfy"
+end of ACL "vrfy": ACCEPT

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Verifying x@y
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@@ -121,6 +126,7 @@ check set acl_c9 = $acl_c9; mail
 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

diff --git a/test/stderr/0381 b/test/stderr/0381
index 7f6f680..176287a 100644
--- a/test/stderr/0381
+++ b/test/stderr/0381
@@ -73,6 +73,7 @@ host in "!*.co.uk.test.ex"? no (matched "!*.co.uk.test.ex")
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

diff --git a/test/stderr/0384 b/test/stderr/0384
index 8d556f5..7a0eb83 100644
--- a/test/stderr/0384
+++ b/test/stderr/0384
@@ -15,3 +15,4 @@
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
diff --git a/test/stderr/0386 b/test/stderr/0386
index b796773..6084853 100644
--- a/test/stderr/0386
+++ b/test/stderr/0386
@@ -68,6 +68,7 @@ require: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl1"
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
@@ -113,6 +114,7 @@ require: condition test succeeded in ACL "TESTSUITE/aux-fixed/0386.acl1"
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
@@ -175,6 +177,7 @@ LOG: MAIN
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

@@ -335,6 +338,7 @@ LOG: MAIN
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

diff --git a/test/stderr/0391 b/test/stderr/0391
index e6fac47..3268077 100644
--- a/test/stderr/0391
+++ b/test/stderr/0391
@@ -55,6 +55,7 @@ routed by r1 router
----------- end verify ------------
sender U@??? verified ok as U@???
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

diff --git a/test/stderr/0394 b/test/stderr/0394
index a51fcf4..72ffbed 100644
--- a/test/stderr/0394
+++ b/test/stderr/0394
@@ -13,6 +13,7 @@ LOG: no host name found for IP address V4NET.255.255.255
>>> 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 "*")

diff --git a/test/stderr/0398 b/test/stderr/0398
index 0acc6c2..5118c1a 100644
--- a/test/stderr/0398
+++ b/test/stderr/0398
@@ -156,6 +156,7 @@ address match test: subject=qq@remote pattern=qq@remote
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"
@@ -234,6 +235,7 @@ address match test: subject=qq@remote pattern=qq@remote
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

diff --git a/test/stderr/0401 b/test/stderr/0401
index 10afc13..ef91817 100644
--- a/test/stderr/0401
+++ b/test/stderr/0401
@@ -11,6 +11,7 @@
>>> 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"

diff --git a/test/stderr/0420 b/test/stderr/0420
index fbb2bf6..34f575e 100644
--- a/test/stderr/0420
+++ b/test/stderr/0420
@@ -27,6 +27,7 @@ SMTP>> 250 OK
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

@@ -51,6 +52,7 @@ SMTP>> 250 OK
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

diff --git a/test/stderr/0422 b/test/stderr/0422
index 36cfef6..ffb7de0 100644
--- a/test/stderr/0422
+++ b/test/stderr/0422
@@ -17,6 +17,7 @@
>>> 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)

@@ -34,4 +35,5 @@
>>> 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
diff --git a/test/stderr/0423 b/test/stderr/0423
index 47e674e..c9963ca 100644
--- a/test/stderr/0423
+++ b/test/stderr/0423
@@ -10,4 +10,5 @@
>>> 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@??? 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@??? and include code "xx#1" in the Subject
diff --git a/test/stderr/0432 b/test/stderr/0432
index 759c9a8..a9581e9 100644
--- a/test/stderr/0432
+++ b/test/stderr/0432
@@ -23,6 +23,7 @@ MUNGED: ::1 will be omitted in what follows
>>> (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
@@ -111,6 +112,7 @@ wrote positive callout cache address record
----------- 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

@@ -185,6 +187,7 @@ callout cache: address record is positive
----------- 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

@@ -218,6 +221,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

@@ -258,6 +262,7 @@ MUNGED: ::1 will be omitted in what follows
>>> 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)

diff --git a/test/stderr/0445 b/test/stderr/0445
index f8b5c1d..a789326 100644
--- a/test/stderr/0445
+++ b/test/stderr/0445
@@ -16,6 +16,7 @@
>>> 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@???>:
LOG: H=[1.2.3.4] F=<lp1@???> rejected RCPT <zz@???>: Sender verify failed
>>> using ACL "rcpt"

@@ -28,5 +29,6 @@ LOG: H=[1.2.3.4] F=<lp1@???> rejected RCPT <zz@???>: Sender verify failed
>>> 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@???>: This is a message
LOG: H=[1.2.3.4] F=<lp2@???> rejected RCPT <zz@???>: Sender verify failed
diff --git a/test/stderr/0464 b/test/stderr/0464
index 6d27462..b405a81 100644
--- a/test/stderr/0464
+++ b/test/stderr/0464
@@ -163,6 +163,7 @@ routed by r2 router
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

diff --git a/test/stderr/0465 b/test/stderr/0465
index 0702270..634cd21 100644
--- a/test/stderr/0465
+++ b/test/stderr/0465
@@ -52,6 +52,7 @@ SMTP>> 250 OK
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

@@ -76,6 +77,7 @@ using ACL "check_data"
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
@@ -114,6 +116,7 @@ SMTP>> 250 OK
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

diff --git a/test/stderr/0479 b/test/stderr/0479
index 92880dd..fe0190e 100644
--- a/test/stderr/0479
+++ b/test/stderr/0479
@@ -67,6 +67,7 @@ sender a@b verified ok as rewritten-a@rewritten-b
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"
@@ -80,6 +81,7 @@ using cached sender verify result
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

diff --git a/test/stderr/0487 b/test/stderr/0487
index 448754e..4f2bbc2 100644
--- a/test/stderr/0487
+++ b/test/stderr/0487
@@ -30,6 +30,7 @@ SMTP>> 250 OK
SMTP<< rcpt to:<userx@???>
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

diff --git a/test/stderr/0513 b/test/stderr/0513
index 5ee113b..b889bc0 100644
--- a/test/stderr/0513
+++ b/test/stderr/0513
@@ -19,4 +19,5 @@
>>> ----------- 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@???>: all relevant MX records point to non-existent hosts
diff --git a/test/stderr/0524 b/test/stderr/0524
index d839bc3..22b7888 100644
--- a/test/stderr/0524
+++ b/test/stderr/0524
@@ -13,6 +13,7 @@
>>> 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 "*")

diff --git a/test/stderr/0534 b/test/stderr/0534
index edda3c2..9296b5c 100644
--- a/test/stderr/0534
+++ b/test/stderr/0534
@@ -11,3 +11,4 @@
>>> 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
diff --git a/test/stderr/0537 b/test/stderr/0537
index a2fed38..f6ad3ba 100644
--- a/test/stderr/0537
+++ b/test/stderr/0537
@@ -40,7 +40,9 @@ LOG: sender_host_name=
 >>>                = 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)

@@ -81,7 +83,9 @@ LOG: sender_host_name=hostname
 >>>                = 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"

@@ -115,6 +119,7 @@ LOG: sender_host_name=hostname
 >>>                = 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"

@@ -123,7 +128,9 @@ LOG: sender_ident=ident
>>> 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

@@ -156,6 +163,7 @@ LOG: sender_host_name=hostname
 >>>                = 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"

@@ -164,4 +172,6 @@ LOG: sender_ident=ident
>>> 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
diff --git a/test/stderr/0569 b/test/stderr/0569
index ea01fa8..168f0eb 100644
--- a/test/stderr/0569
+++ b/test/stderr/0569
@@ -13,8 +13,10 @@
>>> 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"

@@ -23,6 +25,7 @@
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -39,14 +42,17 @@ LOG: 10HmaX-0005vi-00 <= userx@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> 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@???> rejected after DATA: Invalid character in header "Received" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -63,14 +69,17 @@ LOG: 10HmbA-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> usery@??? in "usery@???"? yes (matched "usery@???")
>>> 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@???> rejected after DATA: Invalid character in header "Subjec⍅" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -87,14 +96,17 @@ LOG: 10HmbB-0005vi-00 H=[V4NET.10.10.10] F=<usery@???> rejected after D
>>> 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@???> rejected after DATA: Invalid character in header "Subjec⍅" found
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -111,8 +123,10 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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"

@@ -121,6 +135,7 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.10.10.10] F=<userx@???> rejected after D
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? no (option unset)

@@ -137,8 +152,10 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> 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"

@@ -147,4 +164,5 @@ LOG: 10HmaY-0005vi-00 <= userx@??? H=[V4NET.10.10.10] P=smtp S=sss
>>> 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@??? H=[V4NET.10.10.10] P=smtp S=sss
diff --git a/test/stderr/2600 b/test/stderr/2600
index a1adefa..35b8141 100644
--- a/test/stderr/2600
+++ b/test/stderr/2600
@@ -157,6 +157,7 @@ accept: condition test failed in 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=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
@@ -186,6 +187,7 @@ accept: condition test failed in 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=[10.0.0.0] F=<a@b> rejected RCPT <c@d>: relay not permitted
@@ -244,6 +246,7 @@ lookup yielded: name=ok id=10.10.10.10
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"
@@ -267,6 +270,7 @@ lookup yielded: name=ok id=10.10.10.10
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

diff --git a/test/stderr/3000 b/test/stderr/3000
index 47714a1..0b7c946 100644
--- a/test/stderr/3000
+++ b/test/stderr/3000
@@ -53,5 +53,6 @@ LOG: this is a warning at TESTSUITE/aux-fixed/3000.pl line 25.
 >>> check condition = ${if !eq {${perl{foo_warn}}}{}}
 >>>                 = true
 >>> accept: condition test succeeded in ACL "check_rcpt"

+>>> end of ACL "check_rcpt": ACCEPT

******** SERVER ********
diff --git a/test/stderr/3208 b/test/stderr/3208
index 7e12f1f..9b33e5f 100644
--- a/test/stderr/3208
+++ b/test/stderr/3208
@@ -19,6 +19,7 @@
>>> 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@???> temporarily rejected RCPT <a@???>: defer in percent_hack_domains check
>>> testhack.ex in percent_hack_domains? yes (matched "testhack.ex")

@@ -35,6 +36,7 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@???> temporarily rejected RCP
>>> 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@???> temporarily rejected RCPT <a%b@???>: defer in percent_hack_domains check
>>> yesrelay.ex in percent_hack_domains? no (matched "!*relay.ex")

@@ -53,6 +55,7 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@???> temporarily rejected RCP
>>> 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"

@@ -87,6 +90,7 @@ LOG: H=(remote.host) [V4NET.0.0.1] F=<user@???> temporarily rejected RCP
>>> 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"

diff --git a/test/stderr/3400 b/test/stderr/3400
index 529ce48..138f2be 100644
--- a/test/stderr/3400
+++ b/test/stderr/3400
@@ -13,6 +13,7 @@
>>> 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"

@@ -22,6 +23,7 @@
>>> 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 in "test.ex : *.test.ex"? yes (matched "test.ex")

@@ -38,6 +40,7 @@
>>> 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 in "test.ex : *.test.ex"? yes (matched "test.ex")

@@ -60,6 +63,7 @@ LOG: ETRN #abcd received from [10.0.0.2]
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)

@@ -77,6 +81,7 @@ LOG: H=[10.0.0.2] Warning: accepted ETRN #abcd
>>> 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")

@@ -89,6 +94,7 @@ LOG: H=[10.0.0.2] Warning: accepted ETRN #abcd
>>> 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@???: authentication required
>>> using ACL "check_expn"
>>> processing "deny"

@@ -97,6 +103,7 @@ LOG: H=(test.host) [10.0.0.1] rejected VRFY userx@???: authentication requir
>>> 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@???: authentication required
LOG: ETRN abcd received from (test.host) [10.0.0.1]
>>> using ACL "check_etrn"

@@ -106,6 +113,7 @@ LOG: ETRN abcd received from (test.host) [10.0.0.1]
>>> 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"

@@ -126,6 +134,7 @@ LOG: H=(test.host) [10.0.0.1] rejected ETRN abcd: authentication required
>>> 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@???> rejected RCPT <userx@???>: authentication required
>>> mylogin authenticator server_condition:
>>> $auth1 = userx secret

@@ -157,6 +166,7 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@???> rejected RCPT <userx@te
>>> 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

@@ -195,6 +205,7 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@???> rejected RCPT <userx@te
>>> 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@???> A=mylogin rejected RCPT <userx@???>: relay not permitted
>>> using ACL "check_vrfy"
>>> processing "deny"

@@ -206,6 +217,7 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@???> A=mylogin rejected RCPT
>>> 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 in "test.ex : *.test.ex"? yes (matched "test.ex")

@@ -225,6 +237,7 @@ LOG: H=(test.host) [10.0.0.1] F=<junk@???> A=mylogin rejected RCPT
>>> 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 in "test.ex : *.test.ex"? yes (matched "test.ex")

@@ -250,6 +263,7 @@ LOG: ETRN #abcd received from (test.host) [10.0.0.1]
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)

@@ -267,6 +281,7 @@ LOG: H=(test.host) [10.0.0.1] Warning: accepted ETRN #abcd
>>> 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)

@@ -345,6 +360,7 @@ LOG: H=(test.host) [10.0.0.3] F=<junk@???> rejected RCPT <userx@cu
>>> 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)

@@ -360,6 +376,7 @@ LOG: H=(test.host) [10.0.0.3] F=<junk@???> rejected RCPT <userx@cu
>>> 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)

@@ -401,6 +418,7 @@ host in "10.0.0.6"? 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
diff --git a/test/stderr/3408 b/test/stderr/3408
index 7538245..105c6ba 100644
--- a/test/stderr/3408
+++ b/test/stderr/3408
@@ -19,6 +19,7 @@
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@??? 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 = :

@@ -37,6 +38,7 @@
>>> 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@???> rejected RCPT userx@???: host is listed in rbl.test.ex
>>> host in ignore_fromline_hosts? no (option unset)

LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.14] P=esmtp S=sss
@@ -69,6 +71,7 @@ LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.1
>>> exim.test.ex in "exim.test.ex"? yes (matched "exim.test.ex")
>>> postmaster@??? 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 = :

@@ -114,5 +117,6 @@ LOG: 10HmaX-0005vi-00 <= postmaster@??? H=(exim.test.ex) [V4NET.11.12.1
>>> 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@??? H=(exim.test.ex) [V4NET.11.12.14] P=esmtpa A=plain:userx S=sss
diff --git a/test/stderr/3410 b/test/stderr/3410
index e129996..618d18a 100644
--- a/test/stderr/3410
+++ b/test/stderr/3410
@@ -30,6 +30,7 @@ LOG: H=[5.6.9.1] F=<x@y> rejected RCPT <x@y>: You must authenticate
>>> 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)

@@ -60,6 +61,7 @@ LOG: H=[5.6.10.1] F=<x@y> rejected RCPT <x@y>
>>> 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)

diff --git a/test/stderr/3500 b/test/stderr/3500
index ee07be3..53c8508 100644
--- a/test/stderr/3500
+++ b/test/stderr/3500
@@ -58,6 +58,7 @@
>>> 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@??? H=(test.host) [10.0.0.1] P=esmtpa A=cram_md5:tim S=sss
>>> host in hosts_connection_nolog? no (option unset)

@@ -93,5 +94,6 @@ LOG: cram_md5 authenticator failed for (test.host) [10.0.0.5]: 535 Incorrect aut
>>> 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@??? H=(test.host) [10.0.0.5] P=esmtp S=sss
diff --git a/test/stderr/5400 b/test/stderr/5400
index 1c9b0d8..fc3b606 100644
--- a/test/stderr/5400
+++ b/test/stderr/5400
@@ -12,6 +12,7 @@ LOG: MAIN
rcpt for userx@???
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
@@ -24,6 +25,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
----------- 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 -----------
@@ -57,6 +59,7 @@ check logwrite = rcpt for $local_part@$domain
LOG: MAIN
rcpt for userz@???
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
@@ -71,6 +74,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
----------- 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 -----------
@@ -104,6 +108,7 @@ check logwrite = rcpt for $local_part@$domain
LOG: MAIN
rcpt for usery@???
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
@@ -122,6 +127,7 @@ check logwrite = rcpt for $local_part@$domain
LOG: MAIN
rcpt for userx@???
accept: condition test succeeded in ACL "ar"
+end of ACL "ar": ACCEPT
SMTP>> QUIT
----------- cutthrough shutdown (more than one recipient) ------------
LOG: MAIN
@@ -186,6 +192,7 @@ check logwrite = rcpt for $local_part@$domain
LOG: MAIN
rcpt for userx@???
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
@@ -198,6 +205,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
----------- 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 -----------
diff --git a/test/stderr/5401 b/test/stderr/5401
index 1bd14f8..1b42441 100644
--- a/test/stderr/5401
+++ b/test/stderr/5401
@@ -9,6 +9,7 @@ check control = cutthrough_delivery
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
@@ -21,6 +22,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
----------- 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 -----------
diff --git a/test/stderr/5410 b/test/stderr/5410
index ddd6dbc..0968549 100644
--- a/test/stderr/5410
+++ b/test/stderr/5410
@@ -32,6 +32,7 @@ expanding: $local_part
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)
@@ -96,6 +97,7 @@ expanding: ${if eq {$address_data}{userz}{*}{:}}
----------- 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}
@@ -190,6 +192,7 @@ expanding: $local_part
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)
@@ -230,6 +233,7 @@ expanding: ${if eq {$address_data}{usery}{*}{:}}
----------- 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}
@@ -324,6 +328,7 @@ expanding: $local_part
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)
@@ -364,6 +369,7 @@ expanding: ${if eq {$address_data}{usery}{*}{:}}
----------- 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}
diff --git a/test/stderr/5420 b/test/stderr/5420
index 9eea77d..5694e91 100644
--- a/test/stderr/5420
+++ b/test/stderr/5420
@@ -32,6 +32,7 @@ expanding: $local_part
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)
@@ -98,6 +99,7 @@ expanding: ${if eq {$address_data}{userz}{*}{:}}
----------- 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}
@@ -192,6 +194,7 @@ expanding: $local_part
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)
@@ -232,6 +235,7 @@ expanding: ${if eq {$address_data}{usery}{*}{:}}
----------- 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}
@@ -326,6 +330,7 @@ expanding: $local_part
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)
@@ -366,6 +371,7 @@ expanding: ${if eq {$address_data}{usery}{*}{:}}
----------- 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}
diff --git a/test/stderr/5700 b/test/stderr/5700
index 4f28d19..dcb6969 100644
--- a/test/stderr/5700
+++ b/test/stderr/5700
@@ -1,2 +1,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"

diff --git a/test/stdout/3450 b/test/stdout/3450
index 1bd2e21..24b1f8b 100644
--- a/test/stdout/3450
+++ b/test/stdout/3450
@@ -50,7 +50,6 @@ Connecting to 127.0.0.1 port 1225 ... connected
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
diff --git a/test/stdout/3454 b/test/stdout/3454
index ae2eab3..5cdb2a7 100644
--- a/test/stdout/3454
+++ b/test/stdout/3454
@@ -22,7 +22,6 @@ Connecting to 127.0.0.1 port 1225 ... connected
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
@@ -64,7 +63,6 @@ Connecting to 127.0.0.1 port 1225 ... connected
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