Add new errors mail_4xx, data_4xx, lost_connection, tls_required.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 9 Mar 2006 15:10:16 +0000 (15:10 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 9 Mar 2006 15:10:16 +0000 (15:10 +0000)
32 files changed:
doc/doc-misc/WishList
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/exim.c
src/src/macros.h
src/src/readconf.c
src/src/retry.c
src/src/transports/lmtp.c
src/src/transports/smtp.c
test/aux-fixed/5100.script.10 [new file with mode: 0644]
test/confs/0497
test/confs/2010
test/confs/2110
test/confs/5100
test/log/0217
test/log/0497
test/log/0498
test/log/1008
test/log/2010
test/log/2110
test/log/5100
test/log/5102
test/log/5103
test/scripts/0000-Basic/0497
test/scripts/2000-GnuTLS/2010
test/scripts/2100-OpenSSL/2110
test/scripts/5100-lmtp-transport/5100
test/stderr/0217
test/stdout/0497
test/stdout/0498
test/stdout/1008
test/stdout/5100

index 3f70a9d643a3ae8b45f715f4e2c8ba6f31177a5c..fc5e0c126f7e50035d28d0834de83ca303509ff9 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-misc/WishList,v 1.64 2006/03/08 09:43:10 ph10 Exp $
+$Cambridge: exim/doc/doc-misc/WishList,v 1.65 2006/03/09 15:10:16 ph10 Exp $
 
 EXIM 4 WISH LIST
 ----------------
 
 EXIM 4 WISH LIST
 ----------------
@@ -295,16 +295,6 @@ David Carter
 So several warnings could be generated as the mailbox got bigger and bigger.
 ------------------------------------------------------------------------------
 
 So several warnings could be generated as the mailbox got bigger and bigger.
 ------------------------------------------------------------------------------
 
-(146) 15-May-2000 M  Allow SMTP error codes in retry rules
-
-This would allow special handling of certain errors from certain hosts. In
-particular, it would allow failing of certain 4xx codes.
-
-This is now available for 4xx responses to RCPT commands. Is anything more
-needed? Apparently, yes; there's been a request for a similar feature for MAIL
-commands.
-------------------------------------------------------------------------------
-
 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
 Heinz Ekker
 
 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
 Heinz Ekker
 
@@ -1255,11 +1245,6 @@ This is an option that turns all hard bounces into soft bounces. The idea is
 that it can be used as a safety-net while testing configurations. Instead of a
 local bounce, the message stays on the queue; instead of 5xx SMTP responses,
 4xx ones are given.
 that it can be used as a safety-net while testing configurations. Instead of a
 local bounce, the message stays on the queue; instead of 5xx SMTP responses,
 4xx ones are given.
-
-The ability to do the opposite - turn 4xx into 5xx under certain circumstances
-might also be useful (e.g. after a certain time). This might best be done by
-extending the retry logic to recognize 4xx as a special error. (This is now
-done.)
 ------------------------------------------------------------------------------
 
 (202) 10-Oct-03 S  -bvsomething to do a callout after the verify
 ------------------------------------------------------------------------------
 
 (202) 10-Oct-03 S  -bvsomething to do a callout after the verify
@@ -1297,7 +1282,6 @@ permanent ones after some fixed time.
 ------------------------------------------------------------------------------
 
 (209) 31-Oct-03 S  a way of making crashes in pipe commands temporary errors
 ------------------------------------------------------------------------------
 
 (209) 31-Oct-03 S  a way of making crashes in pipe commands temporary errors
-
 ------------------------------------------------------------------------------
 
 (210) 31-Oct-03 S  runtime option to change the daemon name used for tcprwappers
 ------------------------------------------------------------------------------
 
 (210) 31-Oct-03 S  runtime option to change the daemon name used for tcprwappers
@@ -1330,13 +1314,6 @@ e.g. exigrep, eximstats, will be automatically handled if the logs are
 changed.)
 ------------------------------------------------------------------------------
 
 changed.)
 ------------------------------------------------------------------------------
 
-(216) 27-Nov-03 S  Option to bounce if required TLS doesn't happen
-
-This is for the smtp transport with hosts_require_tls set. Currently, it
-defers. Possibly the best approach is to make the error one that can be seen by
-the retry logic.
-------------------------------------------------------------------------------
-
 (217) 27-Nov-03 M  A function to pass back variables from Perl
 
 This is a function that can be called from Perl, to take a name and a value and
 (217) 27-Nov-03 M  A function to pass back variables from Perl
 
 This is a function that can be called from Perl, to take a name and a value and
@@ -1602,12 +1579,6 @@ For example: mainlog_selector and rejectlog_selector, with log_selector setting
 both of them.
 ------------------------------------------------------------------------------
 
 both of them.
 ------------------------------------------------------------------------------
 
-(286) 21-Jul-04 M Distinguishing a larger number of errors
-
-For instance, detecting "connection reset by peer" (ENETRESET or ECONNRESET)
-might be useful.
-------------------------------------------------------------------------------
-
 (288) 10-Aug-04 M Option for verify to require MX
 
 e.g. verify=sender/require_mx
 (288) 10-Aug-04 M Option for verify to require MX
 
 e.g. verify=sender/require_mx
@@ -2018,10 +1989,5 @@ variables that are included in the data. This has to be done inside the lookup
 code, because of caching. Probably means we have to invent ewildlsearch and
 enwildlsearch.
 ------------------------------------------------------------------------------
 code, because of caching. Probably means we have to invent ewildlsearch and
 enwildlsearch.
 ------------------------------------------------------------------------------
-
-(350) 28-Feb-06 S Additional errors for retry rules
-
-(i) Unexpected connection close; (ii) mail_4xx.
-------------------------------------------------------------------------------
 --- HWM 350 ------------------------------------------------------------------
 ---------------------------- End of WishList ---------------------------------
 --- HWM 350 ------------------------------------------------------------------
 ---------------------------- End of WishList ---------------------------------
index 29875590e5b835620bb86d737310e024d280bb0f..f28bb3286add5c52c348fd7c2cdd7c09a98ec191 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.326 2006/03/08 11:13:07 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.327 2006/03/09 15:10:16 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -300,6 +300,9 @@ PH/58 Allow for the insertion of a newline as well as a space when a string
       is turned into more than one encoded-word during RFC 2047 encoding. The
       Sieve code now uses this.
 
       is turned into more than one encoded-word during RFC 2047 encoding. The
       Sieve code now uses this.
 
+PH/59 Added the following errors that can be detected in retry rules: mail_4xx,
+      data_4xx, lost_connection, tls_required.
+
 
 Exim version 4.60
 -----------------
 
 Exim version 4.60
 -----------------
index 065ddd3d2e50e4dcc60cb419f6fb6866c127e594..f3e34e773bc08b75e204ec9f056957a511e3c733 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.95 2006/03/06 16:05:12 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.96 2006/03/09 15:10:16 ph10 Exp $
 
 New Features in Exim
 --------------------
 
 New Features in Exim
 --------------------
@@ -165,6 +165,24 @@ PH/18 There is a new ACL modifier called "add_header" which does what its name
       described for WARN with "message" in section 39.19 of the 4.60 manual, is
       supported.
 
       described for WARN with "message" in section 39.19 of the 4.60 manual, is
       supported.
 
+PH/19 The following errors can now be detected in retry rules:
+
+      mail_4xx   This is like rcpt_4xx, but applies to MAIL commands
+
+      data_4xx   This is like rcpt_4xx, but applies to DATA commands and the
+                 response code after the end of the data
+
+      lost_connection  This error occurs when the server unexpectedly closes
+                 the SMTP connection. There may, of course, legitmate reasons
+                 for this (host died, network died), but if it repeats a lot
+                 for the same host, it indicates something odd.
+
+      tls_required  The server was required to use TLS (hosts_require_tls),
+                 but either did not offer it, or responded with 4xx to
+                 STARTTLS, or there was a problem setting up the TLS connection
+
+      Note that a 5xx response to STARTTLS is a permanent error.
+
 
 
 Version 4.60
 
 
 Version 4.60
