]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.12-20140716
authorWietse Venema <wietse@porcupine.org>
Thu, 17 Jul 2014 07:54:17 +0000 (17:54 +1000)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Thu, 17 Jul 2014 07:54:17 +0000 (17:54 +1000)
postfix/HISTORY
postfix/RELEASE_NOTES
postfix/html/postconf.5.html
postfix/makedefs
postfix/man/man5/postconf.5
postfix/proto/postconf.proto
postfix/src/global/mail_params.c
postfix/src/global/mail_version.h
postfix/src/util/Makefile.in
postfix/src/util/midna.c

index 35bf8d42c54da5054cb70a4dc546e8edba9e88a7..51ea7b184443f05648b99af5bd57da367e6aa597 100644 (file)
@@ -20246,3 +20246,18 @@ Apologies for any names omitted.
        Cleanup: shared-library build fixes. Viktor Dukhovni.
        Files: makedefs, dns/Makefile.in, global/Makefile.in,
        master/Makefile.in, tls/Makefile.in, util/Makefile.in.
+
+       First general release with SMTPUTF8 support; see RELEASE_NOTES
+       for an initial writeup.  The last pre-SMTPUTF8 release is
+       postfix-2.12-20140713.
+
+20140716
+
+       Paranoia: validate UTF8 before exposing it to libicuuc.
+       File: util/midna.c.
+
+       Typo: Postfix did not warn when smtputf8_enable=yes while
+       UTF-8 support is not compiled in. File: global/mail_params.c.
+
+       Cleanup: hard-coded GCC dependencies. Eray Aslan. File:
+       makedefs.
index cf1daa574d201a4c0a64c61e6ea963128d59f46c..6bb54ce32ddf1fd4e815c85a52b9ff97a2a39eeb 100644 (file)
@@ -54,7 +54,7 @@ Major changes with snapshot 20140715
 ====================================
 
 Support for Internationalized Email, also known as EAI or SMTPUTF8,
-defined in RFC 6530..6533. This supports UTF8 in SMTP/LMTP sender
+defined in RFC 6531..6533. This supports UTF-8 in SMTP/LMTP sender
 addresses, recipient addresses, and message header values.  The
 implementation is based on initial work by Arnt Gulbrandsen that
 was funded by CNNIC.
@@ -69,28 +69,27 @@ This text describes:
 Compatibility with pre-SMTPUTF8 environments
 --------------------------------------------
 
-Mailing list friendliness
+Mailing lists with UTF-8 and non-UTF-8 subscribers 
 
-In the future, mailing lists will have a mix of UTF8 and non-UTF8
-subscribers.  With Postfix, there is no need to split the lists
-into UTF8 and non-UTF8 members. Postfix will try to deliver the
-non-UTF8 subscribers over "traditional" non-SMTPUTF8 sessions, as
-long as the message has an ASCII envelope sender address and all
-ASCII header values (the mailing list manager may have to apply RFC
-2047 encoding to satisfy the second condition).
+With Postfix, there is no need to split mailing lists into UTF-8 and
+non-UTF-8 members. Postfix will try to deliver the non-UTF8 subscribers
+over "traditional" non-SMTPUTF8 sessions, as long as the message
+has an ASCII envelope sender address and all-ASCII header values.
+The mailing list manager will have to apply RFC 2047 encoding to
+satisfy that last condition.
 
 Pre-existing non-ASCII mail flows
 
-In pre-SMTPUTF8 environments, mail with UTF8 in address localparts
+In pre-SMTPUTF8 environments, mail with UTF-8 in address localparts
 (and in headers) works just fine because the vast majority of mail
 software including Postfix is perfectly capable of handling such
 mail, even if pre-SMTPUTF8 standards do not support this.
 
 Therefore, when Postfix SMTPUTF8 support is turned on, Postfix must
-not suddenly start to break pre-existing mail flows with UTF8 in
+not suddenly start to break pre-existing mail flows with UTF-8 in
 addres localparts (and in headers).
 
