]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.11.7 v2.11.7
authorWietse Venema <wietse@porcupine.org>
Sat, 10 Oct 2015 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Mon, 12 Oct 2015 04:35:27 +0000 (00:35 -0400)
13 files changed:
postfix/HISTORY
postfix/README_FILES/INSTALL
postfix/conf/postmulti-script
postfix/html/INSTALL.html
postfix/makedefs
postfix/proto/INSTALL.html
postfix/src/cleanup/cleanup_message.c
postfix/src/dns/dns.h
postfix/src/global/mail_version.h
postfix/src/global/xtext.c
postfix/src/postmulti/postmulti.c
postfix/src/smtpd/smtpd_haproxy.c
postfix/src/util/scan_dir.c

index 04f6a320921eda85bed2ca2bf063df8353cf33e8..cd7b6ac668955d4e6fd4c459b782895915636ff7 100644 (file)
@@ -19684,3 +19684,47 @@ Apologies for any names omitted.
        SSLv2 or SSLv3.  See the RELEASE_NOTES file for how to get
        the old settings back. Files: global/mail_params.h,
        proto/postconf.proto, and files derived from those.
+
+20150903
+
+       Workaround: disable DNSSEC support for AIX 7x and earlier.
+       The AIX 6/7 resolver(5) API defines RES_USE_DNSSEC without
+       defining the "ad" bit.  Viktor Dukhovni.  Files: makedefs,
+       proto/INSTALL.html, dns/dns.h.
+
+20150923
+
+       Bugfix (introduced: 20120531-617): the Postfix SMTP server
+       used a larger-than-1 VSTREAM buffer to read the HAProxy
+       connection hand-off information. This broke TLS wrappermode,
+       as the TLS helo packet would end up in the plaintext VSTREAM
+       buffer. Reported by Lukas Erlacher.  File: smtpd/smtpd_haproxy.c.
+
+20150924
+
+       Bugfix (introduced: 20090216-24): incorrect postmulti error
+       message. Reported by Patrik Koetter. Fix by Viktor Dukhovni.
+       File: postmulti/postmulti.c.
+
+       Workaround: don't create a new instance when the template
+       main.cf and master.cf files are missing, as happens on
+       Debian-like systems. Viktor Dukhovni. File: conf/postmulti-script.
+
+20150925
+
+       Bugfix (introduced: 19970309, fixed 20150421 in development
+       release): reset errno before calling readdir(), in order
+       to distinguish between an end-of-directory and an error
+       condition. File: scandir.c.
+
+20150930
+
+       Bugfix (introduced: 20040124): Milter client panic while
+       adding a header, because the PREPEND action used the same
+       output function for header_checks and body_checks.  Viktor
+       Dukhovni and Wietse. File: cleanup/cleanup_message.c.
+
+       Bugfix (introduced: 20031128): xtext_unquote() did not
+       propagate error reports from xtext_unquote_append(), causing
+       the decoder to return partial ouput, instead of rejecting
+       malformed input. Fix by Krzysztof Wojta.  File: global/xtext.c.
index 3a473abb1fef53831fdcf6957b358a61c7f474f4..3d854cf416a333ca8fbded0ae948921b2555162c 100644 (file)
@@ -255,6 +255,9 @@ The following is an extensive list of names and values.
 ||                             |probably should also override DEF_DB_TYPE as  |
 ||                             |described in section 4.4.                     |
 |_\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
+||-DNO_DNSSEC                  |Do not build with DNSSEC support, even if the |
+||                             |resolver library appears to support it.       |
+|_\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |
 ||                             |Do not build with Solaris /dev/poll support.  |
 ||-DNO_DEVPOLL                 |By default, /dev/poll support is compiled in  |
 ||                             |on Solaris versions that are known to support |
index 417a8718ae0f634276c643c82f93b4f1333c8796..c68bd0ce87c7013216a0e30e5565297fb68415c2 100644 (file)
@@ -127,6 +127,11 @@ create|import)
                fatal "'$config_directory' lacks a master.cf file"
        }
 
+       test -f $daemon_directory/main.cf ||
+           fatal "Missing main.cf prototype: $daemon_directory/main.cf"
+       test -f $daemon_directory/master.cf ||
+           fatal "Missing master.cf prototype: $daemon_directory/master.cf"
+
        # Create instance-specific directories
        #
        test -d $config_directory ||
index 7eb29a05d32dc33c3178c2a8242acecbe9279a56..7c12f1106c6060a28e92d4f4f287a2fb9452b7f8 100644 (file)
@@ -383,6 +383,10 @@ platforms that are known to support this feature. If you override
 this, then you probably should also override DEF_DB_TYPE as described
 in section 4.4.  </td> </tr>
 
