ログ(Postfix)
■main.cf でのログの設定
Postfixのログはsyslogdによって記録されます
syslog_facility = mail (デフォルト)
/etc/syslog.conf には下記のように記載
mail.* /var/log/mail.log
□さらに詳細なログを取る
/etc/postfix/master.cf で詳細な出力を行いたいプログラムに-vオプションを付与します
またさらに詳細なログは-vv オプションを使用します(-vvvでもっと詳細)
全てのプログラムに-vをつけたい場合は、postfix -vが便利です
※ログが膨大になるので注意
smtp inet n - n - - smtpd -v
■ログの内容
日時、ホスト名、syslog_name、postfix内部プログラム名、プロセスID、メッセージ の順
[メールを送信したときの参考ログ]…[x.x.x.x]はアクセスしてきたクライアントIPを示します
Sep 7 15:43:25 smtpsv1 mail:info postfix/smtpd[90288]: connect from unknown[x.x.x.x]
1.[クライアントIP]からsmtpdにアクセスがあった
Sep 7 15:43:26 smtpsv1 mail:info postfix/smtpd[90288]: 0AE89173: client=unknown[x.x.x.x]
2.[クライアントIP]からの接続に対してsmtpdがキューID「0AE89173」として処理を開始
Sep 7 15:43:26 smtpsv1 mail:info postfix/cleanup[233530]: 0AE89173: message-id=<D668A29AC55840D6ABFC8AAA2BEF4E44@testpc>
3.cleanupが同キューIDのメッセージ形式を確認し、そのメッセージIDがD668A29A…(省略)である
Sep 7 15:43:26 smtpsv1 mail:info postfix/qmgr[307414]: 0AE89173: from=<test@example.com>, size=1301, nrcpt=1 (queue active)
4.qmgrが同キューIDのメッセージを処理し、配送先は1つ(nrcpt)でサイズは1301(size)である
Sep 7 15:43:26 smtpsv1 mail:info postfix/smtpd[90288]: disconnect from unknown[x.x.x.x]
5.[クライアントIP]からsmtpdへの接続が終了
Sep 7 15:43:26 smtpsv1 mail:info postfix/smtp[245990]: 0AE89173: to=<test2@example.com>, relay=送信先[送信先IP]:25, delay=0.55, delays=0.2/0/0.08/0.26, dsn=2.0.0, status=sent (250 2.0.0 m876k7NI000505 Message accepted for delivery)
6.test2@example.com宛てのメール(同キューIDのメッセージ)が、0.55秒(delay)で配信された
なお受け取った時の相手のキューIDは m876k7NI000505 である(相手はこのキューIDでメールを処理する)
Sep 7 15:43:26 smtpsv1 mail:info postfix/qmgr[307414]: 0AE89173: removed
7.qmgrから同キューIDのメッセージが無くなった(多分そういう意味かと…)
終了
■ログを検索するときは
上記のように一連のログは、キューIDが同じなので
1、grep メールアドレス maillog で検索し、該当のメールキューIDが判別
2、grep キューID maillog のように再度キューIDで検索すると良いかも
■応用編
ログから特定のキーワードを含む行の、IPアドレスをカウントする
Feb 27 12:44:28 server01 postfix/smtpd[35254]: connect from xxx.example.com[x.x.x.x]
上記のようなログがあったとする
下記のようにコマンドを打つと、同じIPからのconnectが多い順に表示できます。
grep " connect from" /var/log/maillog | awk '{ print $8 }' | sort | uniq -c | sort -r | more
解説
grep " connect from" /var/log/maillog メールログファイルから" connect from"を含む行を抽出
awk '{ print $8 }' 8カラム目だけに絞る(8カラムとはスペースやタブで区切られた8個目の列の事)
このログの8カラム目はxxx.example.com[x.x.x.x]になる
sort 上記で抜き出したものをソートする
uniq -c 同じ行は表示させず-cで数も表示
sort -r それを数の多い順に並べる為に再度sort
more 出力が多すぎると見えないので1ページずつ表示
前へ トップへ