ログファイルのアクセス権は600(初期状態)に設定されています。
root以外でログインしている場合は、rootに切り替えます。
1 |
# su |
次にログファイルの場所へ移動します。
1 |
# cd /var/log |
最初に、送受信トラブルが発生した時のアドレスや時間など、わかっている特定キーワードで検索を行います。
下記は、送信元アドレスをキーワードに検索した場合のコマンド例です。
1 |
# cat maillog | grep "from=<XXXXXX@yahoo.co.jp>" |
さきほどのコマンドを実行した結果が下記になります。
4行=4件の該当するメールが見つかったことになります。
多くの場合、条件に合致するメールが複数件抽出されます。
残念ながら、この状態では各メールの処理の詳細までは知ることができません。
ここからさらにキューIDごとに絞込検索をかけ、各メールの処理詳細を追跡することになります。
エラーが発生したおおよその時間帯がわかっていれば、どのキューIDを追跡したらよいかあたりをつけることができます。それでない場合は、すべてのキューIDを調べていく必要があります。
※「831F78322B9」「73B928322E9」「A32198322F3」「EBD65832B18」がキューIDに該当します。
1 2 3 4 |
# Apr 18 15:42:37 server postfix/qmgr[1513]: 831F78322B9: from=<XXXXXX@yahoo.co.jp>, size=132527, nrcpt=1 (queue active) # Apr 18 15:50:02 server postfix/qmgr[1513]: 73B928322E9: from=<XXXXXX@yahoo.co.jp>, size=74720, nrcpt=1 (queue active) # Apr 18 15:53:15 server postfix/qmgr[1513]: A32198322F3: from=<XXXXXX@yahoo.co.jp>, size=25568, nrcpt=1 (queue active) # Apr 18 18:32:51 server postfix/qmgr[1513]: EBD65832B18: from=<XXXXXX@yahoo.co.jp>, size=14550452, nrcpt=3 (queue active) |
ためしに、キューID(EBD65832B18)で絞込検索をしてみます。
1 |
# cat maillog | grep "EBD65832B18" |
結果がこちら。下記がキューID(EBD65832B18)に対して行われた一連の処理を表しています。
1 2 3 4 5 6 |
# Apr 18 18:32:07 server postfix/smtpd[8163]: EBD65832B18: client=mail.yahoo.co.jp[XXX.XXX.XX.XX] # Apr 18 18:32:37 server postfix/cleanup[8166]: EBD65832B18: message-id=<XXXXXXXXXXXXXXXXXXXX@yahoo.co.jp> # Apr 18 18:32:51 server postfix/qmgr[1513]: EBD65832B18: from=<XXXXXX@yahoo.co.jp>, size=14550452, nrcpt=3 (queue active) # Apr 18 18:32:51 server postfix/smtp[7987]: EBD65832B18: to=<XXXXXX@plumpliver.com>, relay=XXX.XXX.XX.XX[XXX.XXX.XX.XX]:25, delay=44, delays=44/0/0.15/0, dsn=5.3.4, status=bounced (message size 14550452 exceeds size limit 10485760 of server XXX.XXX.XX.XX[XXX.XXX.XX.XX]) # Apr 18 18:32:51 server postfix/bounce[9232]: EBD65832B18: sender non-delivery notification: ABC55832B09 # Apr 18 18:32:51 server postfix/qmgr[1513]: EBD65832B18: removed |
ログの中で確認するポイントはstatus=XXXXの部分です。
bonce、deferredなどのステータスに注目。これらは配送されていないメールのステータスとなる。
status=sent 配送OK
status=bounce 配送NG
status=deferred 一時的に配送できなかったがリトライ
出典:Postfixで未配信メールの確認 - OpenGroove
bounceやdeferredの後ろに、エラーの内容が記載されています。
上記の例では以下がエラーメッセージです。
message size 14550452 exceeds size limit 10485760 of server XXX.XXX.XX.XX[XXX.XXX.XX.XX]
メールがサイズ上限を超えたためのエラーであることがわかりますね。
ログに関する補足説明
おそらくログはローテーションを組んでいるため、一定期間を経過すると圧縮(gzip形式)されている可能性があります。
圧縮されたログの中身も検索したい場合は、下記のzcatコマンドを使います。
1 |
# zcat maillog.1.gz | grep "from=<XXXXXX@yahoo.co.jp>" |
最後に
業務でPostfixを使用しているなら、下記の本はおススメ。勉強してみる価値ありです。