あるメール配信で配信エラーになった場合に、相手先からどのようなエラーコードとバナーが返却されているかを調べるときに便利。
ちなみに、postfixのログは、一行ごとに、
1 |
日付 時刻 ホスト名 postfix/プロセス名[プロセスID]: キューID: 処理・・・ |
といった構造で書かれる。同じキューIDのログを調べれば、一通のメールの一連の動きを追うことが出来る。
直近の”to@hoge.com”宛てのメールのキューIDを取得するシェルスクリプト
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash # メールログの場所 MAILLOG_PATH='/var/log/maillog' # 宛て先でgrepして、sedでキューIDを抽出 qid=`cat "$MAILLOG_PATH" | grep -Eo "\[[0-9]+\]\: [A-Z0-9]+\:.*?to=<to\@hoge\.com>" | tail -1 | sed -r "s/^\[[0-9]+\]\: ([A-Z0-9]+)\:.*?$/\1/"` # 抽出したキューIDで再検索 logs=`cat "$MAILLOG_PATH" | grep $qid` echo $logs |
結果
1 2 3 4 5 6 |
May 8 19:**:** *** postfix/pickup[32062]: D361640567: uid=48 from=<from@fuga.com> May 8 19:**:** *** postfix/cleanup[32321]: D361640567: message-id=<20180508******.D361640567@fuga.com> May 8 19:**:** *** postfix/qmgr[1849]: D361640567: from=<from@fuga.com>, size=1098, nrcpt=1 (queue active) May 8 19:**:** *** postfix/smtp[32324]: D361640567: to=<to@hoge.com>, relay=***.***.com[***.**.**.**]:25, delay=0.2, delays=0.06/0/0.03/0.12, dsn=5.0.0, status=bounced (host ***.***.com[***.**.**.**] said: 550 Invalid recipient: <to@hoge.com> (in reply to RCPT TO command)) May 8 19:**:** *** postfix/bounce[32332]: D361640567: sender non-delivery notification: 1145640568 May 8 19:**:** *** postfix/qmgr[1849]: D361640567: removed |
ちなみに上記は「said: 550 Invalid recipient: <to@hoge.com>」と返ってきているので、メールを送ったこのユーザ(to@hoge.com>)は存在しなかったということになる。
ちなみに理想としては、エンベロープFROMに、宛て先と送信するたびの履歴番号など、特定の情報を仕込んでおくと、時系列で探しやすい。
sendmail使うなら、
1 |
echo -e "To: to@hoge.com\nFrom: from@fuga.com\nSubject: Hello world.\n\nHello world." | /usr/sbin/sendmail -t -f to=hoge.com-001@fuga.com |
とかしておくとよい。(この場合「to=hoge.com-001@fuga.com」がエンベロープFROM)
そうしておけば、何回も同じ宛先に送っている場合でも、下記のように目的のキューIDを探しやすくなる。
1 2 3 4 |
: # 宛て先でgrepして、sedでキューIDを抽出 qid=`cat "$MAILLOG_PATH" | grep -Eo "\[[0-9]+\]\: [A-Z0-9]+\:.*?from=<to=hoge\.com\-001\@" | head -1 | sed -r "s/^\[[0-9]+\]\: ([A-Z0-9]+)\:.*?$/\1/"` : |
なおヘッダーFROMをいくらいじっても、基本的にはメールログには記録されない。(ログレベルを上げればできるかも。この辺は調べてない。)
参考サイト)
- https://qiita.com/hirohiro77/items/771ffb64dddceabf69a3
- http://minus9d.hatenablog.com/entry/20130209/1360377537
- https://www.softel.co.jp/blogs/tech/archives/1210
- https://bi.biopapyrus.jp/os/linux/grep.html
- https://qiita.com/kod314/items/8e09b9c6d17c544d3b5e
- https://matome.naver.jp/odai/2140936904528099201