関連するメールのスレッド化

最近、メールがスレッド化される仕組みを知りました。
(こんなことも知らんかった・・・)

キーワードは「Message-Id」「In-Reply-To」「References」というメールヘッダー。

せっかくなので、あなた宛に届いたメールのソースを見てください。

Message-ID ヘッダーが、

Message-ID: <5346AD43.20808@mail.xxxxxxxx.com>

このような感じで付与されていると思います。

また、あなたの見たメールが、誰かからの返信メールだった場合に、そのメールヘッダーに In-Reply-To References もありませんか?

References: <5346AC7D.6030904@mail.xxxxxxxx.com>	<CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com>
In-Reply-To: <CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com>

さて、このようなメールヘッダーはどのように付与されるのか?順に説明します。

  1. ユーザーAから新規作成でメールを送信する。この段階では、このメールを受信したユーザーBのメールヘッダーには、 Message-ID: <5346AC7D.6030904@mail.xxxxxxxx.com> が付与されています。この時点では、 In-Reply-To および References は付与されていません。
  2. 次に、このメールを受信したユーザーBは、これに対して返信する。このメールの返信を受信したユーザーAのヘッダーには、 Message-ID: <CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com> References: <5346AC7D.6030904@mail.xxxxxxxx.com> In-Reply-To: <5346AC7D.6030904@mail.xxxxxxxx.com> が付与されています。CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com というのが、ユーザーBが返信した際に付与された Message-ID ですね。このときに、元々の Message-IDIn-Reply-ToReferences に付与されます。続きます。
  3. さらに、このメールを受信したユーザーAが、返信しています。そのときのメールヘッダーには、 Message-ID: <5346AD43.20808@mail.xxxxxxxx.com> References: <5346AC7D.6030904@mail.xxxxxxxx.com> <CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com> In-Reply-To: <CACFotzJE2LsO3FTXDVGOogECtKiJ3EAuunZweymLvziLjwEjzA@mail.gmail.com> と付与されました。このように、元々のメッセージに返信を繰り返していくことで、直前の Message-IDIn-Reply-To へ書き込まれ、さらに References に付与されていきます。

もうこれでスレッド化するメカニズム?はお分かりですね。

ただ、gmailなんかは、Message-ID が繋がっていても、タイトルが変更されると(Re:~でなく、変更すると)、別スレッドと認識しているようなので、
それ以外にもSubjectも見ているのかも知れません。

(というようにメーラーによってい細かい仕様の違いはあると思います)