Jonathan Hammer: > Hi, > > We are running Postfix on macOS and making use of `maillog_file = > /dev/stdout` and `postfix start-fg` to send our logs to stdout. Not using > Docker. > > We would like to pipe the logs from stdout to another process to do some > analysis and post-processing, like so: > > $ postfix start-fg | our-custom-log-analyzer? > > However, in this configuration, Postfix fails to start and logs this error: > > fatal: open logfile ?/dev/stdout?: file has 0 hard links
Here is one suggestion to make this more robust. Insteead of postfix start-fg | analyzer which requires restarting Postfix when the analyzer needs to be restarted. use a named pipe, like thisL test -e /path/to/fifo || mkfifo /path/to/fifo analyzer < /path/to/fifo & postfix start-fg > /path/to/fifo With this, you can restart the analyzer independently from Postfix. It also avoids the nonsense with stdout having a zero link count. Quick demo on Macos: $ mkfifo fifo $ cat <fifo& [1] 45582 $ ls -lL /dev/stdout >fifo prw-r--r-- 1 wietse eng 0 Sep 24 10:22 /dev/stdout [1]+ Done cat < fifo $ Note the link count of '1'. That said, stdout logging is intended for containers that don't run other programs. It does not work when a non-root user runs a Postfix command; in that case, stdout logging may be intermingled with normal command output. Wietse