index ec36d4940ce2b83b4f9e462ccf42c215b8f15620..30ea05c41eb07e0ddb559b02491e7225a5d96b24 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/exim.c,v 1.36 2006/02/23 10:25:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/exim.c,v 1.37 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -3725,11 +3725,13 @@ if (test_retry_arg >= 0)
       return EXIT_FAILURE;
       }
 
       return EXIT_FAILURE;
       }
 
-    /* For the rcpt_4xx errors, a value of 255 means "any", and a code > 100 as
-    an error is for matching codes to the decade. Turn them into a real error
-    code, off the decade. */
+    /* For the {MAIL,RCPT,DATA}_4xx errors, a value of 255 means "any", and a
+    code > 100 as an error is for matching codes to the decade. Turn them into
+    a real error code, off the decade. */
 
 
-    if (basic_errno == ERRNO_RCPT4XX)
+    if (basic_errno == ERRNO_MAIL4XX ||
+        basic_errno == ERRNO_RCPT4XX ||
+        basic_errno == ERRNO_DATA4XX)
       {
       int code = (more_errno >> 8) & 255;
       if (code == 255)
       {
       int code = (more_errno >> 8) & 255;
       if (code == 255)
index 497589023abd0e9110ecf71687be028abd22c255..7de0c4bfce46e623b08bc5148fa09d3b599a9789 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/macros.h,v 1.23 2006/02/14 14:55:37 ph10 Exp $ */
+/* $Cambridge: exim/src/src/macros.h,v 1.24 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -452,6 +452,8 @@ to conflict with system errno values. */
 #define ERRNO_AUTHFAIL       (-42)   /* When required by client */
 #define ERRNO_CONNECTTIMEOUT (-43)   /* Used internally in smtp transport */
 #define ERRNO_RCPT4XX        (-44)   /* RCPT gave 4xx error */
 #define ERRNO_AUTHFAIL       (-42)   /* When required by client */
 #define ERRNO_CONNECTTIMEOUT (-43)   /* Used internally in smtp transport */
 #define ERRNO_RCPT4XX        (-44)   /* RCPT gave 4xx error */
+#define ERRNO_MAIL4XX        (-45)   /* MAIL gave 4xx error */
+#define ERRNO_DATA4XX        (-46)   /* DATA gave 4xx error */
 
 /* These must be last, so all retry deferments can easily be identified */
 
 
 /* These must be last, so all retry deferments can easily be identified */
 
index 59e75d0a4c00f1a0c38742a570ea503578abc80d..d1911a7b634289e69c31162613b89e9c8a496208 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/readconf.c,v 1.21 2006/02/22 15:08:20 ph10 Exp $ */
+/* $Cambridge: exim/src/src/readconf.c,v 1.22 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -3421,7 +3421,9 @@ else if (len == 7 && strncmpic(pp, US"timeout", len) == 0)
     }
   }
 
     }
   }
 
-else if (strncmpic(pp, US"rcpt_4", 6) == 0)
+else if (strncmpic(pp, US"mail_4", 6) == 0 ||
+         strncmpic(pp, US"rcpt_4", 6) == 0 ||
+         strncmpic(pp, US"data_4", 6) == 0)
   {
   BOOL bad = FALSE;
   int x = 255;                           /* means "any 4xx code" */
   {
   BOOL bad = FALSE;
   int x = 255;                           /* means "any 4xx code" */
@@ -3438,18 +3440,24 @@ else if (strncmpic(pp, US"rcpt_4", 6) == 0)
     else if (a != 'x' || b != 'x') bad = TRUE;
     }
 
     else if (a != 'x' || b != 'x') bad = TRUE;
     }
 
-  if (bad) return US"rcpt_4 must be followed by xx, dx, or dd, where "
-    "x is literal and d is any digit";
+  if (bad)
+    return string_sprintf("%.4s_4 must be followed by xx, dx, or dd, where "
+      "x is literal and d is any digit", pp);
 
 
-  *basic_errno = ERRNO_RCPT4XX;
+  *basic_errno = (*pp == 'm')? ERRNO_MAIL4XX :
+                 (*pp == 'r')? ERRNO_RCPT4XX : ERRNO_DATA4XX;
   *more_errno = x << 8;
   }
 
 else if (len == 4 && strncmpic(pp, US"auth", len) == 0 &&
          strncmpic(q+1, US"failed", p-q-1) == 0)
   *more_errno = x << 8;
   }
 
 else if (len == 4 && strncmpic(pp, US"auth", len) == 0 &&
          strncmpic(q+1, US"failed", p-q-1) == 0)
-  {
   *basic_errno = ERRNO_AUTHFAIL;
   *basic_errno = ERRNO_AUTHFAIL;
-  }
+
+else if (strcmpic(pp, US"lost_connection") == 0)
+  *basic_errno = ERRNO_SMTPCLOSED;
+
+else if (strcmpic(pp, US"tls_required") == 0)
+  *basic_errno = ERRNO_TLSREQUIRED;
 
 else if (len != 1 || Ustrncmp(pp, "*", 1) != 0)
   return string_sprintf("unknown or malformed retry error \"%.*s\"", p-pp, pp);
 
 else if (len != 1 || Ustrncmp(pp, "*", 1) != 0)
   return string_sprintf("unknown or malformed retry error \"%.*s\"", p-pp, pp);
index dbfd3cee85554b0195d8baf39eefd5fcc4fba3db..ca61e5c0c0df1c2e74dabea665d52510341784bf 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/retry.c,v 1.8 2006/02/16 16:37:57 ph10 Exp $ */
+/* $Cambridge: exim/src/src/retry.c,v 1.9 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -414,20 +414,31 @@ for (yield = retries; yield != NULL; yield = yield->next)
         continue;
       }
 
         continue;
       }
 
-    /* Handle 4xx responses to RCPT. The code that was received is in the 2nd
-    least significant byte of more_errno (with 400 subtracted). The required
-    value is coded in the 2nd least significant byte of the yield->more_errno
-    field as follows:
+    /* The TLSREQUIRED error also covers TLSFAILURE. These are subtly different
+    errors, but not worth separating at this level. */
+
+    else if (yield->basic_errno == ERRNO_TLSREQUIRED)
+      {
+      if (basic_errno != ERRNO_TLSREQUIRED && basic_errno != ERRNO_TLSFAILURE)
+        continue;
+      }
+
+    /* Handle 4xx responses to MAIL, RCPT, or DATA. The code that was received
+    is in the 2nd least significant byte of more_errno (with 400 subtracted).
+    The required value is coded in the 2nd least significant byte of the
+    yield->more_errno field as follows:
 
       255     => any 4xx code
       >= 100  => the decade must match the value less 100
       < 100   => the exact value must match
     */
 
 
       255     => any 4xx code
       >= 100  => the decade must match the value less 100
       < 100   => the exact value must match
     */
 