+<tr> <td> </td> <td> -DNO_DNSSEC </td> <td> Do not build with DNSSEC
+support, even if the resolver library appears to support it. </td>
+</tr>
+
 <tr> <td> </td> <td> -DNO_DEVPOLL </td> <td> Do not build with
 Solaris <tt>/dev/poll</tt> support. By default, <tt>/dev/poll</tt>
 support is compiled in on Solaris versions that are known to support
index 3551ff035a73ad7fe4a0c8dacb684302d9938877..de600f5c216ead0f63180af9735d03c123e0f01e 100644 (file)
@@ -31,6 +31,9 @@
 #      Do not build with Solaris /dev/poll support.
 #      By default, /dev/poll support is compiled in on platforms that
 #      are known to support it.
+# .IP \fB-DNO_DNSSEC\fR
+#      Do not build with DNSSEC support, even if the resolver
+#      library appears to support it.
 # .IP \fB-DNO_EPOLL\fR
 #      Do not build with Linux EPOLL support.
 #      By default, EPOLL support is compiled in on platforms that
@@ -259,18 +262,21 @@ case "$SYSTEM.$RELEASE" in
                ;;
        AIX.*)  case "`uname -v`" in
                6)      SYSTYPE=AIX6
+                       CCARGS="$CCARGS -DNO_DNSSEC"
                        case "$CC" in
                        cc|*/cc|xlc|*/xlc) CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";;
                        esac
                        CCARGS="$CCARGS -D_ALL_SOURCE -DHAS_POSIX_REGEXP"
                        ;;
                5)      SYSTYPE=AIX5
+                       CCARGS="$CCARGS -DNO_DNSSEC"
                        case "$CC" in
                        cc|*/cc|xlc|*/xlc) CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";;
                        esac
                        CCARGS="$CCARGS -D_ALL_SOURCE -DHAS_POSIX_REGEXP"
                        ;;
                4)      SYSTYPE=AIX4
+                       CCARGS="$CCARGS -DNO_DNSSEC"
                        # How embarrassing...
                        case "$CC" in
                        cc|*/cc|xlc|*/xlc) OPT=; CCARGS="$CCARGS -w -blibpath:/usr/lib:/lib:/usr/local/lib";;
index 383e9faecc33af183f0e899fc23a52b1dd9d1a49..1b37a235ef85021b8cabc456f5a56f0e5a1b5246 100644 (file)
@@ -383,6 +383,10 @@ platforms that are known to support this feature. If you override
 this, then you probably should also override DEF_DB_TYPE as described
 in section 4.4.  </td> </tr>
 
+<tr> <td> </td> <td> -DNO_DNSSEC </td> <td> Do not build with DNSSEC
+support, even if the resolver library appears to support it. </td>
+</tr>
+
 <tr> <td> </td> <td> -DNO_DEVPOLL </td> <td> Do not build with
 Solaris <tt>/dev/poll</tt> support. By default, <tt>/dev/poll</tt>
 support is compiled in on Solaris versions that are known to support
index cde3b7c932ac3917f6fb36fd5ec04b65a435476c..c624abeb08115171efac906ae3bed9fca4fba0ef 100644 (file)
@@ -385,11 +385,20 @@ static const char *cleanup_act(CLEANUP_STATE *state, char *context,
     if (STREQUAL(value, "PREPEND", command_len)) {
        if (*optional_text == 0) {
            msg_warn("PREPEND action without text in %s map", map_class);
-       } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0
-                  && !is_header(optional_text)) {
-           msg_warn("bad PREPEND header text \"%s\" in %s map -- "
-                    "need \"headername: headervalue\"",
-                    optional_text, map_class);
+       } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0) {
+           if (!is_header(optional_text)) {
+               msg_warn("bad PREPEND header text \"%s\" in %s map -- "
+                        "need \"headername: headervalue\"",
+                        optional_text, map_class);
+           } else {
+               VSTRING *temp;
+
+               cleanup_act_log(state, "prepend", context, buf, optional_text);
+               temp = vstring_strcpy(vstring_alloc(strlen(optional_text)),
+                                                    optional_text);
+               cleanup_out_header(state, temp);
+               vstring_free(temp);
+           }
        } else {
            cleanup_act_log(state, "prepend", context, buf, optional_text);
            cleanup_out_string(state, REC_TYPE_NORM, optional_text);
index 0d11e35ed114785f8bb01c993d181f3450a7c81c..6336801d15a1bf0bc1193462b3c5beea5673a601 100644 (file)
        (cp) += 4; \
 }
 
