Postfixがlogを出力しない(Docker container内にPostfixをinstallした場合)
課題
Docker container内にinstallしたPostfixがlogを出力しない。
logを出力したい。
環境
Dockerのbase imageには、php:8.0-fpmを用いています。
php:8.0-fpmのbase imageはdebian:bullseye-slimです。
Postfixのversionは3.5.6です。
logが出ない原因
-
Postfixはデフォルトではsyslogを使う。
Postfixのlogはsyslog(rsyslog)によって生成されます。
これがデフォルトの設定です。
詳細は公式サイトをご覧ください。 -
debianのslim imageにはsyslogがインストールされていない。
debianのslim imageには、syslog(rsyslog)がインストールされていません。
slim imageは最小限の機能がインストールされたimageだからです。
詳細は公式サイトをご覧ください。
これら2つの原因によりPostfixはlogを出力していませんでした。
解決策1
Postfix自体のlogシステムを利用する解決策です。
則ち、logの出力にsyslogを用いない方法です。
main.cfに以下の項目を追加します。
maillog_file = /var/log/yourLogFileName.log
/var/log/yourLogFileName.logにログが出力されるようになります。
注意
- main.cfに追加した内容を反映させるには、
postfix reload
を行う必要があります。 -
postfix reload
を行うためには、postfix start
する必要があります。postfix start
するためには、main.cfの設定項目をある程度埋める必要があります。main.cfの設定方法に関しては、このサイトなどを参考にしてみて下さい。
解決策2
syslog(rsyslog)をインストールする解決策です。
則ち、logの出力にsyslogを用いる方法です。
例えば、container内で下記のコマンドを実行します。
apt install rsyslog -y
/etc/init.d/rsyslog start
/var/log/mail.logにログが出力されるようになります。
containerにsyslog(rsyslog)をインストールする方法は数多あると思うので、他のやり方が良い場合は調べてみて下さい。
Discussion