-    else if (yield->basic_errno == ERRNO_RCPT4XX)
+    else if (yield->basic_errno == ERRNO_MAIL4XX ||
+             yield->basic_errno == ERRNO_RCPT4XX ||
+             yield->basic_errno == ERRNO_DATA4XX)
       {
       int wanted;
       {
       int wanted;
-      if (basic_errno != ERRNO_RCPT4XX) continue;
+      if (basic_errno != yield->basic_errno) continue;
       wanted = (yield->more_errno >> 8) & 255;
       if (wanted != 255)
         {
       wanted = (yield->more_errno >> 8) & 255;
       if (wanted != 255)
         {
index 79ad67d01fcbdee388ef86c11cdbf4bad6cb1f26..969e45d607bb3334b1fa743d3372c03756e2d01e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/lmtp.c,v 1.7 2006/02/07 11:19:03 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/lmtp.c,v 1.8 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -578,7 +578,14 @@ if (!lmtp_write_command(fd_in, "MAIL FROM:<%s>\r\n", return_path))
   goto WRITE_FAILED;
 
 if (!lmtp_read_response(out, buffer, sizeof(buffer), '2', timeout))
   goto WRITE_FAILED;
 
 if (!lmtp_read_response(out, buffer, sizeof(buffer), '2', timeout))
+  {
+  if (errno == 0 && buffer[0] == '4')
+    {
+    errno = ERRNO_MAIL4XX;
+    addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+    }
   goto RESPONSE_FAILED;
   goto RESPONSE_FAILED;
+  }
 
 /* Next, we hand over all the recipients. Some may be permanently or
 temporarily rejected; others may be accepted, for now. */
 
 /* Next, we hand over all the recipients. Some may be permanently or
 temporarily rejected; others may be accepted, for now. */
@@ -601,9 +608,8 @@ for (addr = addrlist; addr != NULL; addr = addr->next)
       string_printing(buffer));
     if (buffer[0] == '5') addr->transport_return = FAIL; else
       {
       string_printing(buffer));
     if (buffer[0] == '5') addr->transport_return = FAIL; else
       {
-      int bincode = (buffer[1] - '0')*10 + buffer[2] - '0';
       addr->basic_errno = ERRNO_RCPT4XX;
       addr->basic_errno = ERRNO_RCPT4XX;
-      addr->more_errno |= bincode << 8;
+      addr->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
       }
     }
   }
       }
     }
   }
@@ -616,7 +622,14 @@ if (send_data)
 
   if (!lmtp_write_command(fd_in, "DATA\r\n")) goto WRITE_FAILED;
   if (!lmtp_read_response(out, buffer, sizeof(buffer), '3', timeout))
 
   if (!lmtp_write_command(fd_in, "DATA\r\n")) goto WRITE_FAILED;
   if (!lmtp_read_response(out, buffer, sizeof(buffer), '3', timeout))
+    {
+    if (errno == 0 && buffer[0] == '4')
+      {
+      errno = ERRNO_DATA4XX;
+      addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+      }
     goto RESPONSE_FAILED;
     goto RESPONSE_FAILED;
+    }
 
   sigalrm_seen = FALSE;
   transport_write_timeout = timeout;
 
   sigalrm_seen = FALSE;
   transport_write_timeout = timeout;
@@ -676,6 +689,11 @@ if (send_data)
 
     else
       {
 
     else
       {
+      if (buffer[0] == '4')
+        {
+        addr->basic_errno = ERRNO_DATA4XX;
+        addr->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+        }
       addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
         string_printing(buffer));
       addr->transport_return = (buffer[0] == '5')? FAIL : DEFER;
       addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
         string_printing(buffer));
       addr->transport_return = (buffer[0] == '5')? FAIL : DEFER;
@@ -696,13 +714,15 @@ goto RETURN;
 
 /* Come here if any call to read_response, other than a response after the data
 phase, failed. Put the error in the top address - this will be replicated
 
 /* Come here if any call to read_response, other than a response after the data
 phase, failed. Put the error in the top address - this will be replicated
-because the yield is still FALSE. Analyse the error, and if if isn't too bad,
-send a QUIT command. Wait for the response with a short timeout, so we don't
-wind up this process before the far end has had time to read the QUIT. */
+because the yield is still FALSE. (But omit ETIMEDOUT, as there will already be
+a suitable message.) Analyse the error, and if if isn't too bad, send a QUIT
+command. Wait for the response with a short timeout, so we don't wind up this
+process before the far end has had time to read the QUIT. */
 
 RESPONSE_FAILED:
 
 save_errno = errno;
 
 RESPONSE_FAILED:
 
 save_errno = errno;