+#endif
+
+/*
+ * Disable DNSSEC at compile-time even if RES_USE_DNSSEC is available
+ */
+#ifdef NO_DNSSEC
+#undef RES_USE_DNSSEC
 #endif
 
  /*
index 91d9cebc7c5dd8e809d9eeef4bc97cbf85eb450b..8e7e5110160d209cc681e04bc7d71528d58a3d45 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20150720"
-#define MAIL_VERSION_NUMBER    "2.11.6"
+#define MAIL_RELEASE_DATE      "20151010"
+#define MAIL_VERSION_NUMBER    "2.11.7"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index 4e73733443c61c248e0986a6247afb7beba7e468..412e7a5c66a3aaedc7a1648e5378137f6b894ac3 100644 (file)
@@ -134,8 +134,7 @@ VSTRING *xtext_unquote_append(VSTRING *unquoted, const char *quoted)
 VSTRING *xtext_unquote(VSTRING *unquoted, const char *quoted)
 {
     VSTRING_RESET(unquoted);
-    xtext_unquote_append(unquoted, quoted);
-    return (unquoted);
+    return (xtext_unquote_append(unquoted, quoted) ? unquoted : 0);
 }
 
 #ifdef TEST
index 14cd1933f3af216488a7cf2179ad20ee275618f6..95aae172d8909c07443768456110449a2dc3c066 100644 (file)
@@ -1689,7 +1689,7 @@ int     main(int argc, char **argv)
        case 'e':
            if ((code = EDIT_CMD_CODE(optarg)) < 0)
                msg_fatal("Invalid '-e' edit action '%s'. Specify '%s', "
-                         "'%s', '%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
+                         "'%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
                          optarg,
                          EDIT_CMD_STR(EDIT_CMD_CREATE),
                          EDIT_CMD_STR(EDIT_CMD_DESTROY),
@@ -1698,8 +1698,7 @@ int     main(int argc, char **argv)
                          EDIT_CMD_STR(EDIT_CMD_ENABLE),
                          EDIT_CMD_STR(EDIT_CMD_DISABLE),
                          EDIT_CMD_STR(EDIT_CMD_ASSIGN),
-                         EDIT_CMD_STR(EDIT_CMD_INIT),
-                         optarg);
+                         EDIT_CMD_STR(EDIT_CMD_INIT));
            if (cmd_mode != code)
                command_mode_count++;
            cmd_mode = code;
index 599e3ed42604e9b7da53d0773628b7d3f39d5a5e..a4c527ce3c8592e62299fc307594fe35ee880160 100644 (file)
@@ -95,6 +95,14 @@ int     smtpd_peer_from_haproxy(SMTPD_STATE *state)
     int     io_err;
     VSTRING *escape_buf;
 
+    /*
+     * While reading HAProxy handshake information, don't buffer input beyond
+     * the end-of-line. That would break the TLS wrappermode handshake.
+     */
+    vstream_control(state->client,
+                   VSTREAM_CTL_BUFSIZE, 1,
+                   VSTREAM_CTL_END);
+
     /*
      * Note: the haproxy_srvr_parse() routine performs address protocol
      * checks, address and port syntax checks, and converts IPv4-in-IPv6
@@ -142,6 +150,13 @@ int     smtpd_peer_from_haproxy(SMTPD_STATE *state)
         * Avoid surprises in the Dovecot authentication server.
         */
        state->dest_addr = mystrdup(smtp_server_addr.buf);
+
+       /*
+        * Enable normal buffering.
+        */
+       vstream_control(state->client,
+                       VSTREAM_CTL_BUFSIZE, VSTREAM_BUFSIZE,
+                       VSTREAM_CTL_END);
        return (0);
     }
 }
index de124df5536d0ac5d87f1699840dbd431ca4046a..c2d47bbb367f06360c108125d8e96ecf4d616682 100644 (file)
@@ -78,6 +78,7 @@
 #endif
 #endif
 #include <string.h>
+#include <errno.h>
 
 /* Utility library. */
 
@@ -177,6 +178,13 @@ char   *scan_dir_next(SCAN_DIR *scan)
 #define STREQ(x,y)     (strcmp((x),(y)) == 0)
 
     if (info) {
+
+       /*
+        * Fix 20150421: readdir() does not reset errno after reaching the
+        * end-of-directory. This dates back all the way to the initial
+        * implementation of 19970309.
+        */
+       errno = 0;
        while ((dp = readdir(info->dir)) != 0) {
            if (STREQ(dp->d_name, ".") || STREQ(dp->d_name, "..")) {
                if (msg_verbose > 1)