]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-1.1.11-20020906
authorWietse Venema <wietse@porcupine.org>
Fri, 6 Sep 2002 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:28:13 +0000 (06:28 +0000)
postfix/HISTORY
postfix/RELEASE_NOTES
postfix/conf/post-install
postfix/conf/sample-rate.cf
postfix/html/rate.html
postfix/src/bounce/bounce.c
postfix/src/global/mail_version.h
postfix/src/qmqpd/qmqpd.c
postfix/src/smtpd/smtpd_check.c

index 6d46badad63945f3a9e6662094829bd9e68ac770..f31d85e1ab3ec698dbc54509b420cf01629785a6 100644 (file)
@@ -6888,6 +6888,11 @@ Apologies for any names omitted.
        Feature: "FILTER transport:nexthop" is now also available
        in SMTPD access tables.
 
+20020826
+
+       Workaround: HP-UX 11 accept() fails with ENOBUFS when the
+       client disconnects early. File: sane_accept.c.
+
 20020901
 
        Cleanup: postfix-install no longer installs all the manual
@@ -6901,6 +6906,10 @@ Apologies for any names omitted.
        of input.  Problem fix by Christian Kratzer, cksoft.de.
        File:  auxiliary/rmail/rmail.
 
+       Feature: specify "maximal_queue_lifetime = 0" for mail that
+       should be returned immediately after the first unsuccessful
+       delivery attempt. Files: qmgr/qmgr.c, nqmgr/nqmgr.c.
+
 20020904
 
        Bugfix: qmail compatibility: qmqpd should support any
index 3d27318b14926ab3a0f340ecf25efb5920816058..c5df4ce846e8e7c529280895236e125091a1c874 100644 (file)
@@ -12,7 +12,16 @@ snapshot release).  Patches change the patchlevel and the release
 date. Snapshots change only the release date, unless they include
 the same bugfixes as a patch release.
 
-Major changes with Postfix snapshot 1.1.11-20020XXX
+Incompatible changes with Postfix snapshot 1.1.11-20020906
+==========================================================
+
+The permit_mx_backup restriction is made more strict. With older
+versions, some DNS failures would cause mail to be accepted anyway,
+and some DNS failures would cause mail to be rejected by later
+restrictions in the same restriction list.  The improved version
+will defer delivery when Postfix could make the wrong decision.
+
+Major changes with Postfix snapshot 1.1.11-20020906
 ===================================================
 
 More sophisticated handling of UCE-related DNS lookup errors.
@@ -20,20 +29,21 @@ These cause Postfix to not give up so easily, so that some deliveries
 will not have to be deferred after all.  This affects the following
 restrictions:
 
-- permit_mx_backup (defer the request if a subsequent restriction
-would cause the request to be rejected, accept the request if a
-subsequent restriction would cause the request to be accepted
-anyway);
-
-- reject_unknown_hostname, reject_unknown_sender_domain and
-reject_unknown_recipient_domain (defer the request if a subsequent
-restriction would cause the request to be accepted, reject the
+- After DNS lookup failure, permit_mx_backup will now accept the
 request if a subsequent restriction would cause the request to be
-rejected anyway).
+accepted anyway, and will defer the request if a subsequent
+restriction would cause the request to be rejected.
+
+- After DNS lookup failure, reject_unknown_hostname (the hostname
+given in HELO/EHLO commands) reject_unknown_sender_domain and
+reject_unknown_recipient_domain will now reject the request if a
+subsequent restriction would cause the request to be rejected
+anyway, and will defer the request if a subsequent restriction
+would cause the request to be accepted.
 
 Specify "smtpd_data_restrictions = reject_unauth_pipelining" to
 block mail from SMTP clients that send message content before
-Postfix has replied to the DATA command.
+Postfix has replied to the SMTP DATA command.
 
 Incompatible changes with Postfix snapshot 1.1.11-20020819
 ==========================================================
index 4fd59c3124507c95318194d47313c8674f8fbf67..b9bdfd368c459d8a48139cc1d0cdec3efe51859d 100644 (file)
@@ -249,7 +249,7 @@ test -d "$config_directory" || {
 }
 
 test -f $config_directory/postfix-files || {
-    $0: Error: $config_directory/postfix-files is not a file. 1>&2
+    echo $0: Error: $config_directory/postfix-files is not a file. 1>&2
     exit 1
 }
 
index 8cd1bb4e4d128b2664c0d1aa8a55924a86e7052f..0de56f928a2c478b7b5c112e4df6d5bd7c31ef44 100644 (file)
@@ -42,6 +42,8 @@ maximal_backoff_time = 4000s
 # Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
 # The default time unit is d (days).
 #
+# Specify 0 when mail delivery should be tried only once.
+#
 maximal_queue_lifetime = 5d
 
 # The minimal_backoff_time parameter specifies the minimal time
index 11fa2dc43ed1c1cbf4e46d9f4512df2439234420..aa1cffff5d401206efc14be4574e4ccf41cdac4e 100644 (file)
@@ -302,7 +302,8 @@ often the queue manager scans the queue for deferred mail.
 
 <dt> <b>maximal_queue_lifetime</b> (default: 5 days) <dd> How
 long a message stays in the queue before it is sent back as
-undeliverable.
+undeliverable. Specify 0 for mail that should be returned
+immediately after the first unsuccessful delivery attempt.
 
 <p>
 
index f176e222fb922c841ba09535626e60533903caa7..dd92ec8f56c13395f8cc086c16c96474d84e0d9a 100644 (file)
@@ -419,7 +419,7 @@ int     main(int argc, char **argv)
        0,
     };
     static CONFIG_TIME_TABLE time_table[] = {
-       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 1, 8640000,
+       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 0, 8640000,
        VAR_DELAY_WARN_TIME, DEF_DELAY_WARN_TIME, &var_delay_warn_time, 0, 0,
        0,
     };
