]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-1.1.11-20021114
authorWietse Venema <wietse@porcupine.org>
Thu, 14 Nov 2002 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:28:26 +0000 (06:28 +0000)
postfix/HISTORY
postfix/conf/sample-smtpd.cf
postfix/html/postsuper.1.html
postfix/html/uce.html
postfix/man/man1/postsuper.1
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/postsuper/postsuper.c
postfix/src/smtp/smtp_chat.c
postfix/src/smtpd/smtpd_chat.c
postfix/src/smtpd/smtpd_check.c

index 1d90d134b981bf0b9cc53953d52f265be8359f95..518fa5514e5b075cd9d67b50af9efc254612b28f 100644 (file)
@@ -7199,6 +7199,26 @@ Apologies for any names omitted.
        Bugfix: a misguided change to the .forward macro expansion
        filter broke .forward file lookup.
 
+       Bugfix: missing defer_if_permit test in smtpd_data_restrictions.
+       Victor Duchovni. File:  smtpd/smtpd_check.c.
+
+20021112
+
+       Robustness: increase the mime_nesting_limit from 20 to 100,
+       so that bounces can't loop. Each bounces increases the MIME
+       nesting level by one.  Ralf Hildebrandt and Victor Duchovni.
+
+20021113
+
+       Robustness: reinstated SMTP client command flushing to
+       avoid pipeline stalls.  File: smtp/smtp_chat.c.
+
+20021114
+
+       Robustness: distinguish between timeout and "lost connection"
+       when the SMTP server is unable to send a reply to the remote
+       client. File: smtpd/smtpd_chat.c.
+
 Open problems:
 
        Low: revise other local delivery agent duplicate filters.
index b781213a9a09c385ff049f8d33addace455c7061..34d79ce2a88cf55f910823e0a89ca44d2f2c485f 100644 (file)
@@ -553,7 +553,7 @@ unknown_address_reject_code = 450
 
 # The unknown_client_reject_code parameter specifies the SMTP server
 # response when a client without address to name mapping violates
-# the reject_unknown_clients restriction.
+# the reject_unknown_client restriction.
 #
 # Do not change this unless you have a complete understanding of RFC 821.
 #
index 41c331be12d0a7e5962ae5da1db603c1955d8d22..2eb68f224d98ca2fd643d75e63d976f1ffa87b3b 100644 (file)
@@ -34,7 +34,7 @@ POSTSUPER(1)                                         POSTSUPER(1)
               input.  For  example, to delete all mail from or to
               <b>user@example.com</b>:
 
-              mailq | awk  'BEGIN { RS = "" } \
+              mailq | tail +2 | awk  'BEGIN { RS = "" } \
                   / user@example\.com$/ { print $1 } \
               ' | tr -d '*!' | postsuper -d -
 
index 525f5f9264f6c3a327bfe64c5db11a05850297ed..fda4d043daacd6a4c0be26e348983f7f2354adc1 100644 (file)
@@ -358,9 +358,10 @@ reject_unknown_client</b>
 <a name="reject_unknown_client">
 
 <dt> <b>reject_unknown_client</b> <dd> Reject the request when the
-client IP address has no PTR record in the DNS.  The
-<b>unknown_client_reject_code</b> parameter specifies the response
-code to rejected requests (default:  <b>450</b>).
+client IP address has no PTR (address to name) record in the DNS,
+or when the PTR record does not have a matching A (name to address)
+record.  The <b>unknown_client_reject_code</b> parameter specifies
+the response code to rejected requests (default:  <b>450</b>).
 
 <p>
 
index d0e70879d6b7d149665a033401c5d596a9108e54..3d98b8b0ae96af239354bb356a7c89b829490036 100644 (file)
@@ -38,7 +38,7 @@ If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
 queue IDs from standard input. For example, to delete all mail
 from or to \fBuser@example.com\fR:
 .sp
-mailq | awk  \'BEGIN { RS = "" } \e
+mailq | tail +2 | awk  \'BEGIN { RS = "" } \e
 .ti +4
 / user@example\e.com$/ { print $1 } \e
 .br
index 7f308cab2185f516ddaa974c23307cf86f60143e..a7677b653c8724f51faaf1ea990acb4337f67c8b 100644 (file)
@@ -1564,7 +1564,7 @@ extern int var_qattr_count_limit;
   * MIME support.
   */
 #define VAR_MIME_MAXDEPTH              "mime_nesting_limit"
