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 "?@example.com"

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

Reply via email to