+if (errno != ETIMEDOUT && errno != 0) addrlist->basic_errno = errno;
 addrlist->message = NULL;
 
 if (check_response(&save_errno, addrlist->more_errno,
 addrlist->message = NULL;
 
 if (check_response(&save_errno, addrlist->more_errno,
index 9b204e064e78fc68fa9d1fb52894085d320337c0..e223bb183e418530dd399cb1d838330219dde102 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.24 2006/03/01 16:07:16 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.25 2006/03/09 15:10:16 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -598,6 +598,12 @@ if (pending_MAIL)
     if (errno == 0 && buffer[0] != 0)
       {
       uschar flushbuffer[4096];
     if (errno == 0 && buffer[0] != 0)
       {
       uschar flushbuffer[4096];
+      int save_errno = 0;
+      if (buffer[0] == '4')
+        {
+        save_errno = ERRNO_MAIL4XX;
+        addr->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+        }
       while (count-- > 0)
         {
         if (!smtp_read_response(inblock, flushbuffer, sizeof(flushbuffer),
       while (count-- > 0)
         {
         if (!smtp_read_response(inblock, flushbuffer, sizeof(flushbuffer),
@@ -605,6 +611,7 @@ if (pending_MAIL)
             && (errno != 0 || flushbuffer[0] == 0))
           break;
         }
             && (errno != 0 || flushbuffer[0] == 0))
           break;
         }
+      errno = save_errno;
       }
     return -3;
     }
       }
     return -3;
     }
@@ -683,11 +690,9 @@ while (count-- > 0)
 
     else
       {
 
     else
       {
-      int bincode = (buffer[1] - '0')*10 + buffer[2] - '0';
-
       addr->transport_return = DEFER;
       addr->basic_errno = ERRNO_RCPT4XX;
       addr->transport_return = DEFER;
       addr->basic_errno = ERRNO_RCPT4XX;
-      addr->more_errno |= bincode << 8;
+      addr->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
 
       /* Log temporary errors if there are more hosts to be tried. */
 
 
       /* Log temporary errors if there are more hosts to be tried. */
 
@@ -720,7 +725,15 @@ if (pending_DATA != 0 &&
   int code;
   uschar *msg;
   BOOL pass_message;
   int code;
   uschar *msg;
   BOOL pass_message;
-  if (pending_DATA > 0 || (yield & 1) != 0) return -3;
+  if (pending_DATA > 0 || (yield & 1) != 0)
+    {
+    if (errno == 0 && buffer[0] == '4')
+      {
+      errno = ERRNO_DATA4XX;
+      addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+      }
+    return -3;
+    }
   (void)check_response(host, &errno, 0, buffer, &code, &msg, &pass_message);
   DEBUG(D_transport) debug_printf("%s\nerror for DATA ignored: pipelining "
     "is in use and there were no good recipients\n", msg);
   (void)check_response(host, &errno, 0, buffer, &code, &msg, &pass_message);
   DEBUG(D_transport) debug_printf("%s\nerror for DATA ignored: pipelining "
     "is in use and there were no good recipients\n", msg);
@@ -1340,7 +1353,15 @@ switch(rc)
 
   case +1:                /* Block was sent */
   if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
 
   case +1:                /* Block was sent */
   if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
-    ob->command_timeout)) goto RESPONSE_FAILED;
+       ob->command_timeout))
+    {
+    if (errno == 0 && buffer[0] == '4')
+      {
+      errno = ERRNO_MAIL4XX;
+      addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+      }
+    goto RESPONSE_FAILED;
+    }
   pending_MAIL = FALSE;
   break;
   }
   pending_MAIL = FALSE;
   break;
   }
@@ -1521,8 +1542,16 @@ if (!ok) ok = TRUE; else
   /* For SMTP, we now read a single response that applies to the whole message.
   If it is OK, then all the addresses have been delivered. */
 
   /* For SMTP, we now read a single response that applies to the whole message.
   If it is OK, then all the addresses have been delivered. */
 
-  if (!lmtp) ok = smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
-    ob->final_timeout);
+  if (!lmtp)
+    {
+    ok = smtp_read_response(&inblock, buffer, sizeof(buffer), '2',
+      ob->final_timeout);
+    if (!ok && errno == 0 && buffer[0] == '4')
+      {
+      errno = ERRNO_DATA4XX;
+      addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
+      }
+    }
 
   /* For LMTP, we get back a response for every RCPT command that we sent;
   some may be accepted and some rejected. For those that get a response, their
 
   /* For LMTP, we get back a response for every RCPT command that we sent;
   some may be accepted and some rejected. For those that get a response, their
@@ -1590,6 +1619,8 @@ if (!ok) ok = TRUE; else
             addr->transport_return = FAIL;
           else
             {
             addr->transport_return = FAIL;
           else
             {
+            errno = ERRNO_DATA4XX;
+            addr->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8;
             addr->transport_return = DEFER;
             retry_add_item(addr, addr->address_retry_key, 0);
             }
             addr->transport_return = DEFER;
             retry_add_item(addr, addr->address_retry_key, 0);
             }
@@ -1694,61 +1725,83 @@ if (!ok)
       }
     }
 
       }
     }
 
-  /* If there was an I/O error or timeout or other transportation error,
-  indicated by errno being non-zero, defer all addresses and yield DEFER,
-  except for the case of failed add_headers expansion, or a transport filter
-  failure, when the yield should be ERROR, to stop it trying other hosts.
-
-  However, handle timeouts after MAIL FROM or "." and loss of connection after
+  /* We want to handle timeouts after MAIL or "." and loss of connection after
   "." specially. They can indicate a problem with the sender address or with
   "." specially. They can indicate a problem with the sender address or with
-  the contents of the message rather than a real error on the connection.
-  Therefore, treat these cases in the same way as a 4xx response.
+  the contents of the message rather than a real error on the connection. These
+  cases are treated in the same way as a 4xx response. This next bit of code
+  does the classification. */
 
 
-  The following condition tests for NOT these special cases. */
-
-  else if (save_errno != 0 &&
-           (save_errno != ETIMEDOUT ||
-             (Ustrncmp(smtp_command,"MAIL",4) != 0 &&
-              Ustrncmp(smtp_command,"end ",4) != 0)) &&
-           (save_errno != ERRNO_SMTPCLOSED ||
-              Ustrncmp(smtp_command,"end ",4) != 0))
+  else
     {
     {
-    yield = (save_errno == ERRNO_CHHEADER_FAIL ||
-             save_errno == ERRNO_FILTER_FAIL)? ERROR : DEFER;
-    set_errno(addrlist, save_errno, message, DEFER, pass_message);
-    }
+    BOOL message_error;
 
 
-  /* Otherwise we have a message-specific error response from the remote
-  host. This is one of
-    (a) negative response or timeout after "mail from"
-    (b) negative response after "data"
-    (c) negative response or timeout or dropped connection after "."
-  It won't be a negative response or timeout after "rcpt to", as that is dealt
-  with separately above. The action in all cases is to set an appropriate
-  error code for all the addresses, but to leave yield set to OK because
-  the host itself has not failed. [It might in practice have failed for a
-  timeout after MAIL FROM, or "." but if so, we'll discover that at the next
-  delivery attempt.] For a temporary error, set the message_defer flag, and
-  write to the logs for information if this is not the last host. The error for
-  the last host will be logged as part of the address's log line. */
+    switch(save_errno)
+      {
+      case 0:
+      case ERRNO_MAIL4XX:
+      case ERRNO_DATA4XX:
+      message_error = TRUE;
+      break;
 
 
-  else
-    {
-    if (mua_wrapper) code = '5';  /* Force hard failure in wrapper mode */
+      case ETIMEDOUT:
+      message_error = Ustrncmp(smtp_command,"MAIL",4) == 0 ||
+                      Ustrncmp(smtp_command,"end ",4) == 0;
+      break;
+
+      case ERRNO_SMTPCLOSED:
+      message_error = Ustrncmp(smtp_command,"end ",4) == 0;
+      break;
+
+      default:
+      message_error = FALSE;
+      break;
+      }
 
 
-    set_errno(addrlist, save_errno, message, (code == '5')? FAIL : DEFER,
-      pass_message);
+    /* Handle the cases that are treated as message errors. These are:
 
 
-    /* If there's an errno, the message contains just the identity of
-    the host. */
+      (a) negative response or timeout after MAIL
+      (b) negative response after DATA
+      (c) negative response or timeout or dropped connection after "."
 
 
-    if (code != '5')     /* Anything other than 5 is treated as temporary */
+    It won't be a negative response or timeout after RCPT, as that is dealt
+    with separately above. The action in all cases is to set an appropriate
+    error code for all the addresses, but to leave yield set to OK because the
+    host itself has not failed. Of course, it might in practice have failed
+    when we've had a timeout, but if so, we'll discover that at the next
+    delivery attempt. For a temporary error, set the message_defer flag, and
+    write to the logs for information if this is not the last host. The error
+    for the last host will be logged as part of the address's log line. */
+
+    if (message_error)
       {
       {
-      if (save_errno > 0)
-        message = US string_sprintf("%s: %s", message, strerror(save_errno));
-      if (host->next != NULL) log_write(0, LOG_MAIN, "%s", message);
-      deliver_msglog("%s %s\n", tod_stamp(tod_log), message);
-      *message_defer = TRUE;
+      if (mua_wrapper) code = '5';  /* Force hard failure in wrapper mode */
+      set_errno(addrlist, save_errno, message, (code == '5')? FAIL : DEFER,
+        pass_message);
+
+      /* If there's an errno, the message contains just the identity of
+      the host. */
+
+      if (code != '5')     /* Anything other than 5 is treated as temporary */
+        {
+        if (save_errno > 0)
+          message = US string_sprintf("%s: %s", message, strerror(save_errno));
+        if (host->next != NULL) log_write(0, LOG_MAIN, "%s", message);
+        deliver_msglog("%s %s\n", tod_stamp(tod_log), message);
+        *message_defer = TRUE;
+        }
+      }
+
+    /* Otherwise, we have an I/O error or a timeout other than after MAIL or
+    ".", or some other transportation error. We defer all addresses and yield
+    DEFER, except for the case of failed add_headers expansion, or a transport
+    filter failure, when the yield should be ERROR, to stop it trying other
+    hosts. */
+
+    else
+      {
+      yield = (save_errno == ERRNO_CHHEADER_FAIL ||
+               save_errno == ERRNO_FILTER_FAIL)? ERROR : DEFER;
+      set_errno(addrlist, save_errno, message, DEFER, pass_message);
       }
     }
   }
       }
     }
   }
diff --git a/test/aux-fixed/5100.script.10 b/test/aux-fixed/5100.script.10
new file mode 100644 (file)
index 0000000..592cdd8
--- /dev/null
@@ -0,0 +1,14 @@
+220 Welcome to this LMTP simulation
+LHLO
+250-Hello there
+250 SIZE
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+450 Temporary error
+QUIT
+220 OK
index 4777bd20de63aff13f801a58356ba6e0c4111017..23748aedf1f9a82adff931072bc2aa2db3f67705 100644 (file)
@@ -17,6 +17,11 @@ gecos_name = CALLER_NAME
 
 begin routers
 
 
 begin routers
 
