[exim-cvs] Add A= to delivery log lines, and a client_set_id…

Top Page
Delete this message
Reply to this message
Author: Exim Git Commits Mailing List
Date:  
To: exim-cvs
Subject: [exim-cvs] Add A= to delivery log lines, and a client_set_id option to authenticators.
Gitweb: http://git.exim.org/exim.git/commitdiff/6f1235934cf1739c7fd575a2019a6d2deeb1cf9d
Commit:     6f1235934cf1739c7fd575a2019a6d2deeb1cf9d
Parent:     faa05a9388f4efb82db4e7ea20ae746ab62f578a
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sun Nov 4 23:24:28 2012 +0000
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sun Nov 4 23:24:28 2012 +0000


    Add A= to delivery log lines, and a client_set_id option to authenticators.
---
 doc/doc-docbook/spec.xfpt |   11 ++++++++++
 doc/doc-txt/ChangeLog     |    4 ++-
 src/src/deliver.c         |   47 +++++++++++++++++++++++++++++++++++++++-----
 src/src/expand.c          |    2 +
 src/src/globals.c         |    4 +++
 src/src/globals.h         |    2 +
 src/src/structs.h         |    3 +-
 src/src/transports/smtp.c |    3 ++
 test/confs/3401           |    2 +
 test/log/3401             |    8 +++---
 test/log/3404             |    6 ++--
 test/log/3405             |    4 +-
 test/log/3412             |    2 +-
 test/log/3451             |    4 +-
 test/log/3452             |    4 +-
 test/log/3455             |    4 +-
 test/log/3461             |    4 +-
 test/log/3462             |    4 +-
 test/log/3465             |    4 +-
 test/log/3501             |    2 +-
 test/log/3600             |    2 +-
 test/stderr/3404          |    6 ++--
 test/stdout/3407          |    4 +++
 23 files changed, 101 insertions(+), 35 deletions(-)


diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index a57d29e..3e21c02 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -24072,6 +24072,12 @@ client_condition = ${if !eq{$tls_out_cipher}{}}
.endd


+.option client_set_id authenticators string&!! unset
+When client authentication succeeds, this condition is expanded; the
+result is used in the log lines for outbound messasges.
+Typically it will be the user name used for authentication.
+
+
.option driver authenticators string unset
This option must always be set. It specifies which of the available
authenticators is to be used.
@@ -33643,6 +33649,11 @@ intermediate address(es) exist between the original and the final address, the
last of these is given in parentheses after the final address. The R and T
fields record the router and transport that were used to process the address.

+If SMTP AUTH was used for the deliver there is an additional item A=
+followed by the name of the authenticator that was used.
+If an authenticated identification was set up by the authenticator’s client_set_id
+option, this is logged too, separated by a colon from the authenticator name.
+
 If a shadow transport was run after a successful local delivery, the log line
 for the successful delivery has an item added on the end, of the form
 .display
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index e115bf2..53eb02e 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -77,13 +77,15 @@ JH/08 Strip leading/trailing newlines from add_header ACL modifier data.
 JH/09 Add $headers_added variable, with content from use of ACL modifier
       add_header (but not yet added to the message).  Bugzilla 199.


-
 JH/10 Add 8bitmime log_selector, for 8bitmime status on the received line.
       Pulled from Bugzilla 817 by Wolfgang Breyha.


 PP/11 SECURITY: protect DKIM DNS decoding from remote exploit.
       CVE-2012-5671


+JH/11 Add A= logging on delivery lines, and a client_set_id option on
+      authenticators.
+


 Exim version 4.80.1
 -------------------
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 02329d2..c01e4e6 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -774,6 +774,13 @@ else
       string_printing(addr->peerdn), US"\"");
   #endif


