メールの Date: ヘッダは送信日時を示すものではない

某案件で「メールがやたらに遅延する」というクレーム(?)があったのですが、見てみたら

  1. MUA からアプライアンスまでに 4.5 時間の遅延
  2. アプライアンスから相手側 MTA#1 まではほぼ即時
  3. MTA#1 から内部 MTA#2 に転送されるまでに 2.5 時間の遅延

ということで、1. に関して疑われた次第。クライアント PC の時刻が狂っているのかと思ったら「合ってます」というそっけない回答が...

で、何となく気になったので RFC を見ていたら 822 ではなく 2822 を見て納得。ちなみに Google で検索して見つけた RFC2822 の日本語訳の一つ には以下の記述があります。

もともとの日時は、メッセージが完成し、メール配送システムに投入する準備
ができた、とメッセージの著者が示す日付と時間を明記する。例えば、これは
ユーザがアプリケーションプログラムにおいて「送る」や「提出」ボタンを押
した時間かもしれない。いかなる場合でも、特にメッセージが実際に配送され
ている時間を含むことを意味せず、むしろ人またはメッセージの人以外の著者
がメッセージを最終形にした、配送の準備ができたという時間を示す。(例え
ば、ネットワークに接続されていない携帯型コンピュータの利用者は、メッセー
ジを配送のためにキューに貯めるかもしれない。もともとの日時はユーザがメッ
セージをキューにためた日時を示し、ユーザがメッセージを送信するためにネッ
トワークに接続した時間を示さない)。

ということで某氏に

の 2つの MUA で調べて貰ったところ、Outlook Express で『後で送信する』を選択した場合にそのときの時刻が Date ヘッダに記載されることが確認できました。ちなみに Becky! は常に送信時の時刻が付くみたいです。

メールサーバ構築に携わって 10年以上経つんですが、初めて Date: フィールドの意味を知りました。いやー、勉強になりますねぇ*1

*1:っつーか、不勉強。反省しろ > 自分 orz