Hello.

I already mentioned this topic several years ago, and
described a technique I used to compensate the problem
at this time (and it is still usable and in use today).

The problem is that on typical workstation or any other
non-mail-heavy-load machine, postfix in its default
configuration constantly triggeres filesystem writes,
which results in either disks spinning up or SSDs doing
writes where they can just idle.

This happens due to master constantly (every 5 minutes
by default) poking qmgr to re-scan its queues.  This is
done by writing a byte into public/qmgr pipe, which
triggers mtime update on filesystem level, which in turn
results in a write - single write every 5 minutes, and
this happens all the time even if the system does not
deliver any mail at all.


All major Unixes these days have one or another sort of
tmpfs filesystem - a filesystem residing in RAM entirely
(or it might be backed up by swap storage) but acting as
a regular filesystem.  Files on such filesystem aren't
preserved during reboot obviously.

The "trick" I use with postfix for a long time locally
to address this issue is to mount a tmpfs on linux on
/var/spool/postfix/run, create subdirs (pid, public,
private) there and replace the corresponding subdirs
in /var/spool/postfix to symlinks to these directories.
Separate /run is to avoid the need to create several
filesystems (one for each of pid/, public/ and private/).

This works, but postfix complains that it finds dirs with
"wrong" permissions (the symlinks have 0777 mode).

So, the question is: can postfix change the paths so
that all these "runtime" dirs are in a single subdir
(as run/pid, run/public, run/private) - that is changing
3 strings in postfix code (and postfix-files) and adding
one extra line into postfix-files, -- in order to simplify
such a setup ?

I'm fine to change postfix-files locally so it looks at
run/pid etc instead of pid, but that appears to be a bit
ugly...

(One can argue the same writes will happen due to atime
updates on the directories qmgr scans, but again, many
modern OSes addressed this problem already, by -
optionally - omitting atime updates if atime already
greather than mtime (on linux, this mount option is
named relatime, and is on by default on modern kernels))

Thanks!

/mjt

Reply via email to