Debian 11 (bullseye) - Postfix ログ解析!

Updated:


Debian GNU/Linux 11 (bullseye) に導入した SMTP サーバ Postfix のログを解析する方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 11.0.0 (bullseye; 64bit) での作業を想定。
  • 接続元のマシンも Debian GNU/Linux 11 (bullseye; 64bit) を想定。
  • SMTP サーバ Postfix を「Debian 11 (bullseye) - SMTP サーバ Postfix 構築!」の方法で導入済み。
  • ログローテート(logrotate)でメールログがローテーションされていることを想定。(デフォルトでなっているはず)
  • root ユーザでの作業を想定。

1. pflogsumm のインストール

Postfix のログ解析ツールである pflogsumm を、以下のようにしてインストールする。

# apt -y install pflogsumm

2. pflogsumm 実行用スクリプトの作成

pflogsumm を実行するスクリプト pflogsumm_report を以下のように作成する。
単純に pflogsumm コマンドを実行するだけでもレポートはできるが、それだとログローテートしている場合に正常に取得できない部分も発生する可能性があるので、それを考慮している。
また、以下のスクリプトでは前日のメールログを解析し、結果を postmaster 宛にメール送信している。

File: pflogsumm_report

#!/bin/bash

LANG=C
MAILLOG='mktemp'
for log in `ls /var/log/mail.log*|sort -r`
do
    cat $log >> $MAILLOG
done
REPORT=`mktemp`
pflogsumm --problems_first --verbose_msg_detail --mailq -d yesterday $MAILLOG > $REPORT
cat $REPORT | mail -s "`head -1 $REPORT` in `uname -n`" postmaster
rm -f $MAILLOG $REPORT

exit

スクリプト内のメール送信コマンド mail が使用できない場合は、mailutils or heirloom-mailx or bsd-mailx 等をインストールする。複数ある場合は、update-alternatives --config mailx でデフォルト設定をする。

なお、ログローテートしていない場合は、もっと簡単なスクリプトにすることも可能であるし、pflogsumm コマンドを直接実行して運用してもよい。

3. 実行権限の付与

# chmod 700 pflogsumm_report

4. スクリプトの実行

作成したスクリプトを実行してみる。
問題がなければ、 postmaster 宛にメールが送信されるはずである。

# ./pflogsumm_report

5. 自動実行の設定

毎日自動で実行するように cron 登録する。

# mv pflogsumm_report /etc/cron.daily/

以上。





 

Sponsored Link

 

Comments