戻る
■メールのログを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}'