PostfixをDocker(Fargate)した後、maillogを出力するようにする方法

単純なメールリレーシステムを作成して安定稼働しているが、

シンプル構成のため、maillogへ出力していなかった。

このときハマった内容と解決策の記録のメモです。先生は、「Gemini2.5pro」です。

 

【環境】
Docker(Aws-Fargate)、postfix、OSは、CentOS7を使ったシンプルな環境
【課題】
よくあるのが、Dockerはシンプル構成なので、rsyslogを導入してOKってあるけどmaillogはでなかった。
【結論】
・/etc/rsyslog.conf をシンプルな形で利用する。

# /etc/rsyslog.conf (postfix用最小構成)

# — モジュールロード —
$ModLoad imuxsock # ローカルのUnixソケット (/dev/log) からの入力を提供
# $ModLoad imklog # カーネルログ (今回は不要かもしれないのでコメントアウト)
# $ModLoad imjournal # systemd journal からの入力 (今回はテストのためコメントアウト)

# — グローバルディレクティブ —
$WorkDirectory /var/lib/rsyslog # 作業ディレクトリ
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # ログフォーマット

# — ルール —
# すべてのファシリティ、すべてのプライオリティのメッセージを /var/log/messages に出力
*.* /var/log/messages

# メール関連のログを /var/log/maillog に出力 (ファイル名の前に「-」を付けて同期書き込みを抑制)
mail.* -/var/log/maillog

# — 以下、標準的な設定の残りはテストのため一旦コメントアウトまたは削除 —
# $OmitLocalLogging on
# $IMJournalStateFile imjournal.state
# *.info;mail.none;authpriv.none;cron.none /var/log/messages
# authpriv.* /var/log/secure
# cron.* /var/log/cron
# *.emerg :omusrmsg:*
# uucp,news.crit /var/log/spooler
# local7.* /var/log/boot.log

# — listen.conf のインクルードも一旦停止 —
# $IncludeConfig /etc/rsyslog.d/listen.conf

原因はよくわかりませんが、Gemini先生はこう言っています。
  • $ModLoad imjournal と $IMJournalStateFile imjournal.state: 前回のエラーメッセージ imjournal: sd_journal_get_cursor() failed からも、journald との連携部分に問題があった可能性が高いです。コンテナ環境では journald が期待通りに動作していない場合があります。
  • $OmitLocalLogging on(): これがローカルの logger からのメッセージを意図せず抑制していた可能性があります。
  • $InputUnixSocket /dev/log() と $SystemLogSocketName /run/systemd/journal/syslog () の両方またはどちらかが、imuxsock のデフォルト動作や他の設定と競合していた可能性があります。

しかし、生成AIの進歩ってすさまじい。人間は脳みそ使わなくても行ける感じ♪

タイトルとURLをコピーしました