#はじめに
職場(とある大学)でperlでメールを送信するスクリプトが出回ってます。作者はよくわからないのですが。Linuxでコマンドライン(CUI)で実行を想定したプログラムです。
ほぼ同じスクリプトが出回ってるようですが、perlプログラムを実行してる利用者によって以下のヘッダがある場合と無い場合がある事に気がつきました。
Message-Id
Date
プログラム内ではMessage-IdおよびDateは設定してないようです。なのでメール配送の経路のどこかで自動付与されているようです。
それはさておいて、Message-IdとDataが付いてる場合と付いてない場合の違いは何なんだ?
補足:Dateは必須ヘッダですので、Dateが無いメールは不完全なメールになります。一部の環境では配送エラーが起きる可能性も否定できません。
#前提知識
検索するとMessage-IdやDateについては誰が付けるべきかについて論議があります。
https://masutaka.net/chalow/2007-11-16-2.html
Message-Id や Date は誰が付けるべきか?
上記ブログ補足:
MTA: メール転送エージェント。簡単にいうとメールサーバソフト。sendmailやpostfixとか。Ref: Wikipedia
MUA: 電子メールクライアント。簡単にいうとメールリーダー。OutlookやThunderbirdとかMewとか。Ref: Wikipedia
#ポリシー的な話
上記ブログの説明で、ポリシー的な話だというのはわかりました。
それはさておいて、具体的にはどこでヘッダの自動付与が制御されているのかわかりませんでした。
職場でよくつかわれてるMTAはpostfixです。postfixの設定を検索してみました。
http://www.rosy-kitten.org/~ryusuke/diary/?date=20090522
PostfixのMessage-ID:ヘッダ付加
という事で、Postfixの設定パラメータ「local_header_rewrite_clients」のようです。
#結論
簡単に言うと、メールサーバにリモートログインしてperlスクリプトを実行してた場合はMessage-IDとDateヘッダが自動付与されて、メールサーバ以外でperlスクリプトを実行してた場合は自動付与されてないという事でした。