📧

Postfixがlogを出力しない(Docker container内にPostfixをinstallした場合)

2021/12/16に公開

課題

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が出ない原因

  1. Postfixはデフォルトではsyslogを使う。
    Postfixのlogはsyslog(rsyslog)によって生成されます。
    これがデフォルトの設定です。
    詳細は公式サイトをご覧ください。

  2. 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