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

Página Inicial
Delete this message
Reply to this message
Autor: Philip Hazel
Data:  
Para: exim-cvs
Assunto: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff OptionLists.txt exim/exim-src/src/transports smtp.c smtp.h exim/exim-test-orig/AutoTest/confs 002 600 exim/exim-test-orig/AutoTest/lo
ph10 2005/01/04 16:36:28 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff OptionLists.txt 
    exim-src/src/transports smtp.c smtp.h 
    exim-test-orig/AutoTest/confs 002 
    exim-test-orig/AutoTest/stdout 001 002 
  Added files:
    exim-test-orig/AutoTest/confs 600 
    exim-test-orig/AutoTest/log 600 
    exim-test-orig/AutoTest/scripts 600 
    exim-test-orig/AutoTest/stderr 600 
  Removed files:
    exim-test-orig/AutoTest/rejectlog 566 
  Log:
  Added the hosts_max_try_hardlimit option. (The removed file is left over
  from a previous update; I screwed up the CVS-ing.)


  Revision  Changes    Path
  1.64      +2 -0      exim/exim-doc/doc-txt/ChangeLog
  1.25      +8 -0      exim/exim-doc/doc-txt/NewStuff
  1.5       +1 -0      exim/exim-doc/doc-txt/OptionLists.txt
  1.4       +39 -16    exim/exim-src/src/transports/smtp.c
  1.3       +1 -0      exim/exim-src/src/transports/smtp.h
  1.4       +1 -0      exim/exim-test-orig/AutoTest/confs/002
  1.1       +50 -0     exim/exim-test-orig/AutoTest/confs/600 (new)
  1.1       +28 -0     exim/exim-test-orig/AutoTest/log/600 (new)
  1.2       +0 -2      exim/exim-test-orig/AutoTest/rejectlog/566 (dead)
  1.1       +22 -0     exim/exim-test-orig/AutoTest/scripts/600 (new)
  1.1       +164 -0    exim/exim-test-orig/AutoTest/stderr/600 (new)
  1.5       +1 -0      exim/exim-test-orig/AutoTest/stdout/001
  1.4       +1 -0      exim/exim-test-orig/AutoTest/stdout/002


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- ChangeLog    4 Jan 2005 13:31:41 -0000    1.63
  +++ ChangeLog    4 Jan 2005 16:36:27 -0000    1.64
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.63 2005/01/04 13:31:41 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.64 2005/01/04 16:36:27 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -289,6 +289,8 @@
       consequently, it could be overwritten for a subsequent message in the same
       SMTP connection. (Fix 4.40/11 dealt with the non-cache case, but overlooked
       the caching.)
  +
  +66. Added hosts_max_try_hardlimit to the smtp transport, default 50.



Exim version 4.43

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- NewStuff    29 Dec 2004 10:16:52 -0000    1.24
  +++ NewStuff    4 Jan 2005 16:36:27 -0000    1.25
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.24 2004/12/29 10:16:52 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.25 2005/01/04 16:36:27 ph10 Exp $


New Features in Exim
--------------------
@@ -246,6 +246,14 @@

         (2) The default for smtp_banner uses $smtp_active_hostname instead
             of $primary_hostname.
  +
  +22. The hosts_max_try_hardlimit option (default 50) is added to the smtp
  +    transport. Exim will never try more than this number of IP addresses; if it
  +    hits this limit and they are all timed out, the message is bounced, even
  +    though not all IP addresses may have been tried. Compare hosts_max_try,
  +    which is a "soft" limit, because Exim will exceed it when hosts time out.
  +    The new limit is a protection against lunatic DNS configurations with
  +    hundreds of IP addresses.



