最近、メールがスレッド化される仕組みを知りました。
(こんなことも知らんかった・・・)
キーワードは「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>
さて、このようなメールヘッダーはどのように付与されるのか?順に説明します。
- ユーザーAから新規作成でメールを送信する。この段階では、このメールを受信したユーザーBのメールヘッダーには、
Message-ID: <5346AC7D.6030904@mail.xxxxxxxx.com>
が付与されています。この時点では、In-Reply-To
およびReferences
は付与されていません。 - 次に、このメールを受信したユーザー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-ID
がIn-Reply-To
とReferences
に付与されます。続きます。 - さらに、このメールを受信したユーザー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-ID
がIn-Reply-To
へ書き込まれ、さらにReferences
に付与されていきます。
もうこれでスレッド化するメカニズム?はお分かりですね。
ただ、gmailなんかは、Message-ID
が繋がっていても、タイトルが変更されると(Re:~でなく、変更すると)、別スレッドと認識しているようなので、
それ以外にもSubjectも見ているのかも知れません。
(というようにメーラーによってい細かい仕様の違いはあると思います)