[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewSt…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff exim/exim-src ACKNOWLEDGMENTS exim/exim-src/src exim.c expand.c globals.c globals.h smtp_out.c verify.c exim/exim-src/src/transports s
ph10 2007/01/30 15:11:00 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff 
    exim-src             ACKNOWLEDGMENTS 
    exim-src/src         exim.c expand.c globals.c globals.h 
                         smtp_out.c verify.c 
    exim-src/src/transports smtp.c 
    exim-test/scripts/2000-GnuTLS 2013 
    exim-test/scripts/2100-OpenSSL 2113 
  Added files:
    exim-test/confs      0550 
    exim-test/log        0550 
    exim-test/scripts/0000-Basic 0550 
    exim-test/stderr     2013 2113 
    exim-test/stdout     0550 
  Log:
  Magnus' patch for $sending_ip_address and $sending_port.


  Revision  Changes    Path
  1.465     +5 -0      exim/exim-doc/doc-txt/ChangeLog
  1.132     +19 -0     exim/exim-doc/doc-txt/NewStuff
  1.69      +3 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.55      +16 -0     exim/exim-src/src/exim.c
  1.78      +2 -0      exim/exim-src/src/expand.c
  1.66      +2 -0      exim/exim-src/src/globals.c
  1.47      +2 -0      exim/exim-src/src/globals.h
  1.9       +11 -0     exim/exim-src/src/smtp_out.c
  1.33      +37 -13    exim/exim-src/src/transports/smtp.c
  1.47      +17 -15    exim/exim-src/src/verify.c
  1.1       +44 -0     exim/exim-test/confs/0550 (new)
  1.1       +3 -0      exim/exim-test/log/0550 (new)
  1.1       +25 -0     exim/exim-test/scripts/0000-Basic/0550 (new)
  1.2       +1 -1      exim/exim-test/scripts/2000-GnuTLS/2013
  1.2       +1 -1      exim/exim-test/scripts/2100-OpenSSL/2113
  1.1       +66 -0     exim/exim-test/stderr/2013 (new)
  1.1       +66 -0     exim/exim-test/stderr/2113 (new)
  1.1       +24 -0     exim/exim-test/stdout/0550 (new)


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.464
  retrieving revision 1.465
  diff -u -r1.464 -r1.465
  --- ChangeLog    30 Jan 2007 11:45:20 -0000    1.464
  +++ ChangeLog    30 Jan 2007 15:10:58 -0000    1.465
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.464 2007/01/30 11:45:20 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.465 2007/01/30 15:10:58 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -61,6 +61,11 @@
         input. This is fixed, and it now also says "batched" for BSMTP.


   PH/11 Added control=no_pipelining.
  +
  +PH/12 Added $sending_ip_address and $sending_port (mostly Magnus Holmgren's
  +      patch, slightly modified), and move the expansion of helo_data till after
  +      the connection is made in the smtp transport (so it can use these
  +      values).



Exim version 4.66

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.131
  retrieving revision 1.132
  diff -u -r1.131 -r1.132
  --- NewStuff    30 Jan 2007 11:45:20 -0000    1.131
  +++ NewStuff    30 Jan 2007 15:10:58 -0000    1.132
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.131 2007/01/30 11:45:20 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.132 2007/01/30 15:10:58 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -202,6 +202,25 @@
       To be useful, this control must be obeyed before Exim sends its response to
       an EHLO command. Therefore, it should normally appear in an ACL controlled
       by acl_smtp_connect or acl_smtp_helo.
  +
  + 7. There are two new variables called $sending_ip_address and $sending_port.
  +    These are set whenever an SMTP connection to another host has been set up,
  +    and they contain the IP address and port of the local interface that is
  +    being used. They are of interest only on hosts that have more than on IP
  +    address that want to take on different personalities depending on which one
  +    is being used.
  +
  + 8. The expansion of the helo_data option in the smtp transport now happens
  +    after the connection to the server has been made. This means that it can
  +    use the value of $sending_ip_address (see 7 above) to vary the text of the
  +    message. For example, if you want the string that is used for helo_data to
  +    be obtained by a DNS lookup of the interface address, you could use this:
  +
  +      helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}\
  +        {$primary_hostname}}
  +
  +    The use of helo_data applies both to sending messages and when doing
  +    callouts.



