今やMTAはPostfixが世界標準となっていますが、そのままですと何通流れたか等が見えにくいのでテキスト形式で簡単に概略をまとめてくれるpflogsummというツールを試してみました。
perlで書かれたスクリプトでmaillogをそのまま食わす形となります。まずインストールを行います。
# dnf install postfix-perl-scripts # rpm -qa | grep postfix-perl postfix-perl-scripts-3.5.9-24.el9.x86_64 |
パッケージ名はpostfix-perl-scriptsですが実際の解析コマンドはpflogsummとなります。ただ、そのままコマンドを実行すると細かくデータが出すぎるのである程度オプションをつけて要約したデータを出します。
// Host/DomainおよびSender/Recipientsを上位100までに絞る // deferral, bounce, rejectについて詳細を表示 # pflogsumm -u 100 -h 100 --verbose_msg_detail /var/log/maillog |
ちなみに-dでtodayやyesterdayを指定しなければ/var/log/maillogにある全てのログを解析します。ログ自体を日ごとにローテイトすることをおすすめします。
この実行結果をメールで飛ばそうと以下のシェルを書いてみました。cronで1日1回起動して自動通知をしています。
#!/bin/bash MAILTO=xxxx@hoge.co.jp MAILFROM=xxxx@hoge.co.jp kinou=`date --date '1 day ago' "+%Y%m%d"` maillog="maillog-"$kinou REPORT=`mktemp` pflogsumm -u 50 -h 50 --verbose_msg_detail /var/log/$maillog > $REPORT cat $REPORT | mail -s "[`hostname`] MailReport" -S mta=smtp://xx.xx.xx.xx:25 -S smtp-auth=none -S v15-compat=yes from=$MAILFROM $MAILTO |