Postfix snapshot 20140921 introduces small improvements in configuration
file syntax without breaking compatibility (except one: Postfix
will complain if you have "{" without matching "}").
These changes may not look like a big deal, but it was getting
really hard to add some functionality without running into limitations.
Goals of the current effort are:
- Maintain backwards compatibility. Do not break existing configuration
files.
- Keep it simple. The changes below introduce "{" and "}" to group
related text together. This will require some changes to tools
that parse Postfix files, but the changes are not dificult.
First, two changes that have been implemented sofar.
- In preparation for configurable mail headers and logging, new
main.cf support for if-then-else expressions:
${name?{text1}:{text2}}
and for logical expressions:
${{text1}=={text2}?{text3}:{text4}}
${{text1}!={text2}?{text3}:{text4}}
The old syntax still works exactly as before.
This change involves just one Postfix source file, and has
been verified with a large number of test cases.
- The syntax of pipemap and randmap has improved. Postfix now uses
pipemap:{map1, ..., mapN} and randmap:{result1, ..., resultN}.
The old syntax was just too ugly. It is no longer supported.
This code change affects about a dozen files, but the changes
are simple.
As long as the code changes are simple, I'll try to implement more
improvements along the same lines before Postfix 2.12 becomes frozen.
Examples of such improvements are:
- Milter clients and policy clients with non-default settings.
The old syntax works just as before but does not provide the
new functionality.
smtpd_milters = ...,
{inet:host:port, timeout=xxx, default_action=yyy}, ...
smtpd_mumble_restrictions = ...,
check_policy_service {inet:host:port, timeout=xxx}, ...
- Parameter overrides in master.cf that look the same as main.cf
settings. The old syntax still works but does not support spaces
around '=' or in parameter values.
-o { parameter = value ... }
...other Postfix daemon arguments...
These are just a few examples. Old features will keep working; only
some new features like pipemap: will require the new syntax.
Wietse