Postfix Backwards-Compatibility Safety Net


Purpose of this document

Postfix 3.0 introduces a safety net that runs Postfix programs with backwards-compatible default settings after an upgrade. The safety net will log a warning whenever a "new" default setting could have an negative effect on your mail flow.

This document provides information on the following topics:

Overview

With backwards compatibility turned on, Postfix logs a message whenever a backwards-compatible default setting may be required for continuity of service. Based on this logging the system administrator can decide if any backwards-compatible settings need to be made permanent in main.cf or master.cf, before turning off the backwards-compatibility safety net as described at the end of this document.

The following messages may be logged:

If such a message is logged in the context of a legitimate request, the system administrator should make the backwards-compatible setting permanent in main.cf or master.cf, as detailed in the sections that follow.

When no more backwards-compatible settings need to be made permanent, the system administrator should turn off the backwards-compatibility safety net as described at the end of this document.

Using backwards-compatible default setting append_dot_mydomain=yes

The append_dot_mydomain default value has changed from "yes" to "no". As long as the append_dot_mydomain parameter is left at its implicit default value, and the backwards-compatible default setting is turned on, Postfix may log one of the following messages:

Using backwards-compatible default setting chroot=y

The master.cf chroot default value has changed from "y" (yes) to "n" (no). As long as a master.cf chroot field is left at its implicit default value, and the backwards-compatible default setting is turned on, Postfix may log the following message while it reads the master.cf file:

postfix/master[27664]: /etc/postfix/master.cf: line 72: using
    backwards-compatible default setting chroot=y

If this service 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:

# postconf -F smtp/inet/chroot=y
# postfix reload

Using backwards-compatible default setting mynetworks_style=subnet

The mynetworks_style default value has changed from "subnet" to "host". This parameter is used to implement the "permit_mynetworks" feature. As long as the mynetworks and mynetworks_style parameters are left at their implicit default values, and the backwards-compatible default setting is turned on, the Postfix SMTP server may log one of the following messages:

postfix/smtpd[17375]: using backwards-compatible default setting
    mynetworks_style=subnet to permit request from client
    "foo.example.com[10.1.1.1]"
postfix/postscreen[24982]: using backwards-compatible default
    setting mynetworks_style=subnet to permit request from client
    "10.1.1.1"

If the client request should not be rejected, then the system administrator should make the backwards-compatible setting "mynetworks_style = subnet" permanent in main.cf:

# postconf mynetworks_style=subnet
# postfix reload

Using backwards-compatible default setting relay_domains=$mydestination

The relay_domains default value has changed from "$mydestination" to the empty value. As long as the relay_domains parameter is left at its implicit default value, and the backwards-compatible default setting is turned on, Postfix may log one of the following messages.

If Postfix should continue to accept mail for that domain or continue to provide ETRN service for that domain, then the system administrator should make the backwards-compatible setting "relay_domains = $mydestination" permanent in main.cf:

# postconf 'relay_domains=$mydestination'
# postfix reload

Note: quotes are required as indicated above.

Instead of $mydestination, it may be better to specify an explicit list of domain names.

Using backwards-compatible default setting smtputf8_enable=no

The smtputf8_enable default value has changed from "no" to "yes. With the new "yes" setting, the Postfix SMTP server rejects non-ASCII addresses from clients that don't request SMTPUTF8 support. With the old "no" setting, Postfix will accept such addresses, even if such addresses are not permitted by traditional SMTP standards.

As long as the smtputf8_enable parameter is left at its implicit default value, and the backwards-compatible default setting is turned on, Postfix logs a warning each time an SMTP command uses a non-ASCII address localpart without requesting SMTPUTF8 support:

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]
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]

If the address should not be rejected, 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:

# postconf smtputf8_enable=no
# postfix reload

Turning off the backwards-compatibility safety net

Backwards compatibility is turned off by updating the compatibility_level setting in main.cf.

# postconf compatibility_level=N
# postfix reload

For N specify the number that is logged in your postfix(1) warning message:

warning: To disable backwards compatibility use "postconf compatibility_level=N" and "postfix reload"

Sites that don't care about backwards compatibility may set "compatibility_level = 9999" at their own risk.