Memo

メモ > サーバ > 各論: コマンド > メールのログをmaillogconvert.plで変換してコマンドで解析

■メールのログをmaillogconvert.plで変換してコマンドで解析
maillogconvert.plを使うと、メールログを読みやすい形式にしてくれる http://hobbit.ddo.jp/awstatsdocs/awstats_tools.html 以下からダウンロードできる https://ja.osdn.net/projects/sfnet_awstats/ 以下はWindows環境での解析例
C:\xampp\perl\bin\perl maillogconvert.pl standard < C:\mail\maillog > mail.log
以下はUnix環境での解析例
perl maillogconvert.pl standard < /var/log/maillog > mail.log
ログローテートに注意すること(ローテートされているかは「ll /var/log/ | grep maillog」のようにして調べることができる) 以下のように変換される
2016-10-02 07:44:21 auto@refirio.net taro@example.com localhost mail01.example.com SMTP - 1 1528
変換されたログからは、以下の情報を読み取れる 日時 ... 10月2日7時44分21秒に送信 送受信者の情報 ... auto@refirio.net から taro@example.com に送信された メッセージ送信サーバ ... localhost リレー先サーバ ... mail01.example.com プロトコル情報 ... SMTP SMTPレスポンスコード ... 1 メッセージサイズ ... 1528 PHPから送信したときは、送信者は「apache」になるみたい?次の行もセットで記録されるみたい?
2016-10-02 08:15:59 apache example@docomo.ne.jp localhost 127.0.0.1 SMTP - 1 928 2016-10-02 08:15:59 apache@web1.refirio.net example@docomo.ne.jp localhost mfsmax.docomo.ne.jp SMTP - 1 1151
以下のようなログが大量に記録されているが、中国からのアクセス。リレーメールを拒否した際のログ
2016-10-05 04:07:14 <> example@163.com 183.240.203.45 - SMTP - 550 ? 2016-10-05 04:07:14 example@s.jp example@163.com 183.240.203.45 - SMTP - 550 0
送信元が「<>」なのは送信元が不明なメール。スパムの可能性が高い こういったメールを拒否して運用することは多いが、必要なメールも拒否してしまう可能性はあるので注意 【postfix】envelope-FROMを強制的に付与する http://ameblo.jp/server-study/entry-10270572107.html 変換の際に作成されたmail.logは、理由がなければ削除しておく 引き続き、解析方法や集計方法について勉強中 ■SMTPレスポンスコード maillogconvert.plでは、成功時のSMTPレスポンスコードは 1 になるみたい また、原因不明のエラーは 999 になるみたい その他のレスポンスコードは以下を参照 SMTP応答コード http://www.puni.net/~mimori/smtp/reply.html バウンスメールを受け取らなくても、これでメールが届いたかどうかは十分に判る? バウンスメールの本文からしか判らない情報もあるみたい?要勉強 ■コマンドでの解析例 2016年10月2日15時のみ
# cat mail.log | grep '2016-10-02 15'
特定の送信元
# cat mail.log | awk '($3 == "apache@refirio.net") {print $0}'
特定の送信先
# cat mail.log | awk '($4 == "example@example.com") {print $0}'
エラーのみ
# cat mail.log | awk '($9 != 1) {print $0}'

Advertisement