Version 4.43

  Index: OptionLists.txt
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- OptionLists.txt    10 Nov 2004 10:29:56 -0000    1.4
  +++ OptionLists.txt    4 Jan 2005 16:36:27 -0000    1.5
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.4 2004/11/10 10:29:56 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.5 2005/01/04 16:36:27 ph10 Exp $


   LISTS OF EXIM OPTIONS
   ---------------------
  @@ -247,6 +247,7 @@
   hosts_avoid_tls                      host list       unset         smtp              3.20
   hosts_connection_nolog               host list       unset         main              4.43
   hosts_max_try                        integer         5             smtp              3.20
  +hosts_max_try_hardlimit              integer         50            smtp              4.50
   hosts_nopass_tls                     host list       unset         smtp              4.00
   hosts_override                       boolean         false         smtp              2.11
   hosts_randomize                      boolean         false         manualroute       4.00


  Index: smtp.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- smtp.c    4 Jan 2005 10:00:45 -0000    1.3
  +++ smtp.c    4 Jan 2005 16:36:28 -0000    1.4
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.3 2005/01/04 10:00:45 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.4 2005/01/04 16:36:28 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -57,6 +57,8 @@
     #endif
     { "hosts_max_try",        opt_int,
         (void *)offsetof(smtp_transport_options_block, hosts_max_try) },
  +  { "hosts_max_try_hardlimit", opt_int,
  +      (void *)offsetof(smtp_transport_options_block, hosts_max_try_hardlimit) },
     #ifdef SUPPORT_TLS
     { "hosts_nopass_tls",     opt_stringptr,
         (void *)offsetof(smtp_transport_options_block, hosts_nopass_tls) },
  @@ -138,6 +140,7 @@
     10*60,               /* final timeout */
     1024,                /* size_addition */
     5,                   /* hosts_max_try */
  +  50,                  /* hosts_max_try_hardlimit */ 
     FALSE,               /* allow_localhost */
     FALSE,               /* gethostbyname */
     TRUE,                /* dns_qualify_single */
  @@ -1926,6 +1929,7 @@
   int hosts_retry = 0;
   int hosts_serial = 0;
   int hosts_total = 0;
  +int total_hosts_tried = 0; 
   address_item *addr;
   BOOL expired = TRUE;
   BOOL continuing = continue_hostname != NULL;
  @@ -2091,7 +2095,9 @@


   .  If there are any addresses whose status is still DEFER, carry on to the
      next host/IPaddress, unless we have tried the number of hosts given
  -   by hosts_max_try; otherwise return.
  +   by hosts_max_try or hosts_max_try_hardlimit; otherwise return. Note that
  +   there is some fancy logic for hosts_max_try that means its limit can be 
  +   overstepped in some circumstances. 


   If we get to the end of the list, all hosts have deferred at least one address,
   or not reached their retry times. If delay_after_cutoff is unset, it requests a
  @@ -2108,7 +2114,9 @@
     int unexpired_hosts_tried = 0;


     for (host = hostlist;
  -       host != NULL && unexpired_hosts_tried < ob->hosts_max_try;
  +       host != NULL && 
  +         unexpired_hosts_tried < ob->hosts_max_try &&
  +         total_hosts_tried < ob->hosts_max_try_hardlimit;
          host = nexthost)
       {
       int rc;
  @@ -2413,13 +2421,16 @@


       /* This is for real. If the host is expired, we don't count it for
       hosts_max_retry. This ensures that all hosts must expire before an address
  -    is timed out. Otherwise, if we are about to hit the hosts_max_retry limit,
  -    check to see if there is a subsequent hosts with a different MX value. If
  -    so, make that the next host, and don't count this one. This is a heuristic
  -    to make sure that different MXs do get tried. With a normal kind of retry
  -    rule, they would get tried anyway when the earlier hosts were delayed, but
  -    if the domain has a "retry every time" type of rule - as is often used for
  -    the the very large ISPs, that won't happen. */
  +    is timed out, unless hosts_max_try_hardlimit (which protects against 
  +    lunatic DNS configurations) is reached.
  +    
  +    If the host is not expired and we are about to hit the hosts_max_retry
  +    limit, check to see if there is a subsequent hosts with a different MX
  +    value. If so, make that the next host, and don't count this one. This is a
  +    heuristic to make sure that different MXs do get tried. With a normal kind
  +    of retry rule, they would get tried anyway when the earlier hosts were
  +    delayed, but if the domain has a "retry every time" type of rule - as is
  +    often used for the the very large ISPs, that won't happen. */


       else
         {
  @@ -2441,6 +2452,7 @@


         /* Attempt the delivery. */


  +      total_hosts_tried++;
         rc = smtp_deliver(addrlist, host, host_af, port, interface, tblock,
           expanded_hosts != NULL, &message_defer, FALSE);


  @@ -2606,7 +2618,7 @@
       maximum retry time for this host. This means we may try try all hosts,
       ignoring the limit, when messages have been around for some time. This is
       important because if we don't try all hosts, the address will never time
  -    out. */
  +    out. NOTE: this does not apply to hosts_max_try_hardlimit. */


       if ((rc == DEFER || some_deferred) && nexthost != NULL)
         {
  @@ -2671,15 +2683,26 @@
   for (addr = addrlist; addr != NULL; addr = addr->next)
     {
     /* If host is not NULL, it means that we stopped processing the host list
  -  because of hosts_max_try. This means we need to behave as if some hosts were
  -  skipped because their retry time had not come. Specifically, this prevents
  -  the address from timing out. */
  +  because of hosts_max_try or hosts_max_try_hardlimit. In the former case, this
  +  means we need to behave as if some hosts were skipped because their retry
  +  time had not come. Specifically, this prevents the address from timing out.
  +  However, if we have hit hosts_max_try_hardlimit, we want to behave as if all 
  +  hosts were tried. */


     if (host != NULL)
       {
  -    DEBUG(D_transport)
  -      debug_printf("hosts_max_try limit caused some hosts to be skipped\n");
  -    setflag(addr, af_retry_skipped);
  +    if (total_hosts_tried >= ob->hosts_max_try_hardlimit)
  +      {
  +      DEBUG(D_transport)
  +        debug_printf("hosts_max_try_hardlimit reached: behave as if all "
  +          "hosts were tried\n");
  +      }
  +    else
  +      {       
  +      DEBUG(D_transport)
  +        debug_printf("hosts_max_try limit caused some hosts to be skipped\n");
  +      setflag(addr, af_retry_skipped);
  +      } 
       }


     if (queue_smtp)    /* no deliveries attempted */


  Index: smtp.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/transports/smtp.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- smtp.h    4 Jan 2005 10:00:45 -0000    1.2
  +++ smtp.h    4 Jan 2005 16:36:28 -0000    1.3
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.2 2005/01/04 10:00:45 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.3 2005/01/04 16:36:28 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -32,6 +32,7 @@
     int     final_timeout;
     int     size_addition;
     int     hosts_max_try;
  +  int     hosts_max_try_hardlimit; 
     BOOL    allow_localhost;
     BOOL    gethostbyname;
     BOOL    dns_qualify_single;


Index: 600
====================================================================
# Exim test configuration 600

HARDLIMIT=

# Macros are set externally in order to get the path
# of the Exim that is being tested, and the directory
# in which the test data lives.

exim_path = EXIM_PATH
primary_hostname = myhost.test.ex
spool_directory = DIR/spool

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


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

begin routers

  r0:
    driver = redirect
    senders = :
    data = :blackhole:


  r1:
    driver = accept
    transport = t1



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

begin transports

  t1:
    driver = smtp
    hosts = 127.0.0.1 : 127.0.0.2 : 127.0.0.3 : 127.0.0.4
    port = 1225
    allow_localhost      
    hosts_max_try = 1
    HARDLIMIT 



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

begin retry


* * F,1s,1s

# End

  Index: 002
  ===================================================================
  RCS file: /home/cvs/exim/exim-test-orig/AutoTest/confs/002,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- 002    17 Dec 2004 14:52:44 -0000    1.3
  +++ 002    4 Jan 2005 16:36:28 -0000    1.4
  @@ -835,6 +835,7 @@
     hosts_avoid_tls = *
     hosts_avoid_esmtp = x.y.z 
     hosts_max_try = 10
  +  hosts_max_try_hardlimit = 20 
     hosts_override
     hosts_nopass_tls = * 
     hosts_randomize


Index: 600
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ph10@??? U=ph10 P=local S=267
1999-03-02 09:44:33 10HmaX-0005vi-00 127.0.0.1 [127.0.0.1]: Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 == ph10@??? R=r1 T=t1 defer (111): Connection refused
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 127.0.0.1 [127.0.0.1]: Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 127.0.0.2 [127.0.0.2]: Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 127.0.0.3 [127.0.0.3]: Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 127.0.0.4 [127.0.0.4]: Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 == ph10@??? R=r1 T=t1 defer (111): Connection refused
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph10@???: retry timeout exceeded
1999-03-02 09:44:33 10HmaY-0005vi-00 <= <> R=10HmaX-0005vi-00 U=exim P=local S=1098
1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: <ph10@???> R=r0
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
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 10HmaZ-0005vi-00 <= ph10@??? U=ph10 P=local S=267
1999-03-02 09:44:33 10HmaZ-0005vi-00 127.0.0.1 [127.0.0.1]: Connection refused
1999-03-02 09:44:33 10HmaZ-0005vi-00 == ph10@??? R=r1 T=t1 defer (111): Connection refused
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaZ-0005vi-00 127.0.0.1 [127.0.0.1]: Connection refused
1999-03-02 09:44:33 10HmaZ-0005vi-00 127.0.0.2 [127.0.0.2]: Connection refused
1999-03-02 09:44:33 10HmaZ-0005vi-00 == ph10@??? R=r1 T=t1 defer (111): Connection refused
1999-03-02 09:44:33 10HmaZ-0005vi-00 ** ph10@???: retry timeout exceeded
1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=exim P=local S=1098
1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: <ph10@???> R=r0
1999-03-02 09:44:33 10HmbA-0005vi-00 Completed
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qf

Index: 600
====================================================================
0 hosts_max_try_hardlimit
exim -odi ph10
****
0
sleep 2
****
0
exim -d-all+transport -qf
****
0
really rm spool/db/retry
****
0
exim -odi ph10
****
0
sleep 2
****
0
exim -d-all+transport -qf -DHARDLIMIT=hosts_max_try_hardlimit=2
****
no_msglog_check

  Index: 600
  ====================================================================
  Exim version x.yz uid=1169 gid=1169 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  admin user
  LOG: queue_run MAIN
    Start queue run: pid=pppp -qf

>>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>

  --------> ph10@??? <--------
  t1 transport entered
    ph10@???
  using the transport's hosts: 127.0.0.1 : 127.0.0.2 : 127.0.0.3 : 127.0.0.4
  getting address for 127.0.0.1
  checking status of 127.0.0.1
  no message retry record
  127.0.0.1 [127.0.0.1]:1111 status = usable
  delivering 10HmaX-0005vi-00 to 127.0.0.1 [127.0.0.1] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.1 [127.0.0.1]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.1 [127.0.0.1]: Connection refused
  added retry item for T:127.0.0.1:127.0.0.1:1225: errno=111 more_errno=0,A flags=2
  temporary delivery error(s) override hosts_max_try (message older than host's retry time)
  getting address for 127.0.0.2
  checking status of 127.0.0.2
  no host retry record
  no message retry record
  127.0.0.2 [127.0.0.2]:1111 status = usable
  delivering 10HmaX-0005vi-00 to 127.0.0.2 [127.0.0.2] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.2 [127.0.0.2]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.2 [127.0.0.2]: Connection refused
  added retry item for T:127.0.0.2:127.0.0.2:1225: errno=111 more_errno=0,A flags=2
  temporary delivery error(s) override hosts_max_try (message older than host's retry time)
  getting address for 127.0.0.3
  checking status of 127.0.0.3
  no host retry record
  no message retry record
  127.0.0.3 [127.0.0.3]:1111 status = usable
  delivering 10HmaX-0005vi-00 to 127.0.0.3 [127.0.0.3] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.3 [127.0.0.3]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.3 [127.0.0.3]: Connection refused
  added retry item for T:127.0.0.3:127.0.0.3:1225: errno=111 more_errno=0,A flags=2
  temporary delivery error(s) override hosts_max_try (message older than host's retry time)
  getting address for 127.0.0.4
  checking status of 127.0.0.4
  no host retry record
  no message retry record
  127.0.0.4 [127.0.0.4]:1111 status = usable
  delivering 10HmaX-0005vi-00 to 127.0.0.4 [127.0.0.4] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.4 [127.0.0.4]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.4 [127.0.0.4]: Connection refused
  added retry item for T:127.0.0.4:127.0.0.4:1225: errno=111 more_errno=0,A flags=2
  all IP addresses skipped or deferred at least one address
  Leaving t1 transport
  LOG: MAIN
    == ph10@??? R=r1 T=t1 defer (111): Connection refused
  LOG: MAIN
    ** ph10@???: retry timeout exceeded
  writing data block fd=9 size=302 timeout=0
  Exim version x.yz uid=42 gid=42 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  trusted user
  admin user
  LOG: MAIN
    <= <> R=10HmaX-0005vi-00 U=exim P=local S=1098

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

  Exim version x.yz uid=42 gid=42 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  trusted user
  admin user
  LOG: MAIN
    => :blackhole: <ph10@???> R=r0
  LOG: MAIN
    Completed

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

  LOG: MAIN
    Completed
  LOG: queue_run MAIN
    End queue run: pid=pppp -qf

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

  Exim version x.yz uid=1169 gid=1169 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  admin user
  LOG: queue_run MAIN
    Start queue run: pid=pppp -qf

>>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>

  --------> ph10@??? <--------
  t1 transport entered
    ph10@???
  using the transport's hosts: 127.0.0.1 : 127.0.0.2 : 127.0.0.3 : 127.0.0.4
  getting address for 127.0.0.1
  checking status of 127.0.0.1
  no message retry record
  127.0.0.1 [127.0.0.1]:1111 status = usable
  delivering 10HmaZ-0005vi-00 to 127.0.0.1 [127.0.0.1] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.1 [127.0.0.1]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.1 [127.0.0.1]: Connection refused
  added retry item for T:127.0.0.1:127.0.0.1:1225: errno=111 more_errno=0,A flags=2
  temporary delivery error(s) override hosts_max_try (message older than host's retry time)
  getting address for 127.0.0.2
  checking status of 127.0.0.2
  no host retry record
  no message retry record
  127.0.0.2 [127.0.0.2]:1111 status = usable
  delivering 10HmaZ-0005vi-00 to 127.0.0.2 [127.0.0.2] (ph10@???)
  hosts_max_try limit reached with this host
  Connecting to 127.0.0.2 [127.0.0.2]:1225 ... failed: Connection refused
  LOG: MAIN
    127.0.0.2 [127.0.0.2]: Connection refused
  added retry item for T:127.0.0.2:127.0.0.2:1225: errno=111 more_errno=0,A flags=2
  temporary delivery error(s) override hosts_max_try (message older than host's retry time)
  all IP addresses skipped or deferred at least one address
  hosts_max_try_hardlimit reached: behave as if all hosts were tried
  Leaving t1 transport
  LOG: MAIN
    == ph10@??? R=r1 T=t1 defer (111): Connection refused
  LOG: MAIN
    ** ph10@???: retry timeout exceeded
  writing data block fd=9 size=302 timeout=0
  Exim version x.yz uid=42 gid=42 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  trusted user
  admin user
  LOG: MAIN
    <= <> R=10HmaZ-0005vi-00 U=exim P=local S=1098

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

  Exim version x.yz uid=42 gid=42 pid=pppp D=10000000
  Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
  Fixed never_users: 0
  configuration file is /source/exim4/AutoTest/confs/600
  log selectors = xxxxxxxx xxxxxxxx
  trusted user
  admin user
  LOG: MAIN
    => :blackhole: <ph10@???> R=r0
  LOG: MAIN
    Completed

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

  LOG: MAIN
    Completed
  LOG: queue_run MAIN
    End queue run: pid=pppp -qf

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


  Index: 001
  ===================================================================
  RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/001,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- 001    22 Dec 2004 12:05:46 -0000    1.4
  +++ 001    4 Jan 2005 16:36:28 -0000    1.5
  @@ -719,6 +719,7 @@
   hosts_avoid_esmtp = 
   hosts_avoid_tls = 
   hosts_max_try = 5
  +hosts_max_try_hardlimit = 50
   hosts_nopass_tls = 
   no_hosts_override
   no_hosts_randomize


  Index: 002
  ===================================================================
  RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/002,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- 002    17 Dec 2004 14:52:44 -0000    1.3
  +++ 002    4 Jan 2005 16:36:28 -0000    1.4
  @@ -1312,6 +1312,7 @@
   hosts_avoid_esmtp = x.y.z
   hosts_avoid_tls = *
   hosts_max_try = 10
  +hosts_max_try_hardlimit = 20
   hosts_nopass_tls = *
   hosts_override
   hosts_randomize