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
If we don’t pipe the output, it starts just fine.
It looks like this check in `safe_open_exist` is to blame:
} else if (fstat_st->st_nlink != 1) {
vstring_sprintf(why, "file has %d hard links",
(int) fstat_st->st_nlink);
errno = EPERM;
When we pipe the output, st_nlink is 0, causing this check to fail. Do you
think it would be acceptable to relax this check to `if (fstat_st->st_nlink >
1)`, as shown in the attached patch?
Thanks!
Jonathan Hammer
e3 Software
https://e3software.com
0001-Relax-hard-link-check-in-safe_open-so-that-mail-logs.patch
Description: Binary data
