Op 23/08/2013 om 09:51:07 -0400, schreef Wietse Venema:
> Wietse Venema:
> > Leo Baltus:
> > > Op 19/08/2013 om 13:11:04 -0400, schreef Wietse Venema:
> > > > Leo Baltus:
> > > > > > > However, I did notice that postfix exec()'s new processes using 
> > > > > > > the
> > > > > > > path to the binaries it got from 
> > > > > > >         'PATH=symlink_to_postfix/sbin postfix start' 
> > > > > > > instead of compile-time arguments DEF_COMMAND_DIR DEF_DAEMON_DIR 
> > > > > > > etc.
> > > > > > 
> > > > > > The Postfix master(8) daemon executes programs with pathnames
> > > > > > that are derived from the $daemon_directory value.
> > > > > > 
> > > > > 
> > > > > Where $daemon_directory defaults to DEF_DAEMON_DIR? 
> > > > 
> > > > The Postfix installation/upgrade procedure, as distributed by me,
> > > > always sets daemon_directory in main.cf. Therefore, that setting
> > > > takes precedence over DEF_DAEMON_DIR.
> > > > 
> > > 
> > > We do not set daemon_directory etc. in main.cf because we like it to be 
> > > set
> > > to DEF_DAEMON_DIR. I hope this is a supported feature because it allows
> > > us to quickly rollback changes, like in this case.
> > 
> > You break the warranty, therefore you own all the problems that
> > result from not using (or from changing) the Postfix installation
> > or upgrade procedure.
> 
> Instead of modding the install/upgrade scripts, you could symlink
> daemon_directory, command_directory, sendmail_path, mailq_path,
> manpath, and so on and avoid braking the warranty.
> 

Changing the symlinks while running postfix would immediatly affect
newly forked processes, which is what I am trying to avoid.

Also the symlink is used by several instances on the machine, so
changing it would affect all of them.

> However, you must run "postfix upgrade-configuration" when you
> switch from an older Postfix version to a newer one. Otherwise
> there is no guarantee that it will work properly.
> 
> Switching from a newer release to an older one requires careful
> backing out of configuration changes.  For example, files with long
> queue ID names will not be recognized by Postfix versions that
> pre-date long queue ID support. You have to revert to old queue IDs
> as documented in the RELEASE_NOTES file.
> 
>       Wietse
> 
> > > After examining further I found in the environment of the master process
> > > that with postfix-2.9.6 daemon_directory is set to $PATH/libexec and
> > > command_directory is set to $PATH/sbin, however sendmail_path,
> > 
> > Postfix as distributed by me does not prepend the PATH environment
> > to its program names, and no version of Postfix has done this.

I think I found what is going on.

We start postfix:

env -i PATH=/local/pf/sbin postfix -c /my/mx/main.cf start

Where /local/pf -> /software/postfix-x.y

Before this however we run 
  /local/pf/libexec/post-install queue_directory=... create-missing
so the neccesary directories are created. I must say that I find it
redundant, our management system should have created them in the
first place.

It seems that this command *changes* main.cf and adds daemon_directory
using the path it got from starting postfix:

  eval test \"\$$name\" = \"`$POSTCONF -c $config_directory -h $name`\" || {
with daemon_directory it evaluates to 
  test "/local/pf/libexec" = "/software/postfix-x.y/libexec" || {
and so it decides to change main.cf

master now uses /local/pf/libexec as its daemon_directory.

Now, our management system regularly overwrites all configuration so I
wasn't aware of this change.

After a stop and start, without post-install because all directories are
there now, master uses the compiled-in daemon_directory.

So, I think I know what is going on and how to stop postfix from
changing main.cf.

I am aware that this is by no means a standard set-up so I apologize for
the confusion this may have caused.

-- 
Leo Baltus, internetbeheerder                         /\
NPO ICT Internet Services                            /NPO/\
Sumatralaan 45, 1217 GP Hilversum, Filmcentrum, west \  /\/
serviced...@omroep.nl, 035-6773555                    \/

Reply via email to