diff --git a/postfix/HISTORY b/postfix/HISTORY index 95b6d9fda..ca551051e 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -20546,3 +20546,10 @@ Apologies for any names omitted. Bugfix: do not reset the mail transaction after receiving a non-ASCII recipient. File: smtpd/smtpd.c. + +20141002 + + Cleanup: moved the details of BC safety-net messages from + RELEASE_NOTES to postconf(5) manpage, and changed the wording + of the BC messages. Files: RELEASE_NOTES, proto/postconf.proto, + master/master_ent.c, smtpd/smtpd.c, trivial-rewrite/rewrite.c. diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES index 8392b4ff6..a5d2e2bf6 100644 --- a/postfix/RELEASE_NOTES +++ b/postfix/RELEASE_NOTES @@ -61,65 +61,17 @@ about build options that are not described in the INSTALL instructions. Major changes with snapshot 20141001 ==================================== -A new backwards-compatibility safety net forces Postfix to keep -running with backwards-compatible main.cf and master.cf default -settings after an upgrade to a newer Postfix version. +A new backwards-compatibility safety net forces Postfix to run with +backwards-compatible main.cf and master.cf default settings after +an upgrade to a newer but incompatible Postfix version. -The following presents the messages that the backwards-compatibility -safety net will log, what the messages mean, and what action the -system adminstrator is expected to take. +While the backwards-compatible default settings are in effect, +Postfix logs what services or what email would be affected by the +incompatible change. Based on this the administrator can make some +backwards-compatibility settings permanent in main.cf or master.cf, +before turning off backwards compatibility. -1) postfix/master[27664]: /etc/postfix/master.cf: line 72: using - legacy default setting chroot=y - - chroot=n is the new default, but that may not always be disirable. - Postfix continues to use the backwards-compatible default, - chroot=y, until the system administrator has determined whether - or not the backwards-compatible chroot=y setting needs to be - made permanent in master.cf. - -2) postfix/trivial-rewrite[25835]: using legacy default setting - append_dot_mydomain=yes to rewrite "foo" to "foo.example.com" - - append_dot_mydomain=no is the new default, but that change may - affect email from ancient clients that cannot be updated. Postfix - continues to use the backwards-compatible default, - append_dot_mydomain=yes, until the system administrator has - determined whether or not the backwards-compatible - append_dot_mydomain=yes setting needs to be made permanent in - main.cf. - -3) postfix/smtpd[27560]: using legacy default setting smtputf8_enable=no - to accept non-ASCII sender address "??@example.org" from - localhost[127.0.0.1] - -4) postfix/smtpd[27560]: using legacy default setting smtputf8_enable=no - to accept non-ASCII recipient address "??@example.com" from - localhost[127.0.0.1] - - smtputf8_enable=yes is the new default, but that would break - existing email streams with non-ASCII localparts. Postfix continues - to use the backwards-compatible default, smtputf8_enable=no, - until the system administrator has determined whether or not the - backwards-compatible smtputf8_enable=no setting needs to be made - permanent in main.cf. - -It may take several weeks until all dependencies on backwards-compatible -default settings are identified. After the review is complete, and -no more backwards-compatible settings need to be made permanent. -the administrator should accept the remaining Postfix built-in -default settings by updating the compatibility_level setting in -main.cf. - -For the changes discussed above, the administrator should set: - -/etc/postfix/main.cf: - compatibility_level = 1 - -This will stop all the warning messages shown above. - -Future incompatible changes will require setting "compatibility_level -= 2", and so on. +See postconf.5.html#compatibility_level for details. Major changes with snapshot 20140928 ==================================== diff --git a/postfix/WISHLIST b/postfix/WISHLIST index 80637fd4b..f83de8edd 100644 --- a/postfix/WISHLIST +++ b/postfix/WISHLIST @@ -11,6 +11,8 @@ Wish list: Things to do after the stable release: + Update smtputf8_enable in postconf(5) + use "static const char myname[] ..." Add milter_mumble_macros to the list of per-macro features. diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 1c58bea48..c395b5c39 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -1539,24 +1539,111 @@ global ipc_timeout parameter as well.
compatibility_level (default: 0)
-