index 4373cc45ae114abd437a90e6061ef23f5f660539..68abbfa228a83d55e5576f27167df6904060de56 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      "20020905"
+#define MAIL_RELEASE_DATE      "20020906"
 
 #define VAR_MAIL_VERSION       "mail_version"
 #define DEF_MAIL_VERSION       "1.1.11-" MAIL_RELEASE_DATE
index ff331c355704c4ce14b9b45a26f40a8fe2a019e6..8b7cb7087d7b56adfc5b54351f6036880d25b7b7 100644 (file)
 #include <quote_822_local.h>
 #include <match_parent_style.h>
 #include <lex_822.h>
+#include <verp_sender.h>
 
 /* Single-threaded server skeleton. */
 
@@ -217,7 +218,7 @@ static void qmqpd_copy_sender(QMQPD_STATE *state)
     char   *end_prefix;
     char   *end_origin;
     int     verp_requested;
-    static char verp_chars[] = "-=";
+    static char verp_delims[] = "-=";
 
     /*
      * If the sender address looks like prefix@origin-@[], then request
@@ -236,7 +237,12 @@ static void qmqpd_copy_sender(QMQPD_STATE *state)
         && --end_prefix < end_origin - 2       /* non-null origin */
         && end_prefix > STR(state->buf));      /* non-null prefix */
     if (verp_requested) {
-       verp_chars[0] = end_prefix[0];
+       verp_delims[0] = end_prefix[0];
+       if (verp_delims_verify(verp_delims) != 0) {
+           state->err |= CLEANUP_STAT_CONT;    /* XXX */
+           vstring_sprintf(state->why_rejected, "Invalid VERP delimiters: \"%s\". Need two characters from \"%s\"",
+                           verp_delims, var_verp_filter);
+       }
        memmove(end_prefix, end_prefix + 1, end_origin - end_prefix - 1);
        vstring_truncate(state->buf, end_origin - STR(state->buf) - 1);
     }
@@ -245,7 +251,7 @@ static void qmqpd_copy_sender(QMQPD_STATE *state)
        state->err = CLEANUP_STAT_WRITE;
     if (verp_requested)
        if (state->err == CLEANUP_STAT_OK
-           && rec_put(state->cleanup, REC_TYPE_VERP, verp_chars, 2) < 0)
+           && rec_put(state->cleanup, REC_TYPE_VERP, verp_delims, 2) < 0)
            state->err = CLEANUP_STAT_WRITE;
     state->sender = mystrndup(STR(state->buf), LEN(state->buf));
 }
@@ -535,7 +541,8 @@ static void qmqpd_receive(QMQPD_STATE *state)
      * Start the message content segment, prepend our own Received: header,
      * and write the message content.
      */
-    qmqpd_write_content(state);
+    if (state->err == 0)
+       qmqpd_write_content(state);
 
     /*
      * Close the queue file.
index a426ab4ac30f19e8dd604c523cad505dd9ad6b20..dafc2373451dfa8b7d85594b8c648bcb71bd5ce9 100644 (file)
@@ -2219,9 +2219,9 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions,
 
        if (strchr(name, ':') != 0) {
            if (def_acl == NO_DEF_ACL) {
-               msg_warn("specify one of (%s, %s, %s, %s, %s) before restriction \"%s\"",
+               msg_warn("specify one of (%s, %s, %s, %s, %s) before %s restriction \"%s\"",
                         CHECK_CLIENT_ACL, CHECK_HELO_ACL, CHECK_SENDER_ACL,
-                        CHECK_RECIP_ACL, CHECK_ETRN_ACL, name);
+                        CHECK_RECIP_ACL, CHECK_ETRN_ACL, reply_class, name);
                longjmp(smtpd_check_buf, smtpd_check_reject(state,
                    MAIL_ERROR_SOFTWARE, "451 Server configuration error"));
            }
@@ -2494,7 +2494,7 @@ char   *smtpd_check_helo(SMTPD_STATE *state, char *helohost)
      */
 #define SMTPD_CHECK_PUSH(backup, current, new) { \
        backup = current; \
-       current = (new ? mystrdup(new) : new); \
+       current = (new ? mystrdup(new) : 0); \
     }
 
 #define SMTPD_CHECK_POP(current, backup) { \
@@ -2818,10 +2818,14 @@ char   *smtpd_check_data(SMTPD_STATE *state)
 
     /*
      * Minor kluge so that we can delegate work to the generic routine. We
-     * provide no recipient information, because this restriction applies to
-     * all recipients alike. Picking a specific recipient would be wrong.
+     * provide no recipient information in the case of multiple recipients,
+     * This restriction applies to all recipients alike, and logging only one
+     * of them would be misleading.
      */
-    SMTPD_CHECK_PUSH(saved_recipient, state->recipient, 0);
+    if (state->rcpt_count > 1) {
+       saved_recipient = state->recipient;
+       state->recipient = 0;
+    }
 
     /*
      * Apply restrictions in the order as specified.
@@ -2833,8 +2837,10 @@ 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);
+    if (state->rcpt_count > 1)
+       state->recipient = saved_recipient;
 
-    SMTPD_CHECK_RCPT_RETURN(status == SMTPD_CHECK_REJECT ? STR(error_text) : 0);
+    return (status == SMTPD_CHECK_REJECT ? STR(error_text) : 0);
 }
 
 #ifdef TEST