+r0:
+  driver = redirect
+  senders = :
+  data = :blackhole: discard bounces
+
 r1:
   driver = accept
   transport = t1
 r1:
   driver = accept
   transport = t1
@@ -37,7 +42,10 @@ t1:
 
 begin retry
 
 
 begin retry
 
+*  lost_connection
+*  mail_4xx
 *  rcpt_4xx
 *  rcpt_4xx
+*  data_4xx
 *  *         F,1d,15m
 
 
 *  *         F,1d,15m
 
 
index bda63bb7afe054235a22ce1a69426917da59bd31..c08d4ce4997fe9ca3b107b0b8a9c0a953693218d 100644 (file)
@@ -1,6 +1,7 @@
 # Exim test configuration 2010
 
 SERVER =
 # Exim test configuration 2010
 
 SERVER =
+HOSTS = 127.0.0.1 : HOSTIPV4
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
@@ -44,8 +45,16 @@ begin transports
 send_to_server:
   driver = smtp
   allow_localhost
 send_to_server:
   driver = smtp
   allow_localhost
-  hosts = 127.0.0.1 : HOSTIPV4
+  hosts = HOSTS
   hosts_require_tls = *
   port = PORT_D
 
   hosts_require_tls = *
   port = PORT_D
 
+
+# ----- Retry -----
+
+begin retry
+
+* tls_required
+* *  F,1d,5m
+
 # End
 # End
index dc16568328fe8b9191b27b717be299056d87a74c..1eb7ecb112fb55781f17fd1c35cc68e9d1efd145 100644 (file)
@@ -1,6 +1,7 @@
 # Exim test configuration 2110
 
 SERVER =
 # Exim test configuration 2110
 
 SERVER =
+HOSTS = 127.0.0.1 : HOSTIPV4
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
@@ -44,8 +45,16 @@ begin transports
 send_to_server:
   driver = smtp
   allow_localhost
 send_to_server:
   driver = smtp
   allow_localhost
-  hosts = 127.0.0.1 : HOSTIPV4
+  hosts = HOSTS
   hosts_require_tls = *
   port = PORT_D
 
   hosts_require_tls = *
   port = PORT_D
 
+
+# ----- Retry -----
+
+begin retry
+
+* tls_required
+* *  F,1d,5m
+
 # End
 # End
index a1b5c67d0cfa29589b76526892bf46470157ee2e..09a3dc891c624dab4c879df38d67cc6605df9915 100644 (file)
@@ -51,6 +51,7 @@ lmtp:
 
 begin retry
 
 
 begin retry
 
+*  mail_4xx
 *  rcpt_4xx   F,1d,1m
 *  *          F,5d,1d
 
 *  rcpt_4xx   F,1d,1m
 *  *          F,5d,1d
 
index 14321f459cee87f79a95a822947e7bff381363c7..4913cb03f4a78e700a762a15308f59082df2f3a5 100644 (file)
@@ -12,8 +12,8 @@
 1999-03-02 09:44:33 10HmaZ-0005vi-00 == b@test.ex R=client T=send_to_server defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after RCPT TO:<b@test.ex>
 1999-03-02 09:44:33 10HmaZ-0005vi-00 == c@test.ex R=client T=send_to_server defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after RCPT TO:<b@test.ex>
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmaZ-0005vi-00 == b@test.ex R=client T=send_to_server defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after RCPT TO:<b@test.ex>
 1999-03-02 09:44:33 10HmaZ-0005vi-00 == c@test.ex R=client T=send_to_server defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after RCPT TO:<b@test.ex>
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmbA-0005vi-00 == a@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 451 Temp error
-1999-03-02 09:44:33 10HmbA-0005vi-00 == b@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 451 Temp error
+1999-03-02 09:44:33 10HmbA-0005vi-00 == a@test.ex R=client T=send_to_server defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 451 Temp error
+1999-03-02 09:44:33 10HmbA-0005vi-00 == b@test.ex R=client T=send_to_server defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 451 Temp error
 1999-03-02 09:44:33 10HmbB-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbB-0005vi-00 ** a@test.ex R=client T=send_to_server: SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 Perm error
 1999-03-02 09:44:33 10HmbB-0005vi-00 ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 Perm error
 1999-03-02 09:44:33 10HmbB-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbB-0005vi-00 ** a@test.ex R=client T=send_to_server: SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 Perm error
 1999-03-02 09:44:33 10HmbB-0005vi-00 ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after MAIL FROM:<CALLER@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 Perm error
 1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbK-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbK-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmbK-0005vi-00 == a@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
-1999-03-02 09:44:33 10HmbK-0005vi-00 == b@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
+1999-03-02 09:44:33 10HmbK-0005vi-00 == a@test.ex R=client T=send_to_server defer (-46): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
+1999-03-02 09:44:33 10HmbK-0005vi-00 == b@test.ex R=client T=send_to_server defer (-46): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
 1999-03-02 09:44:33 10HmbL-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbL-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmbL-0005vi-00 == a@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
+1999-03-02 09:44:33 10HmbL-0005vi-00 == a@test.ex R=client T=send_to_server defer (-46): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<b@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** c@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<c@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** d@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<d@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<b@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** c@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<c@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 1999-03-02 09:44:33 10HmbL-0005vi-00 ** d@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<d@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
index 8bd74c4126e872278c9786e762aa52ce33a58d53..61f08ff1bf97e24e0276460459ec3af9cc261316 100644 (file)
@@ -1,7 +1,64 @@
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@x.y>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
 1999-03-02 09:44:33 10HmaX-0005vi-00 ** userx@x.y: retry timeout exceeded
 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 10HmaX-0005vi-00 ** userx@x.y: retry timeout exceeded
 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 127.0.0.1 [127.0.0.1] Connection refused
-1999-03-02 09:44:33 10HmaY-0005vi-00 == CALLER@myhost.test.ex R=r1 T=t1 defer (dd): Connection refused
+1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> 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 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmaZ-0005vi-00 == userx@x.y R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@x.y>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmaZ-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> 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 10HmbB-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbB-0005vi-00 == userx@x.y R=r1 T=t1 defer (-46): SMTP error from remote mail server after DATA: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbB-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbC-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbC-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbB-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbD-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbD-0005vi-00 == userx@x.y R=r1 T=t1 defer (-46): SMTP error from remote mail server after end of data: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbD-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbE-0005vi-00 <= <> R=10HmbD-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbE-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbE-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbF-0005vi-00 == userx@x.y R=r1 T=t1 defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbF-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbG-0005vi-00 <= <> R=10HmbF-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbG-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbG-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbH-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbH-0005vi-00 == userx@x.y R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:<userx@x.y>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbH-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbI-0005vi-00 <= <> R=10HmbH-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbI-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbH-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbJ-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbJ-0005vi-00 == userx@x.y R=r1 T=t1 defer (-46): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbJ-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbK-0005vi-00 <= <> R=10HmbJ-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbK-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbK-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbL-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbL-0005vi-00 == userx@x.y R=r1 T=t1 defer (-46): SMTP error from remote mail server after end of data: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+1999-03-02 09:44:33 10HmbL-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbM-0005vi-00 <= <> R=10HmbL-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbM-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbM-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbL-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbN-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbN-0005vi-00 Remote host 127.0.0.1 [127.0.0.1] closed connection in response to RCPT TO:<userx@x.y>
+1999-03-02 09:44:33 10HmbN-0005vi-00 == userx@x.y R=r1 T=t1 defer (-18): Remote host 127.0.0.1 [127.0.0.1] closed connection in response to RCPT TO:<userx@x.y>
+1999-03-02 09:44:33 10HmbN-0005vi-00 ** userx@x.y: retry timeout exceeded
+1999-03-02 09:44:33 10HmbO-0005vi-00 <= <> R=10HmbN-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbO-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=r0
+1999-03-02 09:44:33 10HmbO-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbN-0005vi-00 Completed
index 62178dbabfe57bfc3300e57d63cbd1eba6cf8506..ae2dd0f273b02c62c4f3758c0cc4ac8b90a95bdc 100644 (file)
@@ -1,5 +1,5 @@
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
-1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (0): SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 DELAY
+1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 DELAY
 1999-03-02 09:44:33 Start queue run: pid=pppp
 1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after end of data (ddd bytes written)
 1999-03-02 09:44:33 10HmaX-0005vi-00 ** userx@x.y: retry timeout exceeded
 1999-03-02 09:44:33 Start queue run: pid=pppp
 1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@x.y R=r1 T=t1 defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after end of data (ddd bytes written)
 1999-03-02 09:44:33 10HmaX-0005vi-00 ** userx@x.y: retry timeout exceeded
