Return remote errors for LMTP over pipe (so now it's the same as LMTP
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 7 Nov 2006 11:28:05 +0000 (11:28 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 7 Nov 2006 11:28:05 +0000 (11:28 +0000)
over TCP/IP).

doc/doc-txt/ChangeLog
src/src/transports/lmtp.c
test/mail/5101.copied

index 99e28d0..53b8209 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.425 2006/11/06 15:50:12 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.426 2006/11/07 11:28:05 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -247,6 +247,11 @@ PH/36 After a 4xx response to a RCPT error, that address was delayed (in queue
       can be overridden by setting address_retry_include_sender=false in the
       smtp transport.
 
+PH/37 For LMTP over TCP/IP (the smtp transport), error responses from the
+      remote server are returned as part of bounce messages. This was not
+      happening for LMTP over a pipe (the lmtp transport), but now it is the
+      same for both kinds of LMTP.
+
 
 Exim version 4.63
 -----------------
index 969e45d..59b967a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/lmtp.c,v 1.8 2006/03/09 15:10:16 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/lmtp.c,v 1.9 2006/11/07 11:28:05 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -606,6 +606,7 @@ for (addr = addrlist; addr != NULL; addr = addr->next)
     if (errno != 0 || buffer[0] == 0) goto RESPONSE_FAILED;
     addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
       string_printing(buffer));
+    setflag(addr, af_pass_message);   /* Allow message to go to user */
     if (buffer[0] == '5') addr->transport_return = FAIL; else
       {
       addr->basic_errno = ERRNO_RCPT4XX;
@@ -697,6 +698,7 @@ if (send_data)
       addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
         string_printing(buffer));
       addr->transport_return = (buffer[0] == '5')? FAIL : DEFER;
+      setflag(addr, af_pass_message);   /* Allow message to go to user */
       }
     }
   }
index e76adad..4704c33 100644 (file)
@@ -34,6 +34,7 @@ A message that you sent could not be delivered to one or more of its
 recipients. This is a permanent error. The following address(es) failed:
 
   jack@myhost.test.ex
+    LMTP error after end of data: 550 Number 2 fails
 
 ------ This is a copy of the message, including all the headers. ------
 
@@ -69,6 +70,7 @@ A message that you sent could not be delivered to one or more of its
 recipients. This is a permanent error. The following address(es) failed:
 
   jack@myhost.test.ex
+    LMTP error after end of data: 550 Number 2 fails
 
 ------ This is a copy of the message, including all the headers. ------