+  if (smtp_authenticated)
+    {
+    s = string_append(s, &size, &ptr, 2, US" A=", client_authenticator);
+    if (client_authenticated_id)
+      s = string_append(s, &size, &ptr, 2, US":", client_authenticated_id);
+    }
+
   if ((log_extra_selector & LX_smtp_confirmation) != 0 &&
       addr->message != NULL)
     {
@@ -2913,6 +2920,20 @@ while (!done)
     break;
     #endif


+    case 'C':    /* client authenticator information */
+    switch (*ptr++)
+    {
+    case '1':
+      smtp_authenticated = TRUE;
+      client_authenticator = (*ptr)? string_copy(ptr) : NULL;
+      break;
+    case '2':
+      client_authenticated_id = (*ptr)? string_copy(ptr) : NULL;
+      break;
+    }
+    while (*ptr++);
+    break;
+
     case 'A':
     if (addr == NULL)
       {
@@ -3950,10 +3971,10 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
     memcpy(big_buffer+1, &transport_count, sizeof(transport_count));
     (void)write(fd, big_buffer, sizeof(transport_count) + 1);


-    /* Information about what happened to each address. Three item types are
-    used: an optional 'X' item first, for TLS information, followed by 'R'
-    items for any retry settings, and finally an 'A' item for the remaining
-    data. */
+    /* Information about what happened to each address. Four item types are
+    used: an optional 'X' item first, for TLS information, then an optional "C"
+    item for any client-auth info followed by 'R' items for any retry settings,
+    and finally an 'A' item for the remaining data. */


     for(; addr != NULL; addr = addr->next)
       {
@@ -3970,8 +3991,7 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
       if (addr->cipher != NULL)
         {
         ptr = big_buffer;
-        *ptr++ = 'X';
-        sprintf(CS ptr, "%.128s", addr->cipher);
+        sprintf(CS ptr, "X%.128s", addr->cipher);
         while(*ptr++);
         if (addr->peerdn == NULL) *ptr++ = 0; else
           {
@@ -3982,6 +4002,21 @@ for (delivery_count = 0; addr_remote != NULL; delivery_count++)
         }
       #endif


+      if (client_authenticator)
+        {
+        ptr = big_buffer;
+    sprintf(CS big_buffer, "C1%.64s", client_authenticator);
+        while(*ptr++);
+        (void)write(fd, big_buffer, ptr - big_buffer);
+    }
+      if (client_authenticated_id)
+        {
+        ptr = big_buffer;
+    sprintf(CS big_buffer, "C2%.64s", client_authenticated_id);
+        while(*ptr++);
+        (void)write(fd, big_buffer, ptr - big_buffer);
+    }
+
       /* Retry information: for most success cases this will be null. */


       for (r = addr->retries; r != NULL; r = r->next)
diff --git a/src/src/expand.c b/src/src/expand.c
index 786d427..a3d56ea 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -426,6 +426,8 @@ static var_entry var_table[] = {
   { "bounce_return_size_limit", vtype_int,    &bounce_return_size_limit },
   { "caller_gid",          vtype_gid,         &real_gid },
   { "caller_uid",          vtype_uid,         &real_uid },
+  { "client_authenticator", vtype_stringptr,  &client_authenticator },
+  { "client_authenticated_id", vtype_stringptr, &client_authenticated_id },
   { "compile_date",        vtype_stringptr,   &version_date },
   { "compile_number",      vtype_stringptr,   &version_cnumber },
   { "csa_status",          vtype_stringptr,   &csa_status },
diff --git a/src/src/globals.c b/src/src/globals.c
index 5dff0ee..8df1119 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -17,6 +17,8 @@ data blocks and hence have the opt_public flag set. */
 optionlist optionlist_auths[] = {
   { "client_condition", opt_stringptr | opt_public,
                  (void *)(offsetof(auth_instance, client_condition)) },
+  { "client_set_id", opt_stringptr | opt_public,
+                 (void *)(offsetof(auth_instance, set_client_id)) },
   { "driver",        opt_stringptr | opt_public,
                  (void *)(offsetof(auth_instance, driver_name)) },
   { "public_name",   opt_stringptr | opt_public,
@@ -426,6 +428,8 @@ int     check_log_space        = 0;
 BOOL    check_rfc2047_length   = TRUE;
 int     check_spool_inodes     = 0;
 int     check_spool_space      = 0;
+uschar    *client_authenticator  = NULL;
+uschar    *client_authenticated_id = NULL;
 int     clmacro_count          = 0;
 uschar *clmacros[MAX_CLMACROS];
 BOOL    config_changed         = FALSE;
diff --git a/src/src/globals.h b/src/src/globals.h
index a27f62c..b3025db 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -238,6 +238,8 @@ extern int     check_log_space;        /* Minimum for message acceptance */
 extern BOOL    check_rfc2047_length;   /* Check RFC 2047 encoded string length */
 extern int     check_spool_inodes;     /* Minimum for message acceptance */
 extern int     check_spool_space;      /* Minimum for message acceptance */
+extern uschar *client_authenticator;   /* Authenticator name used for smtp delivery */
+extern uschar *client_authenticated_id; /* (not yet used) */
 extern int     clmacro_count;          /* Number of command line macros */
 extern uschar *clmacros[];             /* Copy of them, for re-exec */
 extern int     connection_max_messages;/* Max down one SMTP connection */
diff --git a/src/src/structs.h b/src/src/structs.h
index c319611..1ad5d9b 100644
--- a/src/src/structs.h
+++ b/src/src/structs.h
@@ -335,7 +335,8 @@ typedef struct auth_instance {
   uschar *advertise_condition;    /* Are we going to advertise this?*/
   uschar *client_condition;       /* Should the client try this? */
   uschar *public_name;            /* Advertised name */
-  uschar *set_id;                 /* String to set as authenticated id */
+  uschar *set_id;                 /* String to set when server as authenticated id */
+  uschar *set_client_id;          /* String to set when client as client_authenticated id */
   uschar *mail_auth_condition;    /* Condition for AUTH on MAIL command */
   uschar *server_debug_string;    /* Debugging output */
   uschar *server_condition;       /* Authorization condition */
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index dc24e69..0ab1732 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -1349,6 +1349,9 @@ if (continue_hostname == NULL
             {
             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 */
diff --git a/test/confs/3401 b/test/confs/3401
index 6406e31..c4a904a 100644
--- a/test/confs/3401
+++ b/test/confs/3401
@@ -22,6 +22,7 @@ login:
   driver = plaintext
   public_name = LOGIN
   client_send = : userx : secret
+  client_set_id = userx


plain:
driver = plaintext
@@ -32,6 +33,7 @@ xlogin:
driver = plaintext
public_name = XLOGIN
client_send = : $auth1 : $auth1+$auth2
+ client_set_id = $auth1


# ----- Routers -----
diff --git a/test/log/3401 b/test/log/3401
index 003531b..d58fbbc 100644
--- a/test/log/3401
+++ b/test/log/3401
@@ -1,8 +1,8 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] A=login:userx C="250 OK"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
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 plain authenticator failed H=127.0.0.1 [127.0.0.1] 535 Sorry, authentication failed
@@ -27,7 +27,7 @@
1999-03-02 09:44:33 10HmbE-0005vi-00 Frozen (delivery error message)
1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmbF-0005vi-00 => forcesender@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmbF-0005vi-00 => forcesender@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] A=login:userx C="250 OK"
1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
1999-03-02 09:44:33 10HmbG-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
1999-03-02 09:44:33 10HmbG-0005vi-00 login authenticator cancelled authentication H=127.0.0.1 [127.0.0.1] Invalid base64 string in server response "334 User?"
@@ -37,5 +37,5 @@
1999-03-02 09:44:33 10HmbH-0005vi-00 Frozen (delivery error message)
1999-03-02 09:44:33 10HmbG-0005vi-00 Completed
1999-03-02 09:44:33 10HmbI-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmbI-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmbI-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] A=xlogin:challenge-1 C="250 OK"
1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
diff --git a/test/log/3404 b/test/log/3404
index 2c9102a..67e8f17 100644
--- a/test/log/3404
+++ b/test/log/3404
@@ -1,9 +1,9 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
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 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaZ-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=login C="250 OK"
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
diff --git a/test/log/3405 b/test/log/3405
index aedc2d8..21c9f5e 100644
--- a/test/log/3405
+++ b/test/log/3405
@@ -1,6 +1,6 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
diff --git a/test/log/3412 b/test/log/3412
index e2135ca..6df6f0b 100644
--- a/test/log/3412
+++ b/test/log/3412
@@ -1,6 +1,6 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
1999-03-02 09:44:33 10HmaX-0005vi-00 ** x@??? R=local: no deliveries made locally
1999-03-02 09:44:33 10HmaY-0005vi-00 <= <> R=10HmaX-0005vi-00 U=EXIMUSER P=local S=sss
-1999-03-02 09:44:33 10HmaY-0005vi-00 => CALLER@??? R=remote T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => CALLER@??? R=remote T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
diff --git a/test/log/3451 b/test/log/3451
index 36a93a5..19f8ba0 100644
--- a/test/log/3451
+++ b/test/log/3451
@@ -1,9 +1,9 @@
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 -qqf
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock" A=plain C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock" A=plain C="250 OK id=10HmbA-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf

diff --git a/test/log/3452 b/test/log/3452
index 36a93a5..19f8ba0 100644
--- a/test/log/3452
+++ b/test/log/3452
@@ -1,9 +1,9 @@
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 -qqf
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock" A=plain C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? 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="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock" A=plain C="250 OK id=10HmbA-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf

diff --git a/test/log/3455 b/test/log/3455
index 864b258..a1672e8 100644
--- a/test/log/3455
+++ b/test/log/3455
@@ -2,11 +2,11 @@
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 -qf
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? H=localhost (myhost.test.ex) [127.0.0.1] P=esmtpsa X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 A=plain:userx S=sss id=E10HmaX-0005vi-00@???
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 A=plain C="250 OK id=10HmaY-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@??? H=localhost (myhost.test.ex) [127.0.0.1] P=esmtpa A=login:usery S=sss id=E10HmaX-0005vi-00@???
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] A=login C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf
diff --git a/test/log/3461 b/test/log/3461
index 6cc6603..9be2ec4 100644
--- a/test/log/3461
+++ b/test/log/3461
@@ -1,9 +1,9 @@
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 -qqf
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" C="250 OK id=10HmaZ-0005vi-00"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" A=plain C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" C="250 OK id=10HmbA-0005vi-00"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" A=plain C="250 OK id=10HmbA-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf

diff --git a/test/log/3462 b/test/log/3462
index 6cc6603..9be2ec4 100644
--- a/test/log/3462
+++ b/test/log/3462
@@ -1,9 +1,9 @@
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 -qqf
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" C="250 OK id=10HmaZ-0005vi-00"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" A=plain C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" C="250 OK id=10HmbA-0005vi-00"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" A=plain C="250 OK id=10HmbA-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqf

diff --git a/test/log/3465 b/test/log/3465
index 5f8e539..1f5f3f0 100644
--- a/test/log/3465
+++ b/test/log/3465
@@ -2,11 +2,11 @@
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 -qf
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? H=localhost (myhost.test.ex) [127.0.0.1] P=esmtpsa X=TLSv1:AES256-SHA:256 A=plain:userx S=sss id=E10HmaX-0005vi-00@???
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 C="250 OK id=10HmaY-0005vi-00"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 A=plain C="250 OK id=10HmaY-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@??? H=localhost (myhost.test.ex) [127.0.0.1] P=esmtpa A=login:usery S=sss id=E10HmaX-0005vi-00@???
-1999-03-02 09:44:33 10HmaY-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaZ-0005vi-00"
+1999-03-02 09:44:33 10HmaY-0005vi-00 => userz@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1] A=login C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf
diff --git a/test/log/3501 b/test/log/3501
index a098220..48d201c 100644
--- a/test/log/3501
+++ b/test/log/3501
@@ -1,3 +1,3 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@??? R=try T=smtp_try H=127.0.0.1 [127.0.0.1] A=cram_md5 C="250 OK"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
diff --git a/test/log/3600 b/test/log/3600
index 38ce038..43549c6 100644
--- a/test/log/3600
+++ b/test/log/3600
@@ -1,6 +1,6 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ok@??? U=CALLER P=local S=sss
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmaX-0005vi-00 => x@y R=r1 T=t1 H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaY-0005vi-00"
+1999-03-02 09:44:33 10HmaX-0005vi-00 => x@y R=r1 T=t1 H=127.0.0.1 [127.0.0.1] A=spa C="250 OK id=10HmaY-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 10HmaY-0005vi-00 sender address changed to <bad@???> by CALLER
diff --git a/test/stderr/3404 b/test/stderr/3404
index 754e893..8d35b67 100644
--- a/test/stderr/3404
+++ b/test/stderr/3404
@@ -19,7 +19,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
SMTP<< 250 OK
SMTP>> QUIT
LOG: MAIN
- => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+ => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
LOG: MAIN
Completed
LOG: MAIN
@@ -43,7 +43,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
SMTP<< 250 OK
SMTP>> QUIT
LOG: MAIN
- => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+ => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=plain C="250 OK"
LOG: MAIN
Completed
LOG: MAIN
@@ -71,6 +71,6 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
SMTP<< 250 OK
SMTP>> QUIT
LOG: MAIN
- => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+ => userx@??? R=all T=smtp H=127.0.0.1 [127.0.0.1] A=login C="250 OK"
LOG: MAIN
Completed
diff --git a/test/stdout/3407 b/test/stdout/3407
index 73fe544..25fb598 100644
--- a/test/stdout/3407
+++ b/test/stdout/3407
@@ -1,6 +1,7 @@

a1 authenticator:
client_condition =
+client_set_id =
driver = plaintext
public_name = PLAIN
server_advertise_condition =
@@ -14,6 +15,7 @@ server_prompts =

a2 authenticator:
client_condition =
+client_set_id =
driver = plaintext
public_name = PLAIN
server_advertise_condition =
@@ -27,6 +29,7 @@ server_prompts =

a3 authenticator:
client_condition =
+client_set_id =
driver = plaintext
public_name = LOGIN
server_advertise_condition =
@@ -40,6 +43,7 @@ server_prompts =

a4 authenticator:
client_condition =
+client_set_id =
driver = plaintext
public_name = LOGIN
server_advertise_condition =