index e140c6e8e40782a0599fc81f35c2a137bfd689f1..1e5f075e9e14986d6f809b759bd34206e2197ed8 100644 (file)
@@ -1,3 +1,3 @@
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@the.local.host.name 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@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@the.local.host.name 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@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
-1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@test.ex R=r1 T=t1 defer (0): SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
+1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@test.ex R=r1 T=t1 defer (-45): SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
index 713adc45233f80d93ef9643861b3d16fd7b539b7..134d5e7d145d64f08aab3f0ff1c7fa4381bbe7f5 100644 (file)
@@ -4,6 +4,13 @@
 1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] X=TLS-1.0:RSA_AES_256_CBC_SHA1:32
 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 10HmaX-0005vi-00 => userx@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] X=TLS-1.0:RSA_AES_256_CBC_SHA1:32
 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 10HmaY-0005vi-00 a TLS session is required for 127.0.0.1 [127.0.0.1], but the server did not offer TLS support
+1999-03-02 09:44:33 10HmaY-0005vi-00 == userx@test.ex R=client T=send_to_server defer (-38): a TLS session is required for 127.0.0.1 [127.0.0.1], but the server did not offer TLS support
+1999-03-02 09:44:33 10HmaY-0005vi-00 ** userx@test.ex: retry timeout exceeded
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= <> R=10HmaY-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp -qf
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
index 675b2b4763f9671d293f80f919a7d8f863f1aa83..b863b37f5cc934c94e6cc737b8b655e1a3cfc2cc 100644 (file)
@@ -4,6 +4,13 @@
 1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] X=TLSv1:AES256-SHA:256
 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 10HmaX-0005vi-00 => userx@test.ex R=client T=send_to_server H=ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4] X=TLSv1:AES256-SHA:256
 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 10HmaY-0005vi-00 a TLS session is required for 127.0.0.1 [127.0.0.1], but the server did not offer TLS support
+1999-03-02 09:44:33 10HmaY-0005vi-00 == userx@test.ex R=client T=send_to_server defer (-38): a TLS session is required for 127.0.0.1 [127.0.0.1], but the server did not offer TLS support
+1999-03-02 09:44:33 10HmaY-0005vi-00 ** userx@test.ex: retry timeout exceeded
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= <> R=10HmaY-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp -qf
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
index 4c8fa3219174cfbc5d281e1b69af6672228e707f..ec4a807ffa2413c623f1e3945aad413ae7805d43 100644 (file)
@@ -32,8 +32,13 @@ MAIL FROM
 QUIT
 <<< QUIT
 250 OK
 QUIT
 <<< QUIT
 250 OK
-1999-03-02 09:44:33 10HmbB-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP error after MAIL FROM:<CALLER@myhost.test.ex>: 450 Don't like that sender just at the moment
-1999-03-02 09:44:33 10HmbC-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbB-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-45): LMTP error after MAIL FROM:<CALLER@myhost.test.ex>: 450 Don't like that sender just at the moment
+1999-03-02 09:44:33 10HmbB-0005vi-00 ** userx@myhost.test.ex: retry timeout exceeded
+1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbC-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=bounces
+1999-03-02 09:44:33 10HmbC-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbB-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbD-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
@@ -66,9 +71,9 @@ DATA
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
-<<<    id 10HmbC-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+<<<    id 10HmbD-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
 <<< script: 05
 <<< script: 05
-<<< Message-Id: <E10HmbC-0005vi-00@myhost.test.ex>
+<<< Message-Id: <E10HmbD-0005vi-00@myhost.test.ex>
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
@@ -81,16 +86,16 @@ DATA
 QUIT
 <<< QUIT
 250 OK
 QUIT
 <<< QUIT
 250 OK
-1999-03-02 09:44:33 10HmbC-0005vi-00 => userx <userx@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbC-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP error after end of data: 450 Number 2 is now delayed
-1999-03-02 09:44:33 10HmbC-0005vi-00 ** jill@myhost.test.ex R=smartuser T=lmtp: LMTP error after end of data: 550 Number 3 is now rejected
-1999-03-02 09:44:33 10HmbC-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
-1999-03-02 09:44:33 10HmbC-0005vi-00 ** dick@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<dick@myhost.test.ex>: 550 This one is unknown on RCPT
-1999-03-02 09:44:33 10HmbC-0005vi-00 -> harry <harry@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbD-0005vi-00 <= <> R=10HmbC-0005vi-00 U=EXIMUSER P=local S=sss
-1999-03-02 09:44:33 10HmbD-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=bounces
-1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbE-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbD-0005vi-00 => userx <userx@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbD-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-46): LMTP error after end of data: 450 Number 2 is now delayed
+1999-03-02 09:44:33 10HmbD-0005vi-00 ** jill@myhost.test.ex R=smartuser T=lmtp: LMTP error after end of data: 550 Number 3 is now rejected
+1999-03-02 09:44:33 10HmbD-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
+1999-03-02 09:44:33 10HmbD-0005vi-00 ** dick@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<dick@myhost.test.ex>: 550 This one is unknown on RCPT
+1999-03-02 09:44:33 10HmbD-0005vi-00 -> harry <harry@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbE-0005vi-00 <= <> R=10HmbD-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbE-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=bounces
+1999-03-02 09:44:33 10HmbE-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
@@ -123,25 +128,25 @@ DATA
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
-<<<    id 10HmbE-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+<<<    id 10HmbF-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
 <<< script: 06
 <<< script: 06
-<<< Message-Id: <E10HmbE-0005vi-00@myhost.test.ex>
+<<< Message-Id: <E10HmbF-0005vi-00@myhost.test.ex>
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
 <<< This is a test message.
 <<< .
 250 Number 1 is OK
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
 <<< This is a test message.
 <<< .
 250 Number 1 is OK
-1999-03-02 09:44:33 10HmbE-0005vi-00 => userx <userx@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbE-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
-1999-03-02 09:44:33 10HmbE-0005vi-00 == jill@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
-1999-03-02 09:44:33 10HmbE-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
-1999-03-02 09:44:33 10HmbE-0005vi-00 ** dick@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<dick@myhost.test.ex>: 550 This one is unknown on RCPT
-1999-03-02 09:44:33 10HmbE-0005vi-00 == harry@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
-1999-03-02 09:44:33 10HmbF-0005vi-00 <= <> R=10HmbE-0005vi-00 U=EXIMUSER P=local S=sss
-1999-03-02 09:44:33 10HmbF-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=bounces
-1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbG-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbF-0005vi-00 => userx <userx@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbF-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
+1999-03-02 09:44:33 10HmbF-0005vi-00 == jill@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
+1999-03-02 09:44:33 10HmbF-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
+1999-03-02 09:44:33 10HmbF-0005vi-00 ** dick@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<dick@myhost.test.ex>: 550 This one is unknown on RCPT
+1999-03-02 09:44:33 10HmbF-0005vi-00 == harry@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after end of data (ddd bytes written)
+1999-03-02 09:44:33 10HmbG-0005vi-00 <= <> R=10HmbF-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmbG-0005vi-00 => :blackhole: <CALLER@myhost.test.ex> R=bounces
+1999-03-02 09:44:33 10HmbG-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbH-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
@@ -169,13 +174,13 @@ RCPT TO
 <<< RCPT TO:<harry@myhost.test.ex>
 250 OK
 DATA
 <<< RCPT TO:<harry@myhost.test.ex>
 250 OK
 DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == jill@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == dick@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbG-0005vi-00 == harry@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