-Thus, Postfix continues to permit UTF8 in address localparts (and
+Thus, Postfix continues to permit UTF-8 in address localparts (and
 in headers) in mail from and to pre-SMTPUTF8 systems.  At least,
 that is the default.
 
@@ -108,7 +107,7 @@ and by issuing the "postfix reload" command.
 
 With SMTPUTF8 support enabled, Postfix changes behavior as follows:
 
-- UTF8 is permitted in the myorigin parameter value. However, the
+- UTF-8 is permitted in the myorigin parameter value. However, the
   myhostname and mydomain parameters must specify ASCII-only domain
   names. This limitation may be removed later.
 
@@ -136,11 +135,11 @@ With SMTPUTF8 support enabled, Postfix changes behavior as follows:
 - The Postfix SMTP client may issue the SMTPUTF8 request in MAIL FROM
   commands.
 
-- UTF8 is supported anywhere in an email address, not just silently
+- UTF-8 is supported anywhere in an email address, not just silently
   permitted in the localpart, but only after the client issues MAIL
   FROM or VRFY as shown above.
 
-- UTF8 was already silently permitted in message header values.
+- UTF-8 was already silently permitted in message header values.
 
 SMTP-based content filters (Amavisd) and LMTP servers (Dovecot)
 will need to be updated to support SMTPUTF8. A notice has been
@@ -152,7 +151,7 @@ Using Postfix SMTPUTF8 support
 - When the Postfix SMTP server receives a message WITHOUT the
   SMTPUTF8 request, Postfix handles the message as it has always
   done (at least that is the default, see autodetection below).
-  Specifically, the Postfix SMTP server does not accept UTF8 in the
+  Specifically, the Postfix SMTP server does not accept UTF-8 in the
   envelope sender domain name or envelope recipient domain name,
   and the Postfix SMTP client does not issue the SMTPUTF8 request
   when delivering that message an SMTP or LMTP server that announces
@@ -166,15 +165,15 @@ Using Postfix SMTPUTF8 support
 - When a message is received with the SMTPUTF8 request, Postfix
   will deliver the message to a non-SMTPUTF8 server ONLY if:
 
-    - No message header value contains UTF8.
+    - No message header value contains UTF-8.
 
-    - The envelope sender address contains no UTF8,
+    - The envelope sender address contains no UTF-8,
 
     - No envelope recipient address for that specific SMTP/LMTP
-      delivery transaction contains UTF8.
+      delivery transaction contains UTF-8.
 
          NOTE: Recipients in other mail delivery transactions for
-         that same message may still contain UTF8.
+         that same message may still contain UTF-8.
 
    Otherwise, Postfix will return the recipient(s) for that mail
    delivery transaction as undeliverable. The delivery status
@@ -190,7 +189,7 @@ SMTPUTF8 autodetection
 
 By default, Postfix sets the "SMTPUTF8 requested" bit on address
 verification probes and on Postfix sendmail submissions that contain
-UTF8 in the sender address, UTF8 in a recipient address, or UTF8
+UTF-8 in the sender address, UTF-8 in a recipient address, or UTF-8
 in a message header value.
 
     smtputf8_autodetect_classes = sendmail, verify
@@ -204,13 +203,13 @@ client may not be able to deliver it to a non-SMTPUTF8 server.
 
 However, if you have a non-ASCII myorigin or mydomain setting, or
 if you have virtual aliases, canonical mappings, or BCC mappings
-that introduce UTF8 addresses, then you may have to apply SMTPUTF8
+that introduce UTF-8 addresses, then you may have to apply SMTPUTF8
 autodetection to all mail:
 
     smtputf8_autodetect_classes = all
 
 This will, of course, also flag mail that was received without
-SMTPUTF8 request, but that contains UTF8 in a sender address
+SMTPUTF8 request, but that contains UTF-8 in a sender address
 localpart, receiver address localpart, or message header value.
 Such mail was not standards-compliant, but Postfix would have
 delivered it if SMTPUTF8 support was disabled.
@@ -218,16 +217,16 @@ delivered it if SMTPUTF8 support was disabled.
 Limitations of Postfix SMTPUTF8 support
 ---------------------------------------
 
-"Internationalized" domain names can appear in two forms: the UTF8
+"Internationalized" domain names can appear in two forms: the UTF-8
 form, and the ASCII (xn--mumble) form.
 
 No characterset canonicalization for non-ASCII domain names.
 
-Postfix currently does not translate domain names from UTF8 into
-ASCII (or ASCII into UTF8) before looking up the domain name in
+Postfix currently does not translate domain names from UTF-8 into
+ASCII (or ASCII into UTF-8) before looking up the domain name in
 mydestination, relay_domains, access tables, etc., before logging
 the domain name, or before using the domain name in a policy daemon
-or Milter request. You will have to configure both UTF8 and ASCII
+or Milter request. You will have to configure both UTF-8 and ASCII
 forms in Postfix configuration files; and both forms will have to
 be handled by logfile tools, policy daemons and Milters.
 
index 9751ca3192ec4ece7dec395430a0f31d3b7e3065..90a52c4fa204ec24694559fb3996b80e49ee24d7 100644 (file)
@@ -16412,10 +16412,13 @@ daemon. </dd>
 <dt> <b> qmqpd </b> </dt> <dd> Mail received with the <a href="qmqpd.8.html">qmqpd(8)</a>
 daemon. </dd>
 
-<dt> <b> forward </b> </dt> <dd> Local forwarding or aliasing.
-</dd>
+<dt> <b> forward </b> </dt> <dd> Local forwarding or aliasing.  When
+a message is received with "SMTPUTF8 requested", then the forwarded
+(aliased) message automatically has "SMTPUTF8 requested".  </dd>
 
 <dt> <b> bounce </b> </dt> <dd> Submission by the <a href="bounce.8.html">bounce(8)</a> daemon.
+When a message is received with "SMTPUTF8 requested", then the
+delivery status notification automatically has "SMTPUTF8 requested".
 </dd>
 
 <dt> <b> notify </b> </dt> <dd> Postmaster notification from the
index 770b098a5637a15ffa8bd44368342bd2385d1d1c..827e1ff81fc2f71dd2e86b177de1462600f23bc4 100644 (file)
@@ -202,18 +202,18 @@ case "$SYSTEM.$RELEASE" in
   FreeBSD.8*)  SYSTYPE=FREEBSD8
                : ${SHLIB_SUFFIX=.so}
                : ${SHLIB_CFLAGS=-fPIC}
