On 1/20/26 18:04, Viktor Dukhovni via Postfix-users wrote:
On Tue, Jan 20, 2026 at 05:37:38PM +0100, arjen-postfix-users-212--- via
Postfix-users wrote:
Hi list,
sorry in advance for a possible dumb question.
- output is printed to the console:
postfix tls new-server-cert
- output is printed to the console:
postfix tls new-server-cert 2>&1
- output is not printed:
postfix tls new-server-cert 2>/dev/null
- empty file /tmp/certinfo:
postfix tls new-server-cert 2>/tmp/certinfo
- empty file /tmp/certinfo:
postfix tls new-server-cert >/tmp/file 2>&1
I wanna catch the output to parse it and run
postfix tls deploy-server-cert
What am I doing wrong? Any suggestions?
These messages are written to the system log using postlog(1), which
also prints them to stderr, provided stderr is attached to a terminal,
but as soon as you redirect the output to a file, postlog(1) obligingly
writes only to the system log.
The socat(1) program can work around this limitation:
$ socat - EXEC:"postlog -t experiment 'this is a
test'",pty,stderr,setsid,sigint,echo=0 2>&1 | cat
experiment: this is a test
# grep 'this is a test' /var/log/postfix/log
Jan 21 03:54:07 amnesiac experiment[3386510]: this is a test
So you can run "postfix tls ..." inside a socat(1)-managed PTY.
Ok, thanks Wietse and Victor.
So it is normal that I get an empty file in postfix 3.7 and lower. I
will use
# postfix tls new-server-cert 2>/dev/null && sleep 1 && grep 'postfix
tls deploy-server-cert' /var/log/maillog | tail -1 | awk -F' # '
'{print $2}'
Arjen.
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]