]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.7-20090803
authorWietse Venema <wietse@porcupine.org>
Mon, 3 Aug 2009 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:35:37 +0000 (06:35 +0000)
postfix/HISTORY
postfix/RELEASE_NOTES
postfix/conf/postmulti-script
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/proto/postconf.proto
postfix/src/global/mail_version.h
postfix/src/smtpd/smtpd_check.c

index 9cd139277c6ec824032569b5d30cac6bf1aa0ba5..1fc1ec5f622b2168a1e62486853719a75ae9802a 100644 (file)
@@ -15324,3 +15324,20 @@ Apologies for any names omitted.
        Cleanup: ${multi_instance_name:postfix}${multi_instance_name
        ?$multi_instance_name} garbage in Postfix logging is now
        hopefully gone.  File: global/mail_task.c.
+
+20090715
+
+       Documentation: as of Postfix 2.6, the reject_unauth_pipelining
+       feature can be used meaningfully at any protocol stage.
+       File: proto/postconf.proto.
+
+20090803
+
+       Workaround: with some local DNS servers including BIND, it
+       is possible that A or MX lookups succeed, while NS lookups
+       for the same domains time out.  Spammers use this to avoid
+       access restrictions.  To deal with future variations of
+       this, check_{client,helo,sender,etc}_{mx,ns,etc}_access no
+       longer tolerate any lookup failures. Instead, they reply
+       with $access_map_defer_code or $access_map_reject_code as
+       appropriate. File: smtpd/smtpd_check.c.
index 620a44132a7ec8da5a8ee391c79e90100686d10b..31e75432360ee32acd3bf520262e0ad51e798b1f 100644 (file)
@@ -14,6 +14,22 @@ specifies the release date of a stable release or snapshot release.
 If you upgrade from Postfix 2.5 or earlier, read RELEASE_NOTES-2.6
 before proceeding.
 
+Incompatibility with snapshot 20090803-nonprod
+==============================================
+
+The check_{client,helo,sender,etc}_{mx,ns,etc}_access features no
+longer tolerate any lookup failures. Instead, they now reply with
+$access_map_defer_code or $access_map_reject_code as appropriate.
+
+The reason for this change is that spammers are using tricks where
+A or MX lookups succeed while NS lookups for the same domains fail,
+depending local DNS infrastructure details.  The change deals with
+future variants of this anomalous behavior.
+
+As a side effect, non-existent domain names in HELO commands will
+now trigger a REJECT action with check_helo_{mx,ns}_access, where
+previously such commands were silently permitted.
+
 Incompatibility with snapshot 20090606
 ======================================
 
index 1c3f3ad886da540c4f40b03b9a57d9655a69d9e2..417a8718ae0f634276c643c82f93b4f1333c8796 100644 (file)
@@ -229,15 +229,10 @@ deport)
 
 destroy)
 
-    # "postmulti -e destroy" will remove an entire instance only
-    # when invoked immediately after "postmulti -e create". Trying
-    # to remove more files is too dangerous.
-    #
-    # By design, postfix-owned directory trees are not trusted, and
-    # any action within those directory trees must not affect files
-    # outside those trees (e.g. via symlink race attacks). Therefore
-    # we use only known-to-be-safe names and nothing with a / because
-    # that could be subject to races.
+    # "postmulti -e destroy" will remove an entire instance only when
+    # invoked immediately after "postmulti -e create" (i.e. before
+    # other files are added to the instance). We delete only known
+    # safe names without "/".
     #
     QUEUE_SUBDIRS="active bounce corrupt defer deferred flush hold \
     incoming maildrop pid private public saved trace"
index bcdf362d95a85e10b1956602208ab51e7db6b0c0..9dced2a3fba35cf7076aab6cf1743ed86943efe2 100644 (file)
@@ -10735,11 +10735,15 @@ of time where it is not allowed, or when the client sends SMTP
 commands ahead of time without knowing that Postfix actually supports
 ESMTP command pipelining. This stops mail from bulk mail software
 that improperly uses ESMTP command pipelining in order to speed up
-deliveries. <br> Note: <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a> is not useful
-outside <a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a> when 1) the client uses ESMTP (EHLO
-instead of HELO) and 2) with "<a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> = yes" (the
-default).  The use of <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a> in the other
-restriction contexts is therefore not recommended.  </dd>
+deliveries.
+<br> With Postfix 2.6 and later, the SMTP server sets a per-session
+flag whenever it detects illegal pipelining, including pipelined
+EHLO or HELO commands. The <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a> feature simply
+tests whether the flag was set at any point in time during the
+session.
+<br> With older Postfix versions, <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a> checks
+the current status of the input read queue, and its usage is not
+recommended in contexts other than <a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a>.  </dd>
 
 <dt><b><a name="reject">reject</a></b></dt>
 
