[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 OptionLists.txt exim/exim-src/src deliver.c exim/exim-src/src/transports smtp.c smtp.h exim/exim-test/confs 0247 0388 exim/exim-test/l
ph10 2006/11/06 15:50:12 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff OptionLists.txt 
    exim-src/src         deliver.c 
    exim-src/src/transports smtp.c smtp.h 
    exim-test/confs      0247 0388 
    exim-test/log        0357 
    exim-test/scripts/0000-Basic 0357 
    exim-test/stderr     0357 0358 0388 5005 
    exim-test/stdout     0357 0358 0474 0497 
  Log:
  Include sender address in retry key for 4xx errors.


  Revision  Changes    Path
  1.425     +11 -0     exim/exim-doc/doc-txt/ChangeLog
  1.120     +9 -0      exim/exim-doc/doc-txt/NewStuff
  1.27      +1 -0      exim/exim-doc/doc-txt/OptionLists.txt
  1.38      +16 -4     exim/exim-src/src/deliver.c
  1.29      +35 -21    exim/exim-src/src/transports/smtp.c
  1.9       +1 -0      exim/exim-src/src/transports/smtp.h
  1.2       +0 -1      exim/exim-test/confs/0247
  1.2       +1 -0      exim/exim-test/confs/0388
  1.2       +3 -0      exim/exim-test/log/0357
  1.2       +2 -0      exim/exim-test/scripts/0000-Basic/0357
  1.5       +45 -16    exim/exim-test/stderr/0357
  1.5       +21 -19    exim/exim-test/stderr/0358
  1.7       +1 -0      exim/exim-test/stderr/0388
  1.6       +1 -0      exim/exim-test/stderr/5005
  1.2       +3 -3      exim/exim-test/stdout/0357
  1.2       +4 -4      exim/exim-test/stdout/0358
  1.2       +1 -1      exim/exim-test/stdout/0474
  1.3       +1 -1      exim/exim-test/stdout/0497


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.424
  retrieving revision 1.425
  diff -u -r1.424 -r1.425
  --- ChangeLog    6 Nov 2006 11:27:54 -0000    1.424
  +++ ChangeLog    6 Nov 2006 15:50:12 -0000    1.425
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.424 2006/11/06 11:27:54 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.425 2006/11/06 15:50:12 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -235,6 +235,17 @@
         panic-worthy as it just means the connection died rather early on. I have
         removed the panic log writing for the ECONNRESET error when getsockname()
         fails.
  +
  +PH/36 After a 4xx response to a RCPT error, that address was delayed (in queue
  +      runs only) independently of the message's sender address. This meant
  +      that, if the 4xx error was in fact related to the sender, a different
  +      message to the same recipient with a different sender could confuse
  +      things. In particualar, this can happen when sending to a greylisting
  +      server, but other circumstances could also provoke similar problems.
  +      I have changed the default so that the retry time for these errors is now
  +      based a combination of the sender and recipient addresses. This change
  +      can be overridden by setting address_retry_include_sender=false in the
  +      smtp transport.



Exim version 4.63

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.119
  retrieving revision 1.120
  diff -u -r1.119 -r1.120
  --- NewStuff    24 Oct 2006 12:56:06 -0000    1.119
  +++ NewStuff    6 Nov 2006 15:50:12 -0000    1.120
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.119 2006/10/24 12:56:06 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.120 2006/11/06 15:50:12 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -153,6 +153,15 @@
      $recipients variable. Note that recipients cannot be given on the command
      line, because further arguments are taken as strings to expand (just like
      -be).
  +
  +9. When an address is delayed because of a 4xx response to a RCPT command, it
  +   is now the combination of sender and recipient that is delayed in subsequent
  +   queue runs until its retry time is reached. You can revert to the previous
  +   behavious, that is, delay the recipient independent of the sender, by
  +   setting address_retry_include_sender=false in the smtp transport. However,
  +   this can lead to problems with servers that regularly issue 4xx responses to
  +   RCPT commands.
  +



Version 4.63

  Index: OptionLists.txt
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- OptionLists.txt    24 Oct 2006 12:56:06 -0000    1.26
  +++ OptionLists.txt    6 Nov 2006 15:50:12 -0000    1.27
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.26 2006/10/24 12:56:06 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.27 2006/11/06 15:50:12 ph10 Exp $


   LISTS OF EXIM OPTIONS
   ---------------------
  @@ -68,6 +68,7 @@
   acl_smtp_starttls                    string*         unset         main              4.11
   acl_smtp_vrfy                        string*         unset         main              4.00
   address_data                         string*         unset         routers           4.00
  +address_retry_include_sender         boolean         true          smtp              4.64
   address_test                         boolean         true          routers           4.14
   admin_groups                         string list     unset         main              3.02
   allow_domain_literals                boolean         false         main              4.00 replacing forbid_domain_literals


  Index: deliver.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/deliver.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- deliver.c    30 Oct 2006 16:41:04 -0000    1.37
  +++ deliver.c    6 Nov 2006 15:50:12 -0000    1.38
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/deliver.c,v 1.37 2006/10/30 16:41:04 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/deliver.c,v 1.38 2006/11/06 15:50:12 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -5452,8 +5452,10 @@
         }


       /* Get the routing retry status, saving the two retry keys (with and
  -    without the local part) for subsequent use. Ignore retry records that
  -    are too old. */
  +    without the local part) for subsequent use. If there is no retry record for
  +    the standard address routing retry key, we look for the same key with the
  +    sender attached, because this form is used by the smtp transport after a
  +    4xx response to RCPT when address_retry_include_sender is true. */


       addr->domain_retry_key = string_sprintf("R:%s", addr->domain);
       addr->address_retry_key = string_sprintf("R:%s@%s", addr->local_part,
  @@ -5466,12 +5468,22 @@
         domain_retry_record = dbfn_read(dbm_file, addr->domain_retry_key);
         if (domain_retry_record != NULL &&
             now - domain_retry_record->time_stamp > retry_data_expire)
  -        domain_retry_record = NULL;
  +        domain_retry_record = NULL;    /* Ignore if too old */


         address_retry_record = dbfn_read(dbm_file, addr->address_retry_key);
         if (address_retry_record != NULL &&
             now - address_retry_record->time_stamp > retry_data_expire)
  -        address_retry_record = NULL;
  +        address_retry_record = NULL;   /* Ignore if too old */
  +
  +      if (address_retry_record == NULL)
  +        {
  +        uschar * altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
  +          sender_address);
  +        address_retry_record = dbfn_read(dbm_file, altkey);
  +        if (address_retry_record != NULL &&
  +            now - address_retry_record->time_stamp > retry_data_expire)
  +          address_retry_record = NULL;   /* Ignore if too old */
  +        }
         }


       DEBUG(D_deliver|D_retry)


  Index: smtp.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- smtp.c    30 Oct 2006 16:41:04 -0000    1.28
  +++ smtp.c    6 Nov 2006 15:50:12 -0000    1.29
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.28 2006/10/30 16:41:04 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.29 2006/11/06 15:50:12 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -21,6 +21,8 @@
   to be publicly visible; these are flagged with opt_public. */


   optionlist smtp_transport_options[] = {
  +  { "address_retry_include_sender", opt_bool,
  +      (void *)offsetof(smtp_transport_options_block, address_retry_include_sender) },
     { "allow_localhost",      opt_bool,
         (void *)offsetof(smtp_transport_options_block, allow_localhost) },
     { "authenticated_sender", opt_stringptr,
  @@ -159,6 +161,7 @@
     1024,                /* size_addition */
     5,                   /* hosts_max_try */
     50,                  /* hosts_max_try_hardlimit */
  +  TRUE,                /* address_retry_include_sender */
     FALSE,               /* allow_localhost */
     FALSE,               /* authenticated_sender_force */
     FALSE,               /* gethostbyname */
  @@ -555,19 +558,21 @@
   converted to OK at the end.


   Arguments:
  -  addrlist         the complete address list
  -  include_affixes  TRUE if affixes include in RCPT
  -  sync_addr        ptr to the ptr of the one to start scanning at (updated)
  -  host             the host we are connected to
  -  count            the number of responses to read
  -  pending_MAIL     true if the first response is for MAIL
  -  pending_DATA     0 if last command sent was not DATA
  -                  +1 if previously had a good recipient
  -                  -1 if not previously had a good recipient
  -  inblock          incoming SMTP block
  -  timeout          timeout value
  -  buffer           buffer for reading response
  -  buffsize         size of buffer
  +  addrlist          the complete address list
  +  include_affixes   TRUE if affixes include in RCPT
  +  sync_addr         ptr to the ptr of the one to start scanning at (updated)
  +  host              the host we are connected to
  +  count             the number of responses to read
  +  address_retry_
  +    include_sender  true if 4xx retry is to include the sender it its key
  +  pending_MAIL      true if the first response is for MAIL
  +  pending_DATA      0 if last command sent was not DATA
  +                   +1 if previously had a good recipient
  +                   -1 if not previously had a good recipient
  +  inblock           incoming SMTP block
  +  timeout           timeout value
  +  buffer            buffer for reading response
  +  buffsize          size of buffer


   Returns:      3 if at least one address had 2xx and one had 5xx
                 2 if at least one address had 5xx but none had 2xx
  @@ -580,7 +585,8 @@


   static int
   sync_responses(address_item *addrlist, BOOL include_affixes,
  -  address_item **sync_addr, host_item *host, int count, BOOL pending_MAIL,
  +  address_item **sync_addr, host_item *host, int count,
  +  BOOL address_retry_include_sender, BOOL pending_MAIL,
     int pending_DATA, smtp_inblock *inblock, int timeout, uschar *buffer,
     int buffsize)
   {
  @@ -705,10 +711,17 @@


         update_waiting = FALSE;


  -      /* Add a retry item for the address so that it doesn't get tried
  -      again too soon. */
  +      /* Add a retry item for the address so that it doesn't get tried again
  +      too soon. If address_retry_include_sender is true, add the sender address
  +      to the retry key. */


  -      retry_add_item(addr, addr->address_retry_key, 0);
  +      if (address_retry_include_sender)
  +        {
  +        uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
  +          sender_address);
  +        retry_add_item(addr, altkey, 0);
  +        }
  +      else retry_add_item(addr, addr->address_retry_key, 0);
         }
       }
     }       /* Loop for next RCPT response */
  @@ -1404,8 +1417,9 @@
     if (count > 0)
       {
       switch(sync_responses(first_addr, tblock->rcpt_include_affixes,
  -             &sync_addr, host, count, pending_MAIL, 0, &inblock,
  -             ob->command_timeout, buffer, sizeof(buffer)))
  +             &sync_addr, host, count, ob->address_retry_include_sender,
  +             pending_MAIL, 0, &inblock, ob->command_timeout, buffer,
  +             sizeof(buffer)))
         {
         case 3: ok = TRUE;                   /* 2xx & 5xx => OK & progress made */
         case 2: completed_address = TRUE;    /* 5xx (only) => progress made */
  @@ -1453,8 +1467,8 @@
     int count = smtp_write_command(&outblock, FALSE, "DATA\r\n");
     if (count < 0) goto SEND_FAILED;
     switch(sync_responses(first_addr, tblock->rcpt_include_affixes, &sync_addr,
  -           host, count, pending_MAIL, ok? +1 : -1, &inblock,
  -           ob->command_timeout, buffer, sizeof(buffer)))
  +           host, count, ob->address_retry_include_sender, pending_MAIL,
  +           ok? +1 : -1, &inblock, ob->command_timeout, buffer, sizeof(buffer)))
       {
       case 3: ok = TRUE;                   /* 2xx & 5xx => OK & progress made */
       case 2: completed_address = TRUE;    /* 5xx (only) => progress made */


  Index: smtp.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/transports/smtp.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- smtp.h    28 Feb 2006 12:42:47 -0000    1.8
  +++ smtp.h    6 Nov 2006 15:50:12 -0000    1.9
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.8 2006/02/28 12:42:47 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.9 2006/11/06 15:50:12 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -33,6 +33,7 @@
     int     size_addition;
     int     hosts_max_try;
     int     hosts_max_try_hardlimit;
  +  BOOL    address_retry_include_sender;
     BOOL    allow_localhost;
     BOOL    authenticated_sender_force;
     BOOL    gethostbyname;


  Index: 0247
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/confs/0247,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0247    7 Feb 2006 10:34:25 -0000    1.1
  +++ 0247    6 Nov 2006 15:50:12 -0000    1.2
  @@ -11,7 +11,6 @@


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

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

begin routers

  Index: 0388
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/confs/0388,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0388    7 Feb 2006 10:34:26 -0000    1.1
  +++ 0388    6 Nov 2006 15:50:12 -0000    1.2
  @@ -37,6 +37,7 @@
     hosts_max_try = 1
     port = PORT_S
     connect_timeout = 2s
  +  address_retry_include_sender = false


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


  Index: 0357
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/log/0357,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0357    7 Feb 2006 10:34:46 -0000    1.1
  +++ 0357    6 Nov 2006 15:50:12 -0000    1.2
  @@ -6,3 +6,6 @@
   1999-03-02 09:44:33 Start queue run: pid=pppp
   1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   1999-03-02 09:44:33 End queue run: pid=pppp
  +1999-03-02 09:44:33 Start queue run: pid=pppp
  +1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@??? routing defer (-51): retry time not reached
  +1999-03-02 09:44:33 End queue run: pid=pppp


  Index: 0357
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0357,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0357    7 Feb 2006 10:54:33 -0000    1.1
  +++ 0357    6 Nov 2006 15:50:12 -0000    1.2
  @@ -46,4 +46,6 @@
   exim -q -d-all+retry
   ****
   dump retry
  +exim -q -d-all+retry
  +****
   no_msglog_check


  Index: 0357
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/0357,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- 0357    30 Oct 2006 16:41:05 -0000    1.4
  +++ 0357    6 Nov 2006 15:50:12 -0000    1.5
  @@ -24,8 +24,8 @@
   checking status of 127.0.0.1
   locking TESTSUITE/spool/db/retry.lockfile
   no retry data available
  -added retry item for R:userx@???: errno=-44 more_errno=dd,A flags=0
  -reading retry information for R:userx@??? from subprocess
  +added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +reading retry information for R:userx@???:<CALLER@???> from subprocess
     added retry item
   LOG: MAIN
     == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  @@ -35,9 +35,9 @@
   Deferred addresses:
   userx@???
   locking TESTSUITE/spool/db/retry.lockfile
  -retry for R:userx@??? = * 0 0
  +retry for R:userx@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:userx@???
  +Writing retry data for R:userx@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+1 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   end of retry processing
  @@ -65,15 +65,15 @@
   locking TESTSUITE/spool/db/retry.lockfile
   no host retry record
   no message retry record
  -added retry item for R:userx@???: errno=-44 more_errno=dd,A flags=0
  -reading retry information for R:userx@??? from subprocess
  -  existing delete item dropped
  +added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +reading retry information for R:userx@???:<CALLER@???> from subprocess
     added retry item
   reading retry information for R:test.ex from subprocess
     existing delete item dropped
     added delete item
   reading retry information for R:userx@??? from subprocess
  -  delete item not added: non-delete item exists
  +  existing delete item dropped
  +  added delete item
   LOG: MAIN
     == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   Processing retry items
  @@ -82,10 +82,11 @@
   Deferred addresses:
   userx@???
   locking TESTSUITE/spool/db/retry.lockfile
  +deleted retry information for R:userx@???
   deleted retry information for R:test.ex
  -retry for R:userx@??? = * 0 0
  +retry for R:userx@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:userx@???
  +Writing retry data for R:userx@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+1 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   end of retry processing
  @@ -114,15 +115,15 @@
   locking TESTSUITE/spool/db/retry.lockfile
   no host retry record
   no message retry record
  -added retry item for R:userx@???: errno=-44 more_errno=dd,A flags=0
  -reading retry information for R:userx@??? from subprocess
  -  existing delete item dropped
  +added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +reading retry information for R:userx@???:<CALLER@???> from subprocess
     added retry item
   reading retry information for R:test.ex from subprocess
     existing delete item dropped
     added delete item
   reading retry information for R:userx@??? from subprocess
  -  delete item not added: non-delete item exists
  +  existing delete item dropped
  +  added delete item
   LOG: MAIN
     == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   Processing retry items
  @@ -131,12 +132,40 @@
   Deferred addresses:
   userx@???
   locking TESTSUITE/spool/db/retry.lockfile
  +deleted retry information for R:userx@???
   deleted retry information for R:test.ex
  -retry for R:userx@??? = * 0 0
  +retry for R:userx@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:userx@???
  +Writing retry data for R:userx@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+2 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +end of retry processing
  +LOG: queue_run MAIN
  +  End queue run: pid=pppp
  +>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
  +Exim version x.yz ....
  +configuration file is TESTSUITE/test-config
  +admin user
  +LOG: queue_run MAIN
  +  Start queue run: pid=pppp
  +locking TESTSUITE/spool/db/retry.lockfile
  +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  +Considering: userx@???
  +no domain retry record
  +LOG: retry_defer MAIN
  +  == userx@??? routing defer (-51): retry time not reached
  +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  +After routing:
  +  Local deliveries:
  +  Remote deliveries:
  +  Failed addresses:
  +  Deferred addresses:
  +    userx@???
  +Processing retry items
  +Succeeded addresses:
  +Failed addresses:
  +Deferred addresses:
  +userx@???: no retry items
   end of retry processing
   LOG: queue_run MAIN
     End queue run: pid=pppp


  Index: 0358
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/0358,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- 0358    30 Oct 2006 16:41:05 -0000    1.4
  +++ 0358    6 Nov 2006 15:50:12 -0000    1.5
  @@ -29,11 +29,11 @@
   checking status of 127.0.0.1
   locking TESTSUITE/spool/db/retry.lockfile
   no retry data available
  -added retry item for R:userx@???: errno=-44 more_errno=dd,A flags=0
  -added retry item for R:usery@???: errno=-44 more_errno=dd,A flags=0
  -reading retry information for R:userx@??? from subprocess
  +added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +added retry item for R:usery@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +reading retry information for R:userx@???:<CALLER@???> from subprocess
     added retry item
  -reading retry information for R:usery@??? from subprocess
  +reading retry information for R:usery@???:<CALLER@???> from subprocess
     added retry item
   LOG: MAIN
     == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  @@ -45,15 +45,15 @@
   Deferred addresses:
   usery@???
   locking TESTSUITE/spool/db/retry.lockfile
  -retry for R:usery@??? = * 0 0
  +retry for R:usery@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:usery@???
  +Writing retry data for R:usery@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+1 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   userx@???
  -retry for R:userx@??? = * 0 0
  +retry for R:userx@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:userx@???
  +Writing retry data for R:userx@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+1 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   end of retry processing
  @@ -87,24 +87,24 @@
   locking TESTSUITE/spool/db/retry.lockfile
   no host retry record
   no message retry record
  -added retry item for R:userx@???: errno=-44 more_errno=dd,A flags=0
  -added retry item for R:usery@???: errno=-44 more_errno=dd,A flags=0
  -reading retry information for R:userx@??? from subprocess
  -  existing delete item dropped
  +added retry item for R:userx@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +added retry item for R:usery@???:<CALLER@???>: errno=-44 more_errno=dd,A flags=0
  +reading retry information for R:userx@???:<CALLER@???> from subprocess
     added retry item
   reading retry information for R:test.ex from subprocess
     existing delete item dropped
     added delete item
   reading retry information for R:userx@??? from subprocess
  -  delete item not added: non-delete item exists
  -reading retry information for R:usery@??? from subprocess
     existing delete item dropped
  +  added delete item
  +reading retry information for R:usery@???:<CALLER@???> from subprocess
     added retry item
   reading retry information for R:test.ex from subprocess
     existing delete item dropped
     added delete item
   reading retry information for R:usery@??? from subprocess
  -  delete item not added: non-delete item exists
  +  existing delete item dropped
  +  added delete item
   LOG: MAIN
     == userx@??? R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   LOG: MAIN
  @@ -115,17 +115,19 @@
   Deferred addresses:
   usery@???
   locking TESTSUITE/spool/db/retry.lockfile
  +deleted retry information for R:usery@???
   deleted retry information for R:test.ex
  -retry for R:usery@??? = * 0 0
  +retry for R:usery@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:usery@???
  +Writing retry data for R:usery@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+2 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   userx@???
  +deleted retry information for R:userx@???
   deleted retry information for R:test.ex
  -retry for R:userx@??? = * 0 0
  +retry for R:userx@???:<CALLER@???> = * 0 0
   failing_interval=ttt message_age=ttt
  -Writing retry data for R:userx@???
  +Writing retry data for R:userx@???:<CALLER@???>
     first failed=dddd last try=dddd next try=+2 expired=0
     errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   end of retry processing


  Index: 0388
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/0388,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- 0388    30 Oct 2006 16:41:05 -0000    1.6
  +++ 0388    6 Nov 2006 15:50:12 -0000    1.7
  @@ -224,6 +224,7 @@
   unique = CALLER@???
   dbfn_read: key=R:myhost.test.ex
   dbfn_read: key=R:CALLER@???
  +dbfn_read: key=R:CALLER@???:<>
   no domain retry record
   no address retry record
   CALLER@???: queued for routing


  Index: 5005
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/5005,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- 5005    26 Jul 2006 14:39:14 -0000    1.5
  +++ 5005    6 Nov 2006 15:50:12 -0000    1.6
  @@ -583,6 +583,7 @@
   unique = userx@???
   dbfn_read: key=R:test.ex
   dbfn_read: key=R:userx@???
  +dbfn_read: key=R:userx@???:<CALLER@???>
   no domain retry record
   no address retry record
   userx@???: queued for routing


  Index: 0357
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/0357,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0357    7 Feb 2006 10:47:37 -0000    1.1
  +++ 0357    6 Nov 2006 15:50:12 -0000    1.2
  @@ -1,11 +1,11 @@
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:userx@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 1
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:userx@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 1
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:userx@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 2


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

  Index: 0358
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/0358,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0358    7 Feb 2006 10:47:37 -0000    1.1
  +++ 0358    6 Nov 2006 15:50:12 -0000    1.2
  @@ -1,12 +1,12 @@
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:userx@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 1
  -  R:usery@??? -44 13121 SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:usery@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 1
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:userx@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 2
  -  R:usery@??? -44 13121 SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
  +  R:usery@???:<CALLER@???> -44 13121 SMTP error from remote mail server after RCPT TO:<usery@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary error
   first failed = time last try = time2 next try = time2 + 2


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

  Index: 0474
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/0474,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0474    7 Feb 2006 10:47:37 -0000    1.1
  +++ 0474    6 Nov 2006 15:50:12 -0000    1.2
  @@ -5,7 +5,7 @@
     T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 0 65 SMTP error from remote mail server after MAIL FROM:<CALLER@???>: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH
   first failed = time last try = time2 next try = time2 + 10
   +++++++++++++++++++++++++++
  -  R:abcd@xyz -44 12865 SMTP error from remote mail server after RCPT TO:<abcd@xyz>: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH
  +  R:abcd@xyz:<CALLER@???> -44 12865 SMTP error from remote mail server after RCPT TO:<abcd@xyz>: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH
   first failed = time last try = time2 next try = time2 + 10


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

  Index: 0497
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/0497,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0497    9 Mar 2006 15:10:17 -0000    1.2
  +++ 0497    6 Nov 2006 15:50:12 -0000    1.3
  @@ -2,7 +2,7 @@
     T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 -45 13377 SMTP error from remote mail server after MAIL FROM:<CALLER@???>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
   first failed = time last try = time2 next try = time2 + 0 *
   +++++++++++++++++++++++++++
  -  R:userx@??? -44 13377 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
  +  R:userx@???:<CALLER@???> -44 13377 SMTP error from remote mail server after RCPT TO:<userx@???>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
   first failed = time last try = time2 next try = time2 + 0 *


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