2008年12月26日金曜日

sendmail で リレーするメールの DATA 部分をログに記録する

sendmail を使っているメールサーバでちょっと調べ物があった。
 

取りあえずメールのヘッダを記録したかったので、 sendmail.cf にてログレベルをデフォルトの9から11 → 15 → デバッグの → 16 → 20くらいまで引き上げたが、エンベロープは記録されるものの、肝心のDATAの中身が記録されなくて困った。
 
 

何か別の手段はと思い、Manpage of sendmail を見たら物騒なオプションを発見

-X logfile
指定された logfile に、メーラに出入りする情報すべてを記録します。メーラをデバッグする際の最後の手段としてのみ使ってください。非常に大量の情報があっという間に記録されます。
Manpage of sendmailより


まあ行儀が良さそうなオプションじゃないな。
 

早速起動スクリプトのsendmail 起動コマンドラインに "-X /var/log/maildata" とでも追加して起動したところ、思い通りDATAの中身が丸ごとログに吐かれた。
 

これで"Message-Id:" や "Subject:" も確認し放題、もちろんメール本文もだ。
悪用厳禁やね。
 
 



追記:2009/4/9
姉妹ネタを作成、ログがでかくて困るという時にはこっちでも。
sendmail の .forward で、メールの任意の行をログに出力