Geert Stappers:
> So I'm also curious if there is a "syntax checker"
> that reports missing files.

How would a program know that a string 'foobar' is a file reference
1) in main.cf or master.cf
2) in a file that is referenced by 1)
3) in a file that is referenced by a file that is referenced by 1)
4) and so on.

Answer: in many cases the only program that knows if 'foobar' is a
file reference is the program that uses 'foobar' as a file reference.

For a Postfix configuration checker to answer your question, I see
two options.

1) In the configuration checker, duplicate all the parts of all
programs that understand file references. Code duplication is
undesirable because it makes Postfix more difficult to change.

2) In the configuration checker, ask every Postfix program to "check"
the file references that it knows about.  Part of this involves
starting up the Postfix mail server and running all daemons with a
special option, so that each daemon opens all databases, all files,
and all sockets, and then terminates without causing permanent side
effects other than logging some warnings.

The second option makes the most sense because it can reuse the
existing code in each daemon program that opens databases as that
daemon starts to execute. In the case of the SMTP daemon, that
includes database references in smtpd_mumble_restrictions.  But
this trick cannot check pathnames in non-Postfix programs such as
those executed by the spawn(8) or pipe(8) daemons.

I do not expect that this option will be implemented soon. It will
likely be a multi-year project, just like the effort to make the
postconf command understand master.cf, and to make it complain about
unknown parameter names.

        Wietse

Reply via email to