On Fri, Jan 06, 2023 at 06:42:18PM +0100, Peter Wienemann wrote:
> Most changes in main.cf require a reload to become effective
No. In most cases they merely require the passage of time, and typical
changes are not that time-sensitive.
> I am trying to put main.cf under configuration
> management and have to trigger an action each time main.cf changes such
> that the changes become effective.
If you make changes to main.cf that are time-sensitive, push a separate
file whose update will cause a reload. If your changes require a
restart, push a separate file whose update triggers a restart. Most of
the time leave both sentinel files alone.
> At the moment I always perform a restart after a change of main.cf
> (just to be on the safe side).
This is not necessary in most cases, and should be avoided if possible.
> But on a busy mail server this is not ideal. I am looking for a way to
> do better. One idea that came to my mind is:
Reloads are also not ideal.
> 1. Initially try a reload and check whether the effective configuration
> is different from the target configuration as specified in main.cf.
>
> 2. If both match, we are done. If there is a discrepancy, launch a restart.
You're over-engineering the problem. Let the operator who authors the
change decide whether a restart or reload is required, or whether just
normal Postfix process recycling is sufficient for your needs.
On a busy server, you can reduce max_idle and or max_use to recycle
processes more often:
max_idle = 3s
max_use = 20
Most smtpd(8) processes and delivery agents would last not much longer
than a minute before they exit and are replaced. The additional cost
of process creation will be modest.
--
Viktor.