I am implementing a safety net for incompatible Postfix configuration
changes. After a Postfix upgrade, this will allow you to keep
running Postfix with the historical default settings, during which
time Postfix will log all uses of any old default value that will
be affected by an incompatible change.
Examples:
master.cf: line 72: using legacy default setting chroot=y
using legacy default setting append_dot_mydomain=yes to rewrite
"foo" to "foo.example.com"
using legacy default setting smtputf8_enable=no to accept
non-ASCII address "[email protected]"
Once you have run Postfix for some time, you know if any main.cf or
master.cf setting needs to be updated (set explicitly to old default
value) before you can turn off these checks. More on that below.
The safety net is controlled with one configuration parameter:
name: compatibility_level
default: 0 (zero)
At this time, no Postfix system has a compatibility_level setting
in main.cf, therefore it will be zero.
There is also an internal compatibility level that increments by 1
with each incompatible change. With the next Postfix snapshot, this
internal level will be 1.
The next time you upgrade Postfix, the main.f compatibility level
will be zero, which is smaller than the internal level of 1.
This turns on a couple things:
- Use backwards-compatible default settings so that Postfix keeps
working as before.
- Log the above messages when Postfix is actually using any of those
backwards-compatible default settings. This will show whether your
site depends on the old defaults.
Finally, you set the parameters explicitly that must stay at their
historical value, and configure "compatibility_level = 1" in main.cf.
This turns off the checks and warnings.
Wietse