20150214
- Bugfix: missing #ifdef USE_TLS inside #ifdef USE_SASL_AUTH
- broke the build. Viktor Dukhovni. File: smtpd/smtpd.c.
+ Bugfix (introduced: Postfix 3.0): missing #ifdef USE_TLS
+ inside #ifdef USE_SASL_AUTH broke the build. Viktor Dukhovni.
+ File: smtpd/smtpd.c.
Cleanup: missing errno logging in bounce daemon clients.
This made troubleshooting significantly more difficult.
20150221
- Bugfix: don't append '.' to the DNS resource record value,
- when converting TXT records to the string form that is used
- used by xxx_dns_reply_filter. File: dns/dns_strrecord.c.
+ Bugfix (introduced: Postfix 3.0): don't append '.' to the
+ DNS resource record value, when converting TXT records to
+ the string form that is used used by xxx_dns_reply_filter.
+ File: dns/dns_strrecord.c.
20150313
Bugfix (introduced: Postfix 1.1.0): post-install expanded
macros in parameter values when trying to detect parameter
- overrides. Julian Reich, Viktor Dukhovni, and Wietse. File:
+ overrides, causing unnecessary main.cf updates during Postfix
+ start-up. Julian Reich, Viktor Dukhovni, and Wietse. File:
conf/post-install.
20150330
- Bitrot: prepare for future changes in OpenSSL. Viktor
- Dukhovni. File: tlstls_dane.c.
+ Bitrot: prepare for future changes in OpenSSL API. Viktor
+ Dukhovni. File: tls_dane.c.
Safety: instead of bouncing mail, report a soft error when
SASL infrastucture breaks. Viktor Dukhovni, Emmanuel Fuste.
Files: smtpd/smtpd_sasl_glue.c, xsasl/xsasl.h,
xsasl/xsasl_cyrus_server.c, xsasl/xsasl_dovecot_server.c.
+
+20150401
+
+ Documentation: update the mydestination default value in
+ the stock main.cf file. File: conf/main.cf.
+
+20150404
+
+ Documentation: add "postconf -m" output to problem reports. File:
+ proto/DEBUG_README.html.
+
+20150418
+
+ Portability: use the icu-config utility to locate the ICU
+ include and library files. With this, Postfix builds out
+ of the box on MacOS X. File: makedefs.
+
+20150421
+
+ Bugfix (introduced: 19970309): reset errno before calling
+ readdir(), in order to distinguish between end-of-directory and
+ an error condition. File: scandir,c,
host names consistently. Replace each letter by "A", each digit by "D" so
that the helpers can still recognize syntactical errors.
- * Output from "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-n\bn". Please do not send your main.cf file, or 500+
- lines of p\bpo\bos\bst\btc\bco\bon\bnf\bf output.
+ * Command output from:
+
+ o "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-n\bn". Please do not send your main.cf file, or 1000+ lines of
+ p\bpo\bos\bst\btc\bco\bon\bnf\bf command output.
+
+ o "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-M\bMf\bf" (Postfix 2.9 or later).
* Better, provide output from the p\bpo\bos\bst\btf\bfi\bin\bng\bge\ber\br tool. This can be found at http:
//ftp.wl0.org/SOURCES/postfinger.
installation/upgrade/packaging? postfix-install for early
warning, and post-install as a safety net?
- Automatically do the equivalent of syslog_name=postfix/mumble
- when basename(mumble) differs from basename(program file).
- This is especially desirable for mail delivery transports
- (smtp versus relay) as it identifies what scheduler parameters
- are in effect.
+ When the service basename differs from the program file
+ basename, either prepend the service name to the syslogname (as
+ if syslog_name=postfix/service/program), or prepend the service
+ name to the process name (perhaps too confusing). The service
+ indication is desirable for mail delivery transports (smtp
+ versus relay) as it identifies what scheduler parameters are
+ in effect, but it is also desirable for mail receiving services
+ (smtp versus submission verus smtps as configured in the stock
+ master.cf file). This requires exceptions for some program names
+ (exclude smtpd to avoid logging postfix/smtp/smtpd which could
+ result in more confusion, and maybe other program names).
UTF8 DNS[BW]L domain name.
Try to allow UTF-8 myhostname/mydomain, at least in bounce
template expansion.
- No enhanced status code when rejecting connection before
- the HELO handshake is completed.
+ In the SMTP server, do not issue an enhanced status code when
+ rejecting a connection before the HELO handshake is completed.
Maybe don't whitelist a client that has maxed out its
per-MTA connection count limit.
# compatible delivery agent that lookups all recipients in /etc/passwd
# and /etc/aliases or their equivalent.
#
-# The default is $myhostname + localhost.$mydomain. On a mail domain
-# gateway, you should also include $mydomain.
+# The default is $myhostname + localhost.$mydomain + localhost. On
+# a mail domain gateway, you should also include $mydomain.
#
# Do not specify the names of virtual domains - those domains are
# specified elsewhere (see VIRTUAL_README).
by "D" so that the helpers can still recognize syntactical errors.
</p>
-<li> <p> Output from "<b>postconf -n</b>". Please do not send your
-<a href="postconf.5.html">main.cf</a> file, or 500+ lines of <b>postconf</b> output. </p>
+<li> <p> Command output from:</p>
+
+<ul>
+
+<li> <p> "<b>postconf -n</b>". Please do not send your <a href="postconf.5.html">main.cf</a> file,
+or 1000+ lines of <b>postconf</b> command output. </p>
+
+<li> <p> "<b>postconf -Mf</b>" (Postfix 2.9 or later). </p>
+
+</ul>
<li> <p> Better, provide output from the <b>postfinger</b> tool.
This can be found at <a href="http://ftp.wl0.org/SOURCES/postfinger">http://ftp.wl0.org/SOURCES/postfinger</a>. </p>
<p> The address type ("ipv6", "ipv4" or "any") that the Postfix
SMTP client will try first, when a destination has IPv6 and IPv4
addresses with equal MX preference. This feature has no effect
-unless the <a href="postconf.5.html#inet_protocols">inet_protocols</a> setting enables both IPv4 and IPv6.
-With Postfix 2.8 the default is "ipv6". </p>
+unless the <a href="postconf.5.html#inet_protocols">inet_protocols</a> setting enables both IPv4 and IPv6. </p>
+
+<p> Postfix SMTP client address preference has evolved. With Postfix
+2.8 the default is "ipv6"; earlier implementations are hard-coded
+to prefer IPv6 over IPv4. </p>
<p> Notes for mail delivery between sites that have both IPv4 and
IPv6 connectivity: </p>
# Look for the ICU library and enable unicode email if available.
#
case "$CCARGS" in
- *-DNO_EAI*) ;;
- *) trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15
- cat >makedefs.test.c <<'EOF'
+*-DNO_EAI*) ;;
+ *) icu_cppflags=`(icu-config --cppflags) 2>/dev/null` && {
+ icu_ldflags=`(icu-config --ldflags) 2>/dev/null` && {
+ trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15
+ cat >makedefs.test.c <<'EOF'
#include <unicode/uidna.h>
#include <stdlib.h>
&error) != 14);
}
EOF
- ${CC-gcc} -o makedefs.test makedefs.test.c -I/usr/local/include \
- -L/usr/local/lib -licuuc >/dev/null 2>&1
- if ./makedefs.test 2>/dev/null ; then
- SYSLIBS="$SYSLIBS -L/usr/local/lib -licuuc"
- else
- CCARGS="$CCARGS -DNO_EAI"
- fi
- rm -f makedefs.test makedefs.test.[co]
+ ${CC-gcc} -o makedefs.test makedefs.test.c $icu_cppflags \
+ $icu_ldflags >/dev/null 2>&1
+ if ./makedefs.test 2>/dev/null ; then
+ CCARGS="$CCARGS $icu_cppflags"
+ SYSLIBS="$SYSLIBS $icu_ldflags"
+ else
+ CCARGS="$CCARGS -DNO_EAI"
+ fi
+ rm -f makedefs.test makedefs.test.[co]
+ }
+ } || CCARGS="$CCARGS -DNO_EAI"
esac
#
SMTP client will try first, when a destination has IPv6 and IPv4
addresses with equal MX preference. This feature has no effect
unless the inet_protocols setting enables both IPv4 and IPv6.
-With Postfix 2.8 the default is "ipv6".
+.PP
+Postfix SMTP client address preference has evolved. With Postfix
+2.8 the default is "ipv6"; earlier implementations are hard\-coded
+to prefer IPv6 over IPv4.
.PP
Notes for mail delivery between sites that have both IPv4 and
IPv6 connectivity:
by "D" so that the helpers can still recognize syntactical errors.
</p>
-<li> <p> Output from "<b>postconf -n</b>". Please do not send your
-main.cf file, or 500+ lines of <b>postconf</b> output. </p>
+<li> <p> Command output from:</p>
+
+<ul>
+
+<li> <p> "<b>postconf -n</b>". Please do not send your main.cf file,
+or 1000+ lines of <b>postconf</b> command output. </p>
+
+<li> <p> "<b>postconf -Mf</b>" (Postfix 2.9 or later). </p>
+
+</ul>
<li> <p> Better, provide output from the <b>postfinger</b> tool.
This can be found at http://ftp.wl0.org/SOURCES/postfinger. </p>
<p> The address type ("ipv6", "ipv4" or "any") that the Postfix
SMTP client will try first, when a destination has IPv6 and IPv4
addresses with equal MX preference. This feature has no effect
-unless the inet_protocols setting enables both IPv4 and IPv6.
-With Postfix 2.8 the default is "ipv6". </p>
+unless the inet_protocols setting enables both IPv4 and IPv6. </p>
+
+<p> Postfix SMTP client address preference has evolved. With Postfix
+2.8 the default is "ipv6"; earlier implementations are hard-coded
+to prefer IPv6 over IPv4. </p>
<p> Notes for mail delivery between sites that have both IPv4 and
IPv6 connectivity: </p>
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20150330"
+#define MAIL_RELEASE_DATE "20150421"
#define MAIL_VERSION_NUMBER "3.1"
#ifdef SNAPSHOT
#endif
#endif
#include <string.h>
+#include <errno.h>
/* Utility library. */
#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)
/*
* Caution: casefolding may change the number of bytes. See comments
- * above for concerns about strcpy().
+ * above for concerns about strcmp().
*/
flags &= CASEF_FLAG_UTF8;
casefoldx(flags, f1, s1, len);