-               : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'}
+               : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-soname,${LIB}'}
                : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'}
                : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
-               : ${PLUGIN_LD='gcc -shared'}
+               : ${PLUGIN_LD="${CC-gcc} -shared"}
                ;;
   FreeBSD.9*)  SYSTYPE=FREEBSD9
                : ${SHLIB_SUFFIX=.so}
                : ${SHLIB_CFLAGS=-fPIC}
-               : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'}
+               : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-soname,${LIB}'}
                : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'}
                : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
-               : ${PLUGIN_LD='gcc -shared'}
+               : ${PLUGIN_LD="${CC-gcc} -shared"}
                ;;
  DragonFly.*)  SYSTYPE=DRAGONFLY
                ;;
@@ -261,10 +261,10 @@ case "$SYSTEM.$RELEASE" in
                SYSLIBS="-lresolv -lsocket -lnsl -ldl"
                : ${SHLIB_SUFFIX=.so}
                : ${SHLIB_CFLAGS=-fPIC}
-               : ${SHLIB_LD='gcc -shared -Wl,-h,${LIB}'}
+               : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-h,${LIB}'}
                : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
                : ${SHLIB_RPATH='-Wl,-R,${SHLIB_DIR}'}
-               : ${PLUGIN_LD='gcc -shared'}
+               : ${PLUGIN_LD="${CC-gcc} -shared"}
                # Stock awk breaks with >10 files.
                test -x /usr/xpg4/bin/awk && AWK=/usr/xpg4/bin/awk
                # Solaris 2.5 added usleep(), POSIX regexp, POSIX getpwnam/uid_r
@@ -427,10 +427,10 @@ EOF
                SYSLIBS="$SYSLIBS -ldl"
                : ${SHLIB_SUFFIX=.so}
                : ${SHLIB_CFLAGS=-fPIC}
-               : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'}
+               : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-soname,${LIB}'}
                : ${SHLIB_RPATH='-Wl,--enable-new-dtags -Wl,-rpath,${SHLIB_DIR}'}
                : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
-               : ${PLUGIN_LD='gcc -shared'}
+               : ${PLUGIN_LD="${CC-gcc} -shared"}
                ;;
     Linux.3*)  SYSTYPE=LINUX3
                case "$CCARGS" in
@@ -465,10 +465,10 @@ EOF
                SYSLIBS="$SYSLIBS -ldl"
                : ${SHLIB_SUFFIX=.so}
                : ${SHLIB_CFLAGS=-fPIC}
-               : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'}
+               : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-soname,${LIB}'}
                : ${SHLIB_RPATH='-Wl,--enable-new-dtags -Wl,-rpath,${SHLIB_DIR}'}
                : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
-               : ${PLUGIN_LD='gcc -shared'}
+               : ${PLUGIN_LD="${CC-gcc} -shared"}
                ;;
      GNU.0*|GNU/kFreeBSD.[567]*)
                SYSTYPE=GNU0