index 76c201bf9f2ea4cc4a0df28e6c9b7c14b283bb8f..e984d837b89acaf36af8e04887b134fed2908a78 100644 (file)
@@ -6574,11 +6574,15 @@ ESMTP command pipelining. This stops mail from bulk mail software
 that improperly uses ESMTP command pipelining in order to speed up
 deliveries.
 .br
-Note: reject_unauth_pipelining is not useful
-outside smtpd_data_restrictions when 1) the client uses ESMTP (EHLO
-instead of HELO) and 2) with "smtpd_delay_reject = yes" (the
-default).  The use of reject_unauth_pipelining in the other
-restriction contexts is therefore not recommended.
+With Postfix 2.6 and later, the SMTP server sets a per-session
+flag whenever it detects illegal pipelining, including pipelined
+EHLO or HELO commands. The reject_unauth_pipelining feature simply
+tests whether the flag was set at any point in time during the
+session.
+.br
+With older Postfix versions, reject_unauth_pipelining checks
+the current status of the input read queue, and its usage is not
+recommended in contexts other than smtpd_data_restrictions.
 .IP "\fBreject\fR"
 Reject the request. This restriction is useful at the end of
 a restriction list, to make the default policy explicit.  The
index 348a7927b27985738d417cd974c562ea9458ce91..1c988ec03d601ed805b753e0e293a597562f125f 100644 (file)
@@ -4939,11 +4939,15 @@ of time where it is not allowed, or when the client sends SMTP
 commands ahead of time without knowing that Postfix actually supports
 ESMTP command pipelining. This stops mail from bulk mail software
 that improperly uses ESMTP command pipelining in order to speed up
-deliveries. <br> Note: reject_unauth_pipelining is not useful
-outside smtpd_data_restrictions when 1) the client uses ESMTP (EHLO
-instead of HELO) and 2) with "smtpd_delay_reject = yes" (the
-default).  The use of reject_unauth_pipelining in the other
-restriction contexts is therefore not recommended.  </dd>
+deliveries.
+<br> With Postfix 2.6 and later, the SMTP server sets a per-session
+flag whenever it detects illegal pipelining, including pipelined
+EHLO or HELO commands. The reject_unauth_pipelining feature simply
+tests whether the flag was set at any point in time during the
+session.
+<br> With older Postfix versions, reject_unauth_pipelining checks
+the current status of the input read queue, and its usage is not
+recommended in contexts other than smtpd_data_restrictions.  </dd>
 
 <dt><b><a name="reject">reject</a></b></dt>
 
index 877572a0205a5212f9847aba5c69b2db28fc3e16..d93cc436143ed7133a502b6ac5291149f46fe965 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20090712"
+#define MAIL_RELEASE_DATE      "20090803"
 #define MAIL_VERSION_NUMBER    "2.7"
 
 #ifdef SNAPSHOT
index ea3dfbf9c77589103e6206b49a9d9d748bc84353..74d86ec4782cd335aa1855a17521a6b447270134 100644 (file)
@@ -2575,7 +2575,14 @@ static int check_server_access(SMTPD_STATE *state, const char *table,
     if (dns_status != DNS_OK) {
        msg_warn("Unable to look up %s host for %s: %s", dns_strtype(type),
                 domain && domain[1] ? domain : name, dns_strerror(h_errno));
-       return (SMTPD_CHECK_DUNNO);
+       /* No mercy for DNS failure. */
+       return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+                                  dns_status == DNS_NOTFOUND ?
+                                  var_map_reject_code : var_map_defer_code,
+                                  smtpd_dsn_fix("4.1.8", reply_class),
+                                  "<%s>: %s rejected: %s",
+                                  reply_name, reply_class,
+                                  "Domain not found"));
     }
 
     /*
@@ -2600,7 +2607,16 @@ static int check_server_access(SMTPD_STATE *state, const char *table,
            msg_warn("Unable to look up %s host %s for %s %s: %s",
                     dns_strtype(type), (char *) server->data,
                     reply_class, reply_name, MAI_STRERROR(aierr));
-           continue;
+           /* No mercy for DNS failure. */
+           status = smtpd_check_reject(state,
+                                       MAIL_ERROR_POLICY,
+                                       aierr == EAI_NONAME ?
+                                  var_map_reject_code : var_map_defer_code,
+                                       smtpd_dsn_fix("4.1.8", reply_class),
+                                       "<%s>: %s rejected: %s",
+                                       reply_name, reply_class,
+                                       "Domain not found");
+           CHECK_SERVER_RETURN(status);
        }
        /* Now we must also free the addrinfo result. */
        if (msg_verbose)