Version 4.66

  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- ACKNOWLEDGMENTS    17 Jan 2007 11:17:58 -0000    1.68
  +++ ACKNOWLEDGMENTS    30 Jan 2007 15:10:59 -0000    1.69
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.68 2007/01/17 11:17:58 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.69 2007/01/30 15:10:59 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

@@ -20,7 +20,7 @@
Philip Hazel

Lists created: 20 November 2002
-Last updated: 17 January 2007
+Last updated: 30 January 2007


   THE OLD LIST
  @@ -166,6 +166,8 @@
                             Patch for arbitrarily named ACL variables
   Magnus Holmgren           Patch for filter_prepend_home
                             Patch for "h" flag in Domain Keys
  +                          Patch for $sending_ip_address/$sending_port
  +                          Lots of other support
   Kjetil Torgrim Homme      Patch for require_files problem on NFS file systems
   Tom Hughes                Suggested patch for $n bug in pipe command from filter
   Pierre Humblet            Continued Cygwin support


  Index: exim.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/exim.c,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- exim.c    25 Jan 2007 15:51:28 -0000    1.54
  +++ exim.c    30 Jan 2007 15:10:59 -0000    1.55
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/exim.c,v 1.54 2007/01/25 15:51:28 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/exim.c,v 1.55 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -2165,6 +2165,9 @@


       if (Ustrcmp(argrest, "C") == 0)
         {
  +      union sockaddr_46 interface_sock;
  +      EXIM_SOCKLEN_T size = sizeof(interface_sock);
  +
         if (argc != i + 6)
           {
           fprintf(stderr, "exim: too many or too few arguments after -MC\n");
  @@ -2191,6 +2194,19 @@
           {
           fprintf(stderr, "exim: malformed message id %s after -MC option\n",
             argv[i]);
  +        return EXIT_FAILURE;
  +        }
  +
  +      /* Set up $sending_ip_address and $sending_port */
  +
  +      if (getsockname(fileno(stdin), (struct sockaddr *)(&interface_sock),
  +          &size) == 0)
  +        sending_ip_address = host_ntoa(-1, &interface_sock, NULL,
  +          &sending_port);
  +      else
  +        {
  +        fprintf(stderr, "exim: getsockname() failed after -MC option: %s\n",
  +          strerror(errno));
           return EXIT_FAILURE;
           }



  Index: expand.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/expand.c,v
  retrieving revision 1.77
  retrieving revision 1.78
  diff -u -r1.77 -r1.78
  --- expand.c    23 Jan 2007 14:34:02 -0000    1.77
  +++ expand.c    30 Jan 2007 15:10:59 -0000    1.78
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/expand.c,v 1.77 2007/01/23 14:34:02 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/expand.c,v 1.78 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -525,6 +525,8 @@
     { "sender_rate_period",  vtype_stringptr,   &sender_rate_period },
     { "sender_rcvhost",      vtype_stringptr,   &sender_rcvhost },
     { "sender_verify_failure",vtype_stringptr,  &sender_verify_failure },
  +  { "sending_ip_address",  vtype_stringptr,   &sending_ip_address },
  +  { "sending_port",        vtype_int,         &sending_port },
     { "smtp_active_hostname", vtype_stringptr,  &smtp_active_hostname },
     { "smtp_command",        vtype_stringptr,   &smtp_cmd_buffer },
     { "smtp_command_argument", vtype_stringptr, &smtp_cmd_argument },


  Index: globals.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.c,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- globals.c    30 Jan 2007 11:45:20 -0000    1.65
  +++ globals.c    30 Jan 2007 15:10:59 -0000    1.66
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.c,v 1.65 2007/01/30 11:45:20 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.c,v 1.66 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -1031,6 +1031,8 @@
   address_item *sender_verified_failed = NULL;
   int     sender_verified_rc     = -1;
   BOOL    sender_verified_responded = FALSE;
  +uschar *sending_ip_address     = NULL;
  +int     sending_port           = -1;
   volatile  BOOL sigalrm_seen    = FALSE;
   uschar **sighup_argv           = NULL;
   int     smtp_accept_count      = 0;


  Index: globals.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/globals.h,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- globals.h    30 Jan 2007 11:45:20 -0000    1.46
  +++ globals.h    30 Jan 2007 15:10:59 -0000    1.47
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/globals.h,v 1.46 2007/01/30 11:45:20 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/globals.h,v 1.47 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -619,6 +619,8 @@
   extern uschar *sender_verify_failure;  /* What went wrong */
   extern address_item *sender_verified_list; /* Saved chain of sender verifies */
   extern address_item *sender_verified_failed; /* The one that caused denial */
  +extern uschar *sending_ip_address;     /* Address of outgoing (SMTP) interface */
  +extern int     sending_port;           /* Port of outgoing interface */
   extern volatile BOOL sigalrm_seen;     /* Flag for sigalrm_handler */
   extern uschar **sighup_argv;           /* Args for re-execing after SIGHUP */
   extern int     smtp_accept_count;      /* Count of connections */


  Index: smtp_out.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/smtp_out.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- smtp_out.c    8 Jan 2007 10:50:18 -0000    1.8
  +++ smtp_out.c    30 Jan 2007 15:10:59 -0000    1.9
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/smtp_out.c,v 1.8 2007/01/08 10:50:18 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/smtp_out.c,v 1.9 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -241,7 +241,18 @@


   else
     {
  +  union sockaddr_46 interface_sock;
  +  EXIM_SOCKLEN_T size = sizeof(interface_sock);
     HDEBUG(D_transport|D_acl|D_v) debug_printf("connected\n");
  +  if (getsockname(sock, (struct sockaddr *)(&interface_sock), &size) == 0)
  +    sending_ip_address = host_ntoa(-1, &interface_sock, NULL, &sending_port);
  +  else
  +    {
  +    log_write(0, LOG_MAIN | ((errno == ECONNRESET)? 0 : LOG_PANIC),
  +      "getsockname() failed: %s", strerror(errno));
  +    close(sock);
  +    return -1;
  +    }
     if (keepalive) ip_keepalive(sock, host->address, TRUE);
     return sock;
     }


  Index: verify.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/verify.c,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- verify.c    17 Jan 2007 11:17:58 -0000    1.46
  +++ verify.c    30 Jan 2007 15:10:59 -0000    1.47
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/verify.c,v 1.46 2007/01/17 11:17:58 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/verify.c,v 1.47 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -442,21 +442,6 @@
       log_write(0, LOG_MAIN|LOG_PANIC, "<%s>: %s", addr->address,
         addr->message);


  -  /* Expand the helo_data string to find the host name to use. */
  -
  -  if (tf->helo_data != NULL)
  -    {
  -    uschar *s = expand_string(tf->helo_data);
  -    if (s == NULL)
  -      log_write(0, LOG_MAIN|LOG_PANIC, "<%s>: failed to expand transport's "
  -        "helo_data value for callout: %s", addr->address,
  -        expand_string_message);
  -    else active_hostname = s;
  -    }
  -
  -  deliver_host = deliver_host_address = NULL;
  -  deliver_domain = save_deliver_domain;
  -
     /* Set HELO string according to the protocol */


     if (Ustrcmp(tf->protocol, "lmtp") == 0) helo = US"LHLO";
  @@ -487,8 +472,25 @@
       {
       addr->message = string_sprintf("could not connect to %s [%s]: %s",
           host->name, host->address, strerror(errno));
  +    deliver_host = deliver_host_address = NULL;
  +    deliver_domain = save_deliver_domain;
       continue;
       }
  +
  +  /* Expand the helo_data string to find the host name to use. */
  +
  +  if (tf->helo_data != NULL)
  +    {
  +    uschar *s = expand_string(tf->helo_data);
  +    if (s == NULL)
  +      log_write(0, LOG_MAIN|LOG_PANIC, "<%s>: failed to expand transport's "
  +        "helo_data value for callout: %s", addr->address,
  +        expand_string_message);
  +    else active_hostname = s;
  +    }
  +
  +  deliver_host = deliver_host_address = NULL;
  +  deliver_domain = save_deliver_domain;


     /* Wait for initial response, and send HELO. The smtp_write_command()
     function leaves its command in big_buffer. This is used in error responses.


  Index: smtp.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- smtp.c    22 Jan 2007 16:29:55 -0000    1.32
  +++ smtp.c    30 Jan 2007 15:10:59 -0000    1.33
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.32 2007/01/22 16:29:55 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.33 2007/01/30 15:10:59 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -848,7 +848,7 @@
   int max_rcpt = tblock->max_addresses;
   uschar *igquotstr = US"";
   uschar *local_authenticated_sender = authenticated_sender;
  -uschar *helo_data;
  +uschar *helo_data = NULL;
   uschar *message = NULL;
   uschar new_message_id[MESSAGE_ID_LENGTH + 1];
   uschar *p;
  @@ -877,17 +877,6 @@
   outblock.cmd_count = 0;
   outblock.authenticating = FALSE;


  -/* Expand the greeting message */
  -
  -helo_data = expand_string(ob->helo_data);
  -if (helo_data == NULL)
  -  {
  -  uschar *message = string_sprintf("failed to expand helo_data: %s",
  -    expand_string_message);
  -  set_errno(addrlist, 0, message, DEFER, FALSE);
  -  return ERROR;
  -  }
  -
   /* If an authenticated_sender override has been specified for this transport
   instance, expand it. If the expansion is forced to fail, and there was already
   an authenticated_sender for this message, the original value will be used.
  @@ -927,6 +916,12 @@
       return DEFER;
       }


  +  /* Expand the greeting message while waiting for the initial response. (Makes
  +  sense if helo_data contains ${lookup dnsdb ...} stuff). The expansion is
  +  delayed till here so that $sending_interface and $sending_port are set. */
  +
  +  helo_data = expand_string(ob->helo_data);
  +
     /* The first thing is to wait for an initial OK response. The dreaded "goto"
     is nevertheless a reasonably clean way of programming this kind of logic,
     where you want to escape on any error. */
  @@ -934,6 +929,18 @@
     if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
       ob->command_timeout)) goto RESPONSE_FAILED;


  +  /* Now check if the helo_data expansion went well, and sign off cleanly if it
  +  didn't. */
  +
  +  if (helo_data == NULL)
  +    {
  +    uschar *message = string_sprintf("failed to expand helo_data: %s",
  +      expand_string_message);
  +    set_errno(addrlist, 0, message, DEFER, FALSE);
  +    yield = DEFER;
  +    goto SEND_QUIT;
  +    }
  +
   /** Debugging without sending a message
   addrlist->transport_return = DEFER;
   goto SEND_QUIT;
  @@ -1103,10 +1110,27 @@
       }
     }


-/* If we started TLS, redo the EHLO/LHLO exchange over the secure channel. */
+/* If we started TLS, redo the EHLO/LHLO exchange over the secure channel. If
+helo_data is null, we are dealing with a connection that was passed from
+another process, and so we won't have expanded helo_data above. We have to
+expand it here. $sending_ip_address and $sending_port are set up right at the
+start of the Exim process (in exim.c). */

   if (tls_active >= 0)
     {
  +  if (helo_data == NULL)
  +    {
  +    helo_data = expand_string(ob->helo_data);
  +    if (helo_data == NULL)
  +      {
  +      uschar *message = string_sprintf("failed to expand helo_data: %s",
  +        expand_string_message);
  +      set_errno(addrlist, 0, message, DEFER, FALSE);
  +      yield = DEFER;
  +      goto SEND_QUIT;
  +      }
  +    }
  +
     if (smtp_write_command(&outblock, FALSE, "%s %s\r\n", lmtp? "LHLO" : "EHLO",
           helo_data) < 0)
       goto SEND_FAILED;


Index: 0550
====================================================================
# Exim test configuration 0550

exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/%slog
gecos_pattern = ""
gecos_name = CALLER_NAME

# ----- Main settings -----


# ----- Routers -----

begin routers

  r1:
    driver = accept
    transport = t1



# ----- Transports -----

begin transports

  t1:
    driver = smtp
    hosts = 127.0.0.1 : HOSTIPV4
    port = PORT_S
    allow_localhost
    helo_data = \
      ${if eq{$sending_ip_address}{127.0.0.1}{Tweedledum}{Tweedledee}} \
      to $host [$host_address]



# ------ Retry ------

begin retry

* * F,1d,1d

# End

Index: 0550
====================================================================
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 SMTP error from remote mail server after MAIL FROM:<CALLER@???>: host 127.0.0.1 [127.0.0.1]: 450 Defer
1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@??? R=r1 T=t1 defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@???>: host ipv4.ipv4.ipv4.ipv4 [ipv4.ipv4.ipv4.ipv4]: 450 Defer

Index: 0550
====================================================================
# $sending_ip_address
need_ipv4
#
server PORT_S 2
220 ESMTP
EHLO
250-OK
250 HELP
MAIL FROM
450 Defer
QUIT
221 OK
*EOF
220 ESMTP
EHLO
250-OK
250 HELP
MAIL FROM
450 Defer
QUIT
221 OK
****
exim -odi userx@???
****
no_msglog_check

  Index: 2013
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/scripts/2000-GnuTLS/2013,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 2013    7 Feb 2006 10:54:47 -0000    1.1
  +++ 2013    30 Jan 2007 15:10:59 -0000    1.2
  @@ -8,7 +8,7 @@
   exim userx@???
   Test message 2
   ****
  -exim -qqf
  +exim -qqf -d-all+acl
   ****
   killdaemon
   exim -DSERVER=server -DNOTDAEMON -qf


  Index: 2113
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/scripts/2100-OpenSSL/2113,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 2113    7 Feb 2006 10:54:47 -0000    1.1
  +++ 2113    30 Jan 2007 15:10:59 -0000    1.2
  @@ -7,7 +7,7 @@
   exim userx@???
   Test message 2
   ****
  -exim -qqf
  +exim -qqf -d-all+acl
   ****
   killdaemon
   exim -DSERVER=server -DNOTDAEMON -qf


  Index: 2013
  ====================================================================
  Exim version x.yz ....
  configuration file is TESTSUITE/test-config
  admin user
  LOG: queue_run MAIN
    Start queue run: pid=pppp -qqf
  Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
    SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250-STARTTLS
           250 HELP
    SMTP>> STARTTLS
    SMTP<< 220 TLS go ahead
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250 HELP
    SMTP>> MAIL FROM:<CALLER@???> SIZE=ssss
    SMTP>> RCPT TO:<userx@???>
    SMTP>> DATA
    SMTP<< 250 OK
    SMTP<< 250 Accepted
    SMTP<< 354 Enter message, ending with "." on a line by itself
    SMTP<< 250 OK id=10HmaZ-0005vi-00
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250-STARTTLS
           250 HELP
  LOG: MAIN
    => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLS-1.0:RSA_AES_256_CBC_SHA1:32 DN="C=UK,L=Cambridge,O=University of Cambridge,OU=Computing Service,CN=Philip Hazel"
  LOG: MAIN
    Completed
  Exim version x.yz ....
  configuration file is TESTSUITE/test-config
  trusted user
  admin user
    SMTP>> STARTTLS
    SMTP<< 220 TLS go ahead
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250 HELP
    SMTP>> MAIL FROM:<CALLER@???> SIZE=ssss
    SMTP>> RCPT TO:<userx@???>
    SMTP>> DATA
    SMTP<< 250 OK
    SMTP<< 250 Accepted
    SMTP<< 354 Enter message, ending with "." on a line by itself
    SMTP<< 250 OK id=10HmbA-0005vi-00
    SMTP>> QUIT
  LOG: MAIN
    => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS-1.0:RSA_AES_256_CBC_SHA1:32 DN="C=UK,L=Cambridge,O=University of Cambridge,OU=Computing Service,CN=Philip Hazel"
  LOG: MAIN
    Completed

>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>

  LOG: queue_run MAIN
    End queue run: pid=pppp -qqf

>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>


******** SERVER ********

  Index: 2113
  ====================================================================
  Exim version x.yz ....
  configuration file is TESTSUITE/test-config
  admin user
  LOG: queue_run MAIN
    Start queue run: pid=pppp -qqf
  Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
    SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250-STARTTLS
           250 HELP
    SMTP>> STARTTLS
    SMTP<< 220 TLS go ahead
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250 HELP
    SMTP>> MAIL FROM:<CALLER@???> SIZE=ssss
    SMTP>> RCPT TO:<userx@???>
    SMTP>> DATA
    SMTP<< 250 OK
    SMTP<< 250 Accepted
    SMTP<< 354 Enter message, ending with "." on a line by itself
    SMTP<< 250 OK id=10HmaZ-0005vi-00
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250-STARTTLS
           250 HELP
  LOG: MAIN
    => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 DN="/C=UK/L=Cambridge/O=University of Cambridge/OU=Computing Service/CN=Philip Hazel"
  LOG: MAIN
    Completed
  Exim version x.yz ....
  configuration file is TESTSUITE/test-config
  trusted user
  admin user
    SMTP>> STARTTLS
    SMTP<< 220 TLS go ahead
    SMTP>> EHLO myhost.test.ex
    SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
           250-SIZE 52428800
           250-PIPELINING
           250 HELP
    SMTP>> MAIL FROM:<CALLER@???> SIZE=ssss
    SMTP>> RCPT TO:<userx@???>
    SMTP>> DATA
    SMTP<< 250 OK
    SMTP<< 250 Accepted
    SMTP<< 354 Enter message, ending with "." on a line by itself
    SMTP<< 250 OK id=10HmbA-0005vi-00
    SMTP>> QUIT
  LOG: MAIN
    => userx@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 DN="/C=UK/L=Cambridge/O=University of Cambridge/OU=Computing Service/CN=Philip Hazel"
  LOG: MAIN
    Completed

>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>

  LOG: queue_run MAIN
    End queue run: pid=pppp -qqf

>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>


******** SERVER ********

Index: 0550
====================================================================

******** SERVER ********
Listening on port 1224 ...
Connection request from [127.0.0.1]
220 ESMTP
EHLO Tweedledum to 127.0.0.1 [127.0.0.1]
250-OK
250 HELP
MAIL FROM:<CALLER@???>
450 Defer
QUIT
221 OK
Unexpected EOF read from client
Listening on port 1224 ...
Connection request from [ip4.ip4.ip4.ip4]
220 ESMTP
EHLO Tweedledee to ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4]
250-OK
250 HELP
MAIL FROM:<CALLER@???>
450 Defer
QUIT
221 OK
End of script