A safety net that forces Postfix to keep running with -backwards-compatible main.cf and master.cf default settings after -an upgrade to a newer but incompatible Postfix version.

+

A safety net that forces Postfix to run with backwards-compatible +main.cf and master.cf default settings after an upgrade to a newer +but incompatible Postfix version.

-

Depending on the compatibility_level parameter setting, Postfix -continues to use backwards-compatible default settings, and logs -the use of those backwards-compatible default settings with messages -that contain the string "using legacy default setting". Based on -this logging the system administrator can determine that a new -default setting breaks nothing or that a backwards-compatible -default setting needs to be made permanent in main.cf or master.cf. -

+

While the backwards-compatible default settings are in effect, +Postfix logs what services or what email would be affected by +the incompatible change.

-

After this review is complete, and no more backwards-compatible -settings need to be made permanent, the administrator should accept -the remaining Postfix built-in default settings by updating the -compatibility_level setting in main.cf as recommended in the Postfix -RELEASE_NOTES.

+

Based on this logging the system administrator can determine +whether or not a backwards-compatible default setting needs to be +made permanent in main.cf or master.cf.

+ +

Changes introduced with Postfix 2.12 (compatibility level 1):

+ + + +

When no more backwards-compatible settings need to be made +permanent, the administrator should turn off the backwards-compatible +default settings by updating the compatibility_level setting in +main.cf.

+ +
+# postconf compatibility_level=1
+# postfix reload
+
+ +

Future incompatible changes will require setting "compatibility_level += 2", and so on.

This feature is available in Postfix 2.12 and later.

diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 86ebfd11b..87ba293d7 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -890,23 +890,139 @@ delivery by the \fBpipe\fR(8) delivery agent. Note: if you set this time limit to a large value you must update the global ipc_timeout parameter as well. .SH compatibility_level (default: 0) -A safety net that forces Postfix to keep running with -backwards-compatible main.cf and master.cf default settings after -an upgrade to a newer but incompatible Postfix version. +A safety net that forces Postfix to run with backwards-compatible +main.cf and master.cf default settings after an upgrade to a newer +but incompatible Postfix version. .PP -Depending on the compatibility_level parameter setting, Postfix -continues to use backwards-compatible default settings, and logs -the use of those backwards-compatible default settings with messages -that contain the string "using legacy default setting". Based on -this logging the system administrator can determine that a new -default setting breaks nothing or that a backwards-compatible -default setting needs to be made permanent in main.cf or master.cf. +While the backwards-compatible default settings are in effect, +Postfix logs what services or what email would be affected by +the incompatible change. .PP -After this review is complete, and no more backwards-compatible -settings need to be made permanent, the administrator should accept -the remaining Postfix built-in default settings by updating the -compatibility_level setting in main.cf as recommended in the Postfix -RELEASE_NOTES. +Based on this logging the system administrator can determine +whether or not a backwards-compatible default setting needs to be +made permanent in main.cf or master.cf. +.PP +Changes introduced with Postfix 2.12 (compatibility level 1): +.IP \(bu +The master.cf chroot default value has changed from "y" +(yes) to "n" (no). As long as the backwards-compatible default +settings are turned on, Postfix logs a warning each time the master +daemon reads the master.cf file: +.sp +.nf +.na +.ft C +postfix/master[27664]: /etc/postfix/master.cf: line 72: using + backwards-compatible default setting chroot=y +.fi +.ad +.ft R +.sp +If Postfix logs such messages for a service that should remain +chrooted, then the system administrator should make the +backwards-compatible setting "chroot = y" permanent in master.cf. +For example, to update the chroot setting for the "smtp inet" +service: +.sp +.nf +.na +.ft C +# \fBpostconf -F smtp/inet/chroot=y\fR +# \fBpostfix reload\fR +.fi +.ad +.ft R +.IP \(bu +The append_dot_mydomain default value has changed from +"yes" to "no". As long as the backwards-compatible default settings +are turned on, Postfix logs a warning for each email address with +an incomplete domain: +.sp +.nf +.na +.ft C +postfix/trivial-rewrite[25835]: using backwards-compatible + default setting append_dot_mydomain=yes to rewrite "foo" to + "foo.example.com" +.fi +.ad +.ft R +.sp +The backwards-compatible setting prevents delivery errors for +email with an incomplete domain in an email address. If Postfix +logs the above message for addresses different from "user@localhost", +and the client cannot be changed to use complete domain names in +email addresses, then the system administrator should make the +backwards-compatible setting "append_dot_mydomain = yes" permanent +in main.cf: +.sp +.nf +.na +.ft C +# \fBpostconf append_dot_mydomain=yes\fR +# \fBpostfix reload\fR +.fi +.ad +.ft R +.IP \(bu +The smtputf8_enable default value has changed from "no" +to "yes. As long as the backwards-compatible default settings are +turned on, Postfix logs a warning each time an SMTP command uses a +non-ASCII address localpart: +.sp +.nf +.na +.ft C +postfix/smtpd[27560]: using backwards-compatible default setting + smtputf8_enable=no to accept non-ASCII sender address + "??@example.org" from localhost[127.0.0.1] +.fi +.ad +.ft R +.sp +.nf +.na +.ft C +postfix/smtpd[27560]: using backwards-compatible default setting + smtputf8_enable=no to accept non-ASCII recipient address + "??@example.com" from localhost[127.0.0.1] +.fi +.ad +.ft R +.sp +The backwards-compatible setting prevents Postfix from rejecting +non-SMTPUTF8 email from legacy clients that send email with a +non-ASCII sender or recipient address localpart. If Postfix logs +the above messages and the client cannot be updated to use SMTPUTF8, +then the system administrator should make the backwards-compatible +setting "smtputf8_enable = no" permanent in main.cf: +.sp +.nf +.na +.ft C +# \fBpostconf smtputf8_enable=no\fR +# \fBpostfix reload\fR +.fi +.ad +.ft R +.br +.PP +When no more backwards-compatible settings need to be made +permanent, the administrator should turn off the backwards-compatible +default settings by updating the compatibility_level setting in +main.cf. +.PP +.nf +.na +.ft C +# \fBpostconf compatibility_level=1\fR +# \fBpostfix reload\fR +.fi +.ad +.ft R +.PP +Future incompatible changes will require setting "compatibility_level += 2", and so on. .PP This feature is available in Postfix 2.12 and later. .SH config_directory (default: see "postconf -d" output) diff --git a/postfix/mantools/postconf2html b/postfix/mantools/postconf2html index 0e0c9816c..5ad038f46 100755 --- a/postfix/mantools/postconf2html +++ b/postfix/mantools/postconf2html @@ -7,7 +7,10 @@ # - Process input as text blocks separated by one or more empty # (or all whitespace) lines. # -# - Skip text between ; each must be on a different line. +# - Remove text between ; each may be on a different line. +# +# - Optionally remove pass-through requests (unless +# the -n option is specified). # # - Don't touch blocks that start with `<' in column zero. # @@ -18,13 +21,14 @@ # # All other non-comment input is flagged as an error. -#use Getopt::Std; +use Getopt::Std; -#$opt_h = undef; -#$opt_v = undef; -#getopts("hv"); +$opt_h = undef; +$opt_v = undef; +$opt_n = undef; +getopts("hnv"); -#die "Usage: $0 [-hv]\n" if ($opt_h); +die "Usage: $0 [-nv]\n" if ($opt_h); #push @ARGV, "/dev/null"; # XXX @@ -48,6 +52,9 @@ while(<>) { { $comment = 0; $block =~ s///sg; } } while((($_ = <>) && /\S/) || $comment); + # Strip nroff escapes. + $block =~ s/<\s*nroffescape[^>]+>//g unless $opt_n; + # Skip blanks after comment elimination. if ($block =~ /^\s/) { $block =~ s/^\s+//s; diff --git a/postfix/mantools/postconf2man b/postfix/mantools/postconf2man index ba6205335..0229019fa 100755 --- a/postfix/mantools/postconf2man +++ b/postfix/mantools/postconf2man @@ -7,6 +7,9 @@ # - Process input as blocks of text separated by one or more empty # (or all whitespace) lines. # +# - Process pass-through requests for things that this +# script cannot do automatically. +# # Caution: this depends heavily on the postconf2html output format. #use Getopt::Std; @@ -82,6 +85,7 @@ while(<>) { $block =~ s/—/-/g; $block =~ s/\s+\n/\n/g; $block =~ s/^\n//g; + $block =~ s/\s*<\s*nroffescape\s+([^ >]+)\s*>\s*/\n\1\n/g; $block =~ s/([a-z][_a-zA-Z0-9-]*)(\([0-9]\))/\\fB\1\\fR\2/g; print $block; $wantpp = !($block =~ /^\.(SH|IP)/); diff --git a/postfix/proto/Makefile.in b/postfix/proto/Makefile.in index 32049443b..8063f2d94 100644 --- a/postfix/proto/Makefile.in +++ b/postfix/proto/Makefile.in @@ -487,7 +487,8 @@ clobber: ../man/man5/postconf.5: postconf.man.prolog postconf.proto postconf.man.epilog \ ../mantools/xpostconf ../mantools/postconf2html ../mantools/postconf2man (cat postconf.man.prolog; ../mantools/xpostconf postconf.proto | \ - $(DETAB) | ../mantools/postconf2html | ../mantools/postconf2man | \ + $(DETAB) | ../mantools/postconf2html -n | \ + ../mantools/postconf2man | \ sed 's/\\e&/\\\&/'; cat postconf.man.epilog ) > $@ ../html/postconf.5.html: postconf.html.prolog postconf.proto \ diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index fc345c7c5..72d91bea2 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -39,6 +39,9 @@ # * Text between is stripped out. The # must appear on separate lines. # +# * Use to request an empty line in the middle +# of a block of text. This is needed with indented lists. +# # * Blank lines are special for postconf2man: it replaces them by # a "new paragraph" command. Don't put any blank lines inside #
text. Instead, put those blank lines between @@ -16199,23 +16202,124 @@ mail.
%PARAM compatibility_level 0 -

A safety net that forces Postfix to keep running with -backwards-compatible main.cf and master.cf default settings after -an upgrade to a newer but incompatible Postfix version.

+

A safety net that forces Postfix to run with backwards-compatible +main.cf and master.cf default settings after an upgrade to a newer +but incompatible Postfix version.

-

Depending on the compatibility_level parameter setting, Postfix -continues to use backwards-compatible default settings, and logs -the use of those backwards-compatible default settings with messages -that contain the string "using legacy default setting". Based on -this logging the system administrator can determine that a new -default setting breaks nothing or that a backwards-compatible -default setting needs to be made permanent in main.cf or master.cf. +

While the backwards-compatible default settings are in effect, +Postfix logs what services or what email would be affected by +the incompatible change.

+ +

Based on this logging the system administrator can determine +whether or not a backwards-compatible default setting needs to be +made permanent in main.cf or master.cf.

+ +

Changes introduced with Postfix 2.12 (compatibility level 1):

+ + + +

When no more backwards-compatible settings need to be made +permanent, the administrator should turn off the backwards-compatible +default settings by updating the compatibility_level setting in +main.cf.

+ +
+# postconf compatibility_level=1
+# postfix reload
+
+ +

Future incompatible changes will require setting "compatibility_level += 2", and so on.

This feature is available in Postfix 2.12 and later.

diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 464009f1f..66d55e7fc 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -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 "20141001" +#define MAIL_RELEASE_DATE "20141002" #define MAIL_VERSION_NUMBER "2.12" #ifdef SNAPSHOT diff --git a/postfix/src/master/master_ent.c b/postfix/src/master/master_ent.c index 3681e038d..25fa26823 100644 --- a/postfix/src/master/master_ent.c +++ b/postfix/src/master/master_ent.c @@ -203,9 +203,9 @@ static char *get_str_ent(char **bufp, char *name, char *def_val) if (def_val == 0) fatal_with_context("field \"%s\" has no default value", name); if (warn_compat_break_chroot && strcmp(name, "chroot") == 0) - msg_info("%s: line %d: using legacy default setting %s=%s (" - VAR_COMPAT_LEVEL "<1)", master_path, master_line, - name, def_val); + msg_info("%s: line %d: using backwards-compatible default setting " + "%s=%s (" VAR_COMPAT_LEVEL "<1)", master_path, + master_line, name, def_val); return (def_val); } else { return (value); diff --git a/postfix/src/postfix/postfix.c b/postfix/src/postfix/postfix.c index bada7b928..c9c0e435b 100644 --- a/postfix/src/postfix/postfix.c +++ b/postfix/src/postfix/postfix.c @@ -496,16 +496,16 @@ int main(int argc, char **argv) get_mail_conf_str_table(str_table); /* - * Alert the sysadmin that the backwards-compatible settings are still - * in effect. + * Alert the sysadmin that the backwards-compatible settings are still in + * effect. */ if (var_compat_level < CUR_COMPAT_LEVEL) { msg_warn("Postfix is running with backwards-compatible default " "settings"); msg_warn("See http://www.postfix.org/postconf.5.html#" VAR_COMPAT_LEVEL " for details"); - msg_warn("Use \"postconf " VAR_COMPAT_LEVEL "=%d\" to disable " - "the backwards-compatible default settings", + msg_warn("To disable backwards compatibility use \"postconf " + VAR_COMPAT_LEVEL "=%d\" and \"postfix reload\"", CUR_COMPAT_LEVEL); } diff --git a/postfix/src/smtpd/smtpd.c b/postfix/src/smtpd/smtpd.c index 8245db982..38b67a7c1 100644 --- a/postfix/src/smtpd/smtpd.c +++ b/postfix/src/smtpd/smtpd.c @@ -2492,10 +2492,10 @@ static int mail_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv) return (-1); } if (warn_compat_break_smtputf8_enable) - msg_info("using legacy default setting " VAR_SMTPUTF8_ENABLE - "=no to accept non-ASCII sender address \"%s\" from " - "%s (" VAR_COMPAT_LEVEL "<1)", STR(state->addr_buf), - state->namaddr); + msg_info("using backwards-compatible default setting " + VAR_SMTPUTF8_ENABLE "=no to accept non-ASCII sender " + "address \"%s\" from %s (" VAR_COMPAT_LEVEL "<1)", + STR(state->addr_buf), state->namaddr); } /* @@ -2750,10 +2750,10 @@ static int rcpt_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv) return (-1); } if (warn_compat_break_smtputf8_enable) - msg_info("using legacy default setting " VAR_SMTPUTF8_ENABLE - "=no to accept non-ASCII recipient address \"%s\" from" - " %s (" VAR_COMPAT_LEVEL "<1)", STR(state->addr_buf), - state->namaddr); + msg_info("using backwards-compatible default setting " + VAR_SMTPUTF8_ENABLE "=no to accept non-ASCII recipient " + "address \"%s\" from %s (" VAR_COMPAT_LEVEL "<1)", + STR(state->addr_buf), state->namaddr); } if (SMTPD_STAND_ALONE(state) == 0) { const char *verify_sender; diff --git a/postfix/src/trivial-rewrite/rewrite.c b/postfix/src/trivial-rewrite/rewrite.c index b09cc8cee..0aed10c7d 100644 --- a/postfix/src/trivial-rewrite/rewrite.c +++ b/postfix/src/trivial-rewrite/rewrite.c @@ -197,10 +197,11 @@ void rewrite_tree(RWR_CONTEXT *context, TOK822 *tree) && tok822_find_type(domain, '.') == 0) { if (warn_compat_break_app_dot_mydomain && (vstringval = domain->next->vstr) != 0) - msg_info("using legacy default setting " VAR_APP_DOT_MYDOMAIN - "=yes to rewrite \"%s\" to \"%s.%s\" (" VAR_COMPAT_LEVEL - " < 1)", vstring_str(vstringval), - vstring_str(vstringval), var_mydomain); + msg_info("using backwards-compatible default setting " + VAR_APP_DOT_MYDOMAIN "=yes to rewrite \"%s\" to " + "\"%s.%s\" (" VAR_COMPAT_LEVEL " < 1)", + vstring_str(vstringval), vstring_str(vstringval), + var_mydomain); tok822_sub_append(tree, tok822_alloc('.', (char *) 0)); tok822_sub_append(tree, tok822_scan(REW_PARAM_VALUE(context->domain), (TOK822 **) 0));