-1999-03-02 09:44:33 10HmbH-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbH-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbH-0005vi-00 == jack@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbH-0005vi-00 == jill@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbH-0005vi-00 == tom@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbH-0005vi-00 == dick@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbH-0005vi-00 == harry@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP timeout after DATA
+1999-03-02 09:44:33 10HmbI-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
@@ -196,9 +201,9 @@ DATA
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
-<<<    id 10HmbH-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+<<<    id 10HmbI-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
 <<< script: 08
 <<< script: 08
-<<< Message-Id: <E10HmbH-0005vi-00@myhost.test.ex>
+<<< Message-Id: <E10HmbI-0005vi-00@myhost.test.ex>
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
@@ -209,10 +214,10 @@ DATA
 QUIT
 <<< QUIT
 220 OK
 QUIT
 <<< QUIT
 220 OK
-1999-03-02 09:44:33 10HmbH-0005vi-00 => jack <jack@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbH-0005vi-00 -> jill <jill@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbH-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbI-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbI-0005vi-00 => jack <jack@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbI-0005vi-00 -> jill <jill@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbJ-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
 220 Welcome to this LMTP simulation
 LHLO
 <<< LHLO myhost.test.ex
@@ -234,9 +239,9 @@ DATA
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
 .
 <<< Received: from CALLER by myhost.test.ex with local (Exim x.yz)
 <<<    (envelope-from <CALLER@myhost.test.ex>)
-<<<    id 10HmbI-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+<<<    id 10HmbJ-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
 <<< script: 09
 <<< script: 09
-<<< Message-Id: <E10HmbI-0005vi-00@myhost.test.ex>
+<<< Message-Id: <E10HmbJ-0005vi-00@myhost.test.ex>
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
 <<< From: CALLER_NAME <CALLER@myhost.test.ex>
 <<< Date: Tue, 2 Mar 1999 09:44:33 +0000
 <<< 
@@ -247,6 +252,29 @@ DATA
 QUIT
 <<< QUIT
 220 OK
 QUIT
 <<< QUIT
 220 OK
-1999-03-02 09:44:33 10HmbI-0005vi-00 => jack <jack@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbI-0005vi-00 -> jill <jill@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbJ-0005vi-00 => jack <jack@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbJ-0005vi-00 -> jill <jill@myhost.test.ex> R=smartuser T=lmtp
+1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbK-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+220 Welcome to this LMTP simulation
+LHLO
+<<< LHLO myhost.test.ex
+250-Hello there
+250 SIZE
+MAIL FROM
+<<< MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO
+<<< RCPT TO:<userx@myhost.test.ex>
+250 OK
+RCPT TO
+<<< RCPT TO:<usery@myhost.test.ex>
+250 OK
+DATA
+<<< DATA
+450 Temporary error
+QUIT
+<<< QUIT
+220 OK
+1999-03-02 09:44:33 10HmbK-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-46): LMTP error after DATA: 450 Temporary error
+1999-03-02 09:44:33 10HmbK-0005vi-00 == usery@myhost.test.ex R=smartuser T=lmtp defer (-46): LMTP error after DATA: 450 Temporary error
index 4d4bc3fa4af5c9c3b3d6e92edff5155f0b878a95..66076a0b0f9d1a849c2958cda9bc9432c95584e3 100644 (file)
@@ -15,7 +15,7 @@
 1999-03-02 09:44:33 End queue run: pid=pppp -qf
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbA-0005vi-00 => lp1 <lp1@myhost.test.ex> R=smartuser T=lmtp
 1999-03-02 09:44:33 End queue run: pid=pppp -qf
 1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
 1999-03-02 09:44:33 10HmbA-0005vi-00 => lp1 <lp1@myhost.test.ex> R=smartuser T=lmtp
-1999-03-02 09:44:33 10HmbA-0005vi-00 == lp2@myhost.test.ex R=smartuser T=lmtp defer (-1): LMTP error after end of data: 450 Number 2 is now delayed
+1999-03-02 09:44:33 10HmbA-0005vi-00 == lp2@myhost.test.ex R=smartuser T=lmtp defer (-46): LMTP error after end of data: 450 Number 2 is now delayed
 1999-03-02 09:44:33 10HmbA-0005vi-00 ** lp3@myhost.test.ex R=smartuser T=lmtp: LMTP error after end of data: 550 Number 3 is now rejected
 1999-03-02 09:44:33 10HmbA-0005vi-00 == lp4@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<lp4@myhost.test.ex>: 450 This one is delayed on RCPT
 1999-03-02 09:44:33 10HmbA-0005vi-00 ** lp5@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<lp5@myhost.test.ex>: 550 This one is unknown on RCPT
 1999-03-02 09:44:33 10HmbA-0005vi-00 ** lp3@myhost.test.ex R=smartuser T=lmtp: LMTP error after end of data: 550 Number 3 is now rejected
 1999-03-02 09:44:33 10HmbA-0005vi-00 == lp4@myhost.test.ex R=smartuser T=lmtp defer (-44): LMTP error after RCPT TO:<lp4@myhost.test.ex>: 450 This one is delayed on RCPT
 1999-03-02 09:44:33 10HmbA-0005vi-00 ** lp5@myhost.test.ex R=smartuser T=lmtp: LMTP error after RCPT TO:<lp5@myhost.test.ex>: 550 This one is unknown on RCPT
index 288fa3e4b10548a7425a40e4d8b4cc0fca2c3a33..43549c14085587f1c0029af1ac582b689b23bc50 100644 (file)
@@ -14,4 +14,4 @@ DATA
 <<< DATA
 354 Send it
 .
 <<< DATA
 354 Send it
 .
-1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@myhost.test.ex R=r1 T=t1 defer (-1): transport filter process failed (127): unable to execute command
+1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@myhost.test.ex R=r1 T=t1 defer (-24): transport filter process failed (127): unable to execute command
index 1465afec440604def5fbcf80433c04f98775d9b5..8e7e54967bfd65538cb0e3355b7e21e574bca701 100644 (file)
@@ -1,5 +1,22 @@
-# rcpt_4xx from server with no retry
+# mail_4xx, rcpt_4xx, data_4xx, lost_connection
 need_ipv4
 need_ipv4
