postfixのメールログを調査する方法

今回はpostfixのメールログを調査する方法について解説致します。

◾️postfixのログファイルを確認する

postfixのメールログを調査するにはログファイルを確認する必要がございます。

デフォルト設定では下記のファイルに書き出しが行われております。

cat /var/log/maillog 

※ログローテーション等を行っている場合は調査対象日のログをご確認ください。

◾️メールキューID

postfixのメールログを調査するには下記情報からメールキューIDを特定する事でメール処理に関する一連の流れを抽出する事ができます。

  • 差出人アドレス(FROM)
  • 宛先アドレス(TO)
  • 対象メールの日時

下記基本的なメールログ形式となります。

今回は下記を例に解説致します。

May 13 10:00:12 servername postfix/smtpd[12345]: BCDEFGHIJKL: client=example.net[198.51.100.2]
May 13 10:00:12 servername postfix/cleanup[54321]: BCDEFGHIJKL: message-id=<987654321.123456789@example.net>
May 13 10:00:13 servername postfix/qmgr[98765]: BCDEFGHIJKL: from=<sender2@example.net>, size=2000, nrcpt=1 (queue active)
May 13 10:00:14 servername postfix/pipe[13579]: BCDEFGHIJKL: to=<recipient2@example.org>, relay=virtual, delay=1.5, delays=0.7/0/0/0.8, dsn=2.0.0, status=sent (delivered via virtual service)
May 13 10:00:14 servername postfix/qmgr[98765]: BCDEFGHIJKL: removed

ログの主な情報は以下となります。

要素解説
clientメールを送信している接続元の情報
from=<>差出アドレス(Return-Path)
to=<>宛先アドレス
statusメールの配信状態
relayリレー情報
delay=配送時間

メールが正常に送信/受信されたかどうかは「status」を確認する事で判断可能となります。

正常配信

status=sent

配信失敗

status=bounced

一時的に配信が遅延

status=deferred

上記は一時的な配送失敗となります。

postfixではdeferredの場合、設定値で指定された回数の特定の間隔で再送処理が行われます。

◾️FROM/TOアドレスが分かる場合

対象のアドレスが分かる場合はgrepコマンドで絞り込み特定する事が可能です。

cat /var/log/maillog |grep "対象メールアドレス"

FROMアドレスで検索

今回は例としてFROMでの絞り込みを行います。TOで絞る場合についても同様の手順で対応可能となります。

FROMアドレスにて絞り込んだ場合、下記のように表示されます。

May 13 10:00:13 servername postfix/qmgr[98765]: BCDEFGHIJKL: from=<sender2@example.net>, size=2000, nrcpt=1 (queue active)

次に上記情報を元にキューIDで絞り込みを行い全体の流れを表示させます。

cat /var/log/maillog |grep "BCDEFGHIJKL”

下記実行結果例となります。

May 13 10:00:12 servername postfix/smtpd[12345]: BCDEFGHIJKL: client=example.net[198.51.100.2]
May 13 10:00:12 servername postfix/cleanup[54321]: BCDEFGHIJKL: message-id=<987654321.123456789@example.net>
May 13 10:00:13 servername postfix/qmgr[98765]: BCDEFGHIJKL: from=<sender2@example.net>, size=2000, nrcpt=1 (queue active)
May 13 10:00:14 servername postfix/pipe[13579]: BCDEFGHIJKL: to=<recipient2@example.org>, relay=virtual, delay=1.5, delays=0.7/0/0/0.8, dsn=2.0.0, status=sent (delivered via virtual service)
May 13 10:00:14 servername postfix/qmgr[98765]: BCDEFGHIJKL: removed

複数のログが出力される場合は対象の時間に該当するログを確認してください。

◾️FROM/TOアドレスが分からない場合

日時、時間で検索

FROM/TOアドレスが分からない場合は日時や時間で絞り込み確認する事が可能です。

下記のように実行する事で絞り込みを行う事が可能です。

cat /var/log/maillog |grep "日付” |grep "10:00"

◾️ログが無い場合

postfixにてログが存在しない場合は下記に該当する可能性がございます。

  • サーバーまでメールが到達していない
  • 絞り込み条件が間違っている