Message-ID Header
What is Message-ID Header?
The Message-ID header is the unique identifier, written as <id-left@id-right>, that RFC 5322 section 3.6.4 says every message should carry. The host that creates it must make it unique, and replies refer back to it. AdminKit's email header analyzer reads the raw header block a Message-ID sits in, next to the Received chain.
By AdminKit team, Netbase JSC · Updated
The Message-ID header carries a single identifier that the system creating a message generates for it. RFC 5322 section 3.6.4 says every message SHOULD have a Message-ID field, that the generator MUST guarantee the identifier is unique, and that it refers to one particular version of one particular message. The syntax is a left part and a right part joined by @ and wrapped in angle brackets, for example <[email protected]>. RFC 5322 recommends that the right-hand side name a domain, typically the host that created the identifier, so IDs created on different machines cannot clash. The same section defines In-Reply-To and References, which carry the Message-IDs of earlier messages so that mail clients can thread replies. Message-ID is listed in IANA’s Message Headers registry. RFC 5322’s IETF Datatracker entry shows it has been updated by RFC 6854, which allows group syntax in From and Sender and does not change the Message-ID rules.
What is the Message-ID header useful for when tracing a message?
It is the easiest key for finding one message across systems: a mail administrator can search server logs or a mailbox for the exact Message-ID a user reports. It answers a different question from the other identity fields: the Return-Path header records the envelope sender, From shows the author, and each Received header records one hop and its own queue ID. Because the sending software writes the Message-ID and nobody verifies it, it can be forged like any other field the sender controls. AdminKit’s guide on how to read email headers to trace a message shows how these fields fit together.
AdminKit’s email header analyzer parses the Received chain, hop delays and Authentication-Results from headers you paste, entirely in your browser. The Message-ID header is part of AdminKit’s email authentication cluster; the full AdminKit glossary lists other related terms.
Frequently asked questions
Is the Message-ID header required?
RFC 5322 says every message SHOULD have one, which is a strong recommendation rather than an absolute requirement. In practice nearly all mail clients and sending services add it, and a message without one is unusual.
What does the part after the @ in a Message-ID mean?
RFC 5322 recommends that the right-hand side contain a domain identifier, such as the domain name of the host that created the identifier, so that identifiers made by different hosts do not collide. It shows which system generated the ID, but it is not checked against anything and is not proof of where the message came from.
How do In-Reply-To and References use the Message-ID?
When someone replies, their client copies the original message's Message-ID into In-Reply-To and appends it to References. Mail clients use those fields to group a message and its replies into one conversation thread.
Can a Message-ID be forged?
Yes. The sender's own software writes it and no receiving server verifies it, so a spammer can put any value there, including one that names someone else's domain. Use it to find a message in logs or match a reply, not to authenticate the sender.