index ae33675b87f11822e9b615e4d75f4abb81df7ab3..7c73e1d075c7e20701b0095023f3e3c1b5c35cab 100644 (file)
@@ -11228,10 +11228,14 @@ Mail received with the \fBqmqpd\fR(8)
 daemon.
 .br
 .IP "\fB forward \fR"
-Local forwarding or aliasing.
+Local forwarding or aliasing.  When
+a message is received with "SMTPUTF8 requested", then the forwarded
+(aliased) message automatically has "SMTPUTF8 requested".
 .br
 .IP "\fB bounce \fR"
 Submission by the \fBbounce\fR(8) daemon.
+When a message is received with "SMTPUTF8 requested", then the
+delivery status notification automatically has "SMTPUTF8 requested".
 .br
 .IP "\fB notify \fR"
 Postmaster notification from the
index 45d49c0923d6f0e0fc9ba7db36ec1a226be0a97b..98a82e2f04009489855153d77aec7e2dce495ec2 100644 (file)
@@ -16096,10 +16096,13 @@ daemon. </dd>
 <dt> <b> qmqpd </b> </dt> <dd> Mail received with the qmqpd(8)
 daemon. </dd>
 
-<dt> <b> forward </b> </dt> <dd> Local forwarding or aliasing.
-</dd>
+<dt> <b> forward </b> </dt> <dd> Local forwarding or aliasing.  When
+a message is received with "SMTPUTF8 requested", then the forwarded
+(aliased) message automatically has "SMTPUTF8 requested".  </dd>
 
 <dt> <b> bounce </b> </dt> <dd> Submission by the bounce(8) daemon.
+When a message is received with "SMTPUTF8 requested", then the
+delivery status notification automatically has "SMTPUTF8 requested".
 </dd>
 
 <dt> <b> notify </b> </dt> <dd> Postmaster notification from the
index a6e479ff354009c94672ea719baa219cbe3d1f0f..67953414b921df8acacbfa526cb16d99df25be63 100644 (file)
@@ -748,7 +748,7 @@ void    mail_params_init()
     /*
      * Report run-time versus compile-time discrepancies.
      */
-#ifdef NO_IDNA
+#ifdef NO_EAI
     if (var_smtputf8_enable)
        msg_warn("%s is true, but EAI support is not compiled in",
                 VAR_SMTPUTF8_ENABLE);
index 55be80417fe9c13956b323e23bad7e7480831145..beb6e6c496c3eacfdf6d4c3446431b6ae95c7515 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      "20140715"
+#define MAIL_RELEASE_DATE      "20140716"
 #define MAIL_VERSION_NUMBER    "2.12"
 
 #ifdef SNAPSHOT
index 70278fcb373a0ba56ca791604771ddce37bf1187..b6c7d57955e9368da84dbceff0d4f8991536c640 100644 (file)
@@ -1597,7 +1597,10 @@ midna.o: midna.c
 midna.o: midna.h
 midna.o: msg.h
 midna.o: mymalloc.h
+midna.o: stringops.h
 midna.o: sys_defs.h
+midna.o: vbuf.h
+midna.o: vstring.h
 msg.o: msg.c
 msg.o: msg.h
 msg.o: msg_output.h
index 320f2d4a1878b255d61ff297f7acbce343ae1279..87f71e676563b36459f2230b24b7acf77078c1cc 100644 (file)
@@ -54,6 +54,7 @@
 #include <mymalloc.h>
 #include <msg.h>
 #include <ctable.h>
+#include <stringops.h>
 #include <midna.h>
 
  /*
@@ -61,7 +62,7 @@
   */
 #define DEF_MIDNA_CACHE_SIZE   100
 
-int midna_cache_size = DEF_MIDNA_CACHE_SIZE;
+int     midna_cache_size = DEF_MIDNA_CACHE_SIZE;
 
 /* midna_utf8_to_ascii_create - convert UTF8 domain to ASCII */
 
@@ -74,6 +75,14 @@ static void *midna_utf8_to_ascii_create(const char *name, void *unused_context)
     UIDNA  *idna;
     int     anl;
 
+    /*
+     * Paranoia: do not expose uidna_*() to unfiltered network data.
+     */
+    if (valid_utf8_string(name, strlen(name)) == 0) {
+       msg_warn("%s: Problem translating domain \"%s\" to IDNA form: %s",
+                myname, name, "malformed UTF-8");
+       return (0);
+    }
     idna = uidna_openUTS46(UIDNA_DEFAULT, &error);
     anl = uidna_nameToASCII_UTF8(idna,
                                 name, strlen(name),