yahoo!SMTPでMessage-IDの指定時にメールのソースにどんな変化があるか検証

真犯人からのメールのMessage-IDに関しての検証。

Message-ID: <93dhqdjpt0hqgushhj9t34q1.1400142888062@email.android.com>

条件

  • 1.message-id無指定で送信
  • 2.message-idに『93dhqdjpt0hqgushhj9t34q1.1400142888062@email.android.com』と指定して送信

※いずれも、Yahoo!SMTP (plain認証)で送信する

結果1:Message-IDを指定しなかった場合

Message-ID:なし

ヤフーのメールサーバでは、Message-IDをなにも指定していない場合は、
自動的にサーバー側で値が割り振られる。この場合は、メールサーバによるものなので偽装不可能。

http://yokoku.in/enkaku2012/meessage-id-gisou/mail1.txt

結果2:Message-IDを指定した場合

Message-ID:93dhqdjpt0hqgushhj9t34q1.1400142888062@email.android.com

任意のmessage-IDをつけてメールを送信した場合、
今回の真犯人からのメール同様、任意のIDがメールソース内に指定が可能。

http://yokoku.in/enkaku2012/meessage-id-gisou/mail2.txt

Message-IDが任意指定かどうかの判定方法

ただし、その場合、ヘッダーの位置が変化するので、
Message-IDの位置で、<サーバ側が割り振った値>か、<クライアントがつけた任意のID>かを判断できる。



(下位にある:クライアント指定によるもの=偽装可能、上位にある:メールサーバによる指定=偽装不可能)

結論

  • Yahoo!SMTPでmessage-IDを指定して送信した場合はクライアント側で任意のmessage-IDをメールソースに表示させる事が可能
  • 多くの場合、message-IDはメーラー側で自動的に付与される為、メーラー名などの固有文字が自動的に指定される。
  • 今回の真犯人のメールの @email.anforoid.com という指定も、メーラーが付与した可能性がある。
  • オリジナルのメーラーの場合は、今回のように Androidメーラーを装って指定した時間に送信したかのようなmessage-idを指定できる
  • 今回の真犯人が残したmessage-idはクライアント指定によるものだが、なぜタイマー疑惑が疑われるような過去のタイムスタンプを入れてしまったのかは疑問。(オリジナルのメーラーであれば、送信時点の時刻を入れることも可能なため。)
    • たまたま使ったメーラーがメール作成時点の時刻を入れてしまうものだった?
    • 過去の時刻を入れることで片山氏をはめる目的だった?
    • そこまで頭がまわらなかった?