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