+# MAIL, no pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+dump retry
+sudo rm DIR/spool/db/*
+# RCPT, no pipelining
 #
 server PORT_S
 220 Server ready
 #
 server PORT_S
 220 Server ready
@@ -16,4 +33,127 @@ QUIT
 exim -odi userx@x.y
 ****
 dump retry
 exim -odi userx@x.y
 ****
 dump retry
-no_message_check
+# DATA start, no pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# DATA end, no pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+352 GO AHEAD
+.
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# MAIL, pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# RCPT, pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# DATA start, pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# DATA end, pipelining
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+352 GO AHEAD
+.
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+# lost connection
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+****
+exim -odi userx@x.y
+****
index 06e25956772a8b958fafd06106ac6043e840e15f..02c82ea79c771f113a068c2bc262aa8891f493d5 100644 (file)
@@ -7,5 +7,7 @@ Test message
 ****
 exim -qf
 ****
 ****
 exim -qf
 ****
+exim -DHOSTS=127.0.0.1 -qf
+****
 killdaemon
 no_msglog_check
 killdaemon
 no_msglog_check
index fe197fabdc26b7608762f4b0acc57fec500d7a00..e8a55353ac40f6530119bf7473c93f1fa333f617 100644 (file)
@@ -6,5 +6,7 @@ Test message
 ****
 exim -qf
 ****
 ****
 exim -qf
 ****
+exim -DHOSTS=127.0.0.1 -qf
+****
 killdaemon
 no_msglog_check
 killdaemon
 no_msglog_check
index 224943d442d5665daa97b80d46294f7dc85fe498..36f45e1abd78c05c0624b05c239f521cf9660f1c 100644 (file)
@@ -36,4 +36,8 @@ exim -odi -DIGNORE_QUOTA=true jack jill
 script: 09
 This is a test message.
 ****
 script: 09
 This is a test message.
 ****
+exim -odi userx usery
+script: 10
+This is a test message.
+****
 no_msglog_check
 no_msglog_check
index 442906ef7d0ef541331133a2a2b2dc727ba661a3..30ab686c2f171c96799b05f40cc37d143b6981c8 100644 (file)
@@ -116,7 +116,7 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
   SMTP<< 403 Sorry temp data error
   SMTP>> QUIT
 LOG: MAIN
   SMTP<< 403 Sorry temp data error
   SMTP>> QUIT
 LOG: MAIN
-  == a@test.ex R=client T=send_to_server defer (0): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
+  == a@test.ex R=client T=send_to_server defer (-46): SMTP error from remote mail server after pipelined DATA: host 127.0.0.1 [127.0.0.1]: 403 Sorry temp data error
 LOG: MAIN
   ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<b@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 LOG: MAIN
 LOG: MAIN
   ** b@test.ex R=client T=send_to_server: SMTP error from remote mail server after RCPT TO:<b@test.ex>: host 127.0.0.1 [127.0.0.1]: 550 NO
 LOG: MAIN
index 1b0cdbcea67fde4eb2c03c1d1d6d5d5a359ca3ff..6755d429eeee3e755fadbee9ac0c5112d8bca84e 100644 (file)
@@ -1,8 +1,9 @@
++++++++++++++++++++++++++++
+  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@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
+first failed = time last try = time2 next try = time2 + 0 *
 +++++++++++++++++++++++++++
   R:userx@x.y -44 13377 SMTP error from remote mail server after RCPT TO:<userx@x.y>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
 first failed = time last try = time2 next try = time2 + 0 *
 +++++++++++++++++++++++++++
   R:userx@x.y -44 13377 SMTP error from remote mail server after RCPT TO:<userx@x.y>: host 127.0.0.1 [127.0.0.1]: 452 temporary error
 first failed = time last try = time2 next try = time2 + 0 *
-  T:127.0.0.1:127.0.0.1:1224 dd 65 Connection refused
-first failed = time last try = time2 next try = time2 + 900
 
 ******** SERVER ********
 Listening on port 1224 ... 
 
 ******** SERVER ********
 Listening on port 1224 ... 
@@ -12,9 +13,139 @@ EHLO myhost.test.ex
 250-server id
 250 OK
 MAIL FROM:<CALLER@myhost.test.ex>
 250-server id
 250 OK
 MAIL FROM:<CALLER@myhost.test.ex>
+452 temporary error
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+452 temporary error
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+250 OK
+DATA
+452 temporary error
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+250 OK
+DATA
+352 GO AHEAD
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+       (envelope-from <CALLER@myhost.test.ex>)
+       id 10HmbD-0005vi-00
+       for userx@x.y; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbD-0005vi-00@myhost.test.ex>
+From: CALLER_NAME <CALLER@myhost.test.ex>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
+452 temporary error
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+452 temporary error
+RCPT TO:<userx@x.y>
+Comparison failed - bailing out
+Expected: QUIT
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+452 temporary error
+DATA
+Comparison failed - bailing out
+Expected: QUIT
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+250 OK
+DATA
+452 temporary error
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
 250 OK
 RCPT TO:<userx@x.y>
 250 OK
 RCPT TO:<userx@x.y>
+250 OK
+DATA
+352 GO AHEAD
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+       (envelope-from <CALLER@myhost.test.ex>)
+       id 10HmbL-0005vi-00
+       for userx@x.y; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbL-0005vi-00@myhost.test.ex>
+From: CALLER_NAME <CALLER@myhost.test.ex>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
 452 temporary error
 QUIT
 250 OK
 End of script
 452 temporary error
 QUIT
 250 OK
 End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 OK
+RCPT TO:<userx@x.y>
+End of script
index d3811ad0fb0104876ee5bd08b8d66ea1b9fc5cc5..f1448ba45eb8f4c56538a854072c166a43e7328f 100644 (file)
@@ -1,5 +1,5 @@
 +++++++++++++++++++++++++++
 +++++++++++++++++++++++++++
-  T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 65 SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 DELAY
+  T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 -45 12865 SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 DELAY
 first failed = time last try = time2 next try = time2 + 10
 
 ******** SERVER ********
 first failed = time last try = time2 next try = time2 + 10
 
 ******** SERVER ********
index 76982ea22a1fc6d5754e007b1f919a3b6a0bf2e4..e2c79135d705ce87ae30ac07e456a5572c8f777a 100644 (file)
@@ -1,18 +1,18 @@
 +++++++++++++++++++++++++++
 +++++++++++++++++++++++++++
-  T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 65 SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
+  T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 -45 12865 SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
 first failed = time last try = time2 next try = time2 + 7200
 first failed = time last try = time2 next try = time2 + 7200
-  T:::1:::1:1224:10HmaX-0005vi-00 65 SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
+  T:::1:::1:1224:10HmaX-0005vi-00 -45 12865 SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
 first failed = time last try = time2 next try = time2 + 7200
 first failed = time last try = time2 next try = time2 + 7200
-Transport: 127.0.0.1 [127.0.0.1]:1111 10HmaX-0005vi-00 error 0: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
+Transport: 127.0.0.1 [127.0.0.1]:1111 10HmaX-0005vi-00 error -45: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host 127.0.0.1 [127.0.0.1]: 450 Temporary error
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
-Transport: ::1 [::1]:1111 10HmaX-0005vi-00 error 0: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
+Transport: ::1 [::1]:1111 10HmaX-0005vi-00 error -45: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
 exinext exit code = 0
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
 exinext exit code = 0
-Transport: ::1 [::1]:1111 10HmaX-0005vi-00 error 0: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
+Transport: ::1 [::1]:1111 10HmaX-0005vi-00 error -45: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: host ::1 [::1]: 450 Temporary error
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
   first failed: 07-Mar-2000 12:21:52
   last tried:   07-Mar-2000 12:21:52
   next try at:  07-Mar-2000 12:21:52
index b7255ca2e407dc3444ab54a7c2ae7160e9367e9f..cf3412153ba01e6ff953b1b2f4e6e6e95b07a751 100644 (file)
@@ -1,5 +1,5 @@
 +++++++++++++++++++++++++++
 +++++++++++++++++++++++++++
-  T:jack@myhost.test.ex -0 LMTP error after end of data: 450 Number 2 is now delayed
+  T:jack@myhost.test.ex -46 12800 LMTP error after end of data: 450 Number 2 is now delayed
 first failed = time last try = time2 next try = time2 + 0
   T:tom@myhost.test.ex -44 12800 LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
 first failed = time last try = time2 next try = time2 + 60
 first failed = time last try = time2 next try = time2 + 0
   T:tom@myhost.test.ex -44 12800 LMTP error after RCPT TO:<tom@myhost.test.ex>: 450 This one is delayed on RCPT
 first failed = time last try = time2 next try = time2 + 60