-#define DEF_MIME_MAXDEPTH              20
+#define DEF_MIME_MAXDEPTH              100
 extern int var_mime_maxdepth;
 
 #define VAR_MIME_BOUND_LEN             "mime_boundary_length_limit"
index 027292bc830690bcc92ad44f38a34a07ed4f4c6d..03e2ff671233998b90956eeb3919f3d773e34508 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change the patchlevel and the release date. Snapshots change the
   * release date only, unless they include the same bugfix as a patch release.
   */
-#define MAIL_RELEASE_DATE      "20021109"
+#define MAIL_RELEASE_DATE      "20021114"
 
 #define VAR_MAIL_VERSION       "mail_version"
 #define DEF_MAIL_VERSION       "1.1.11-" MAIL_RELEASE_DATE
index d830fe79a2ab72af14937a700b1ba465e693b8a7..46876ee9d2840b46dcc8b7afc6aa40e1ab597714 100644 (file)
@@ -32,7 +32,7 @@
 /*     queue IDs from standard input. For example, to delete all mail
 /*     from or to \fBuser@example.com\fR:
 /* .sp
-/*     mailq | awk  \'BEGIN { RS = "" } \e
+/*     mailq | tail +2 | awk  \'BEGIN { RS = "" } \e
 /* .ti +4
 /*     / user@example\e.com$/ { print $1 } \e
 /* .br
index d33a90e4e0454931d72d45fe401dd557d9788f23..092a5d19772c62cecf49d10a685928616023080c 100644 (file)
@@ -149,6 +149,20 @@ void    smtp_chat_cmd(SMTP_STATE *state, char *fmt,...)
      * Send the command to the SMTP server.
      */
     smtp_fputs(STR(state->buffer), LEN(state->buffer), session->stream);
+
+    /*
+     * Flush unsent data to avoid timeouts after slow DNS lookups.
+     */
+    if (time((time_t *) 0) - vstream_ftime(session->stream) > 10)
+       vstream_fflush(session->stream);
+
+    /*
+     * Abort immediately if the connection is broken.
+     */
+    if (vstream_ftimeout(session->stream))
+        vstream_longjmp(session->stream, SMTP_ERR_TIME);
+    if (vstream_ferror(session->stream))
+       vstream_longjmp(session->stream, SMTP_ERR_EOF);
 }
 
 /* smtp_chat_resp - read and process SMTP server response */
index ae2cf344b28a9679ca93c97955d4e21ed8541dc0..692a52c6ebee7db9b1666ac5392fded8d967b24e 100644 (file)
@@ -176,6 +176,8 @@ void    smtpd_chat_reply(SMTPD_STATE *state, char *format,...)
     /*
      * Abort immediately if the connection is broken.
      */
+    if (vstream_ftimeout(state->client))
+       vstream_longjmp(state->client, SMTP_ERR_TIME);
     if (vstream_ferror(state->client))
        vstream_longjmp(state->client, SMTP_ERR_EOF);
 }
index b2ab5ebd36f12390999cc7434581de47e8363c1d..eb1679050a1e7d045950c713f017c65806d0ff67 100644 (file)
@@ -3269,8 +3269,8 @@ char   *smtpd_check_data(SMTPD_STATE *state)
     }
 
     /*
-     * Reset the defer_if_permit flag. This should not be necessary but we do
-     * it just in case.
+     * Reset the defer_if_permit flag. This is necessary when some recipients
+     * were accepted but the last one was rejected.
      */
     state->defer_if_permit.active = 0;
 
@@ -3284,6 +3284,15 @@ char   *smtpd_check_data(SMTPD_STATE *state)
     if (status == 0 && data_restrctions->argc)
        status = generic_checks(state, data_restrctions,
                                "DATA", SMTPD_NAME_DATA, NO_DEF_ACL);
+
+    /*
+     * Force permission into deferral when some earlier temporary error may
+     * have prevented us from rejecting mail, and report the earlier problem.
+     */
+    if (status != SMTPD_CHECK_REJECT && state->defer_if_permit.active)
+       status = smtpd_check_reject(state, state->defer_if_permit.class,
+                                 "%s", STR(state->defer_if_permit.reason));
+
     if (state->rcpt_count > 1)
        state->recipient = saved_recipient;