MeridianMERIDIAN

Email Message-ID

technology.internet.message_idsince finetype v0.6.36

RFC 2822 Message-ID header — a globally-unique identifier for an email message: an angle-bracketed left@right token (<unique@domain>).

Try a value

Email Message-ID's rule accepts it.

Reads it as <30365805.1075860998985.JavaMail.evans@thyme>

Worked samples

DuckDB 1.5.5 · finetype 0.6.66

ValueAs VARCHARdomainlocal
<30365805.1075860998985.JavaMail.evans@thyme><30365805.1075860998985.JavaMail.evans@thyme>thyme30365805.1075860998985.JavaMail.evans
<CAF2a3b9c@mail.gmail.com><CAF2a3b9c@mail.gmail.com>mail.gmail.comCAF2a3b9c
<199911abc@server.example.org><199911abc@server.example.org>server.example.org199911abc

Shape

Pattern
^<[^<>@\s]+@[^<>@\s]+>$
ValueLengthShape
<30365805.1075860998985.JavaMail.evans@thyme>45matches
<CAF2a3b9c@mail.gmail.com>26matches
<199911abc@server.example.org>30matches
<30365805.1075860998985.JavaMail.evans@thyme44rejected: one character short

Background

Origin

The Message-ID field is defined in RFC 822, Standard for the Format of ARPA Internet Text Messages, dated August 13, 1982.[1] RFC 822 was revised by David H. Crocker.[1] RFC 822 obsoletes RFC 733.[1] RFC 822 defines a msg-id as an addr-spec enclosed in angle brackets.[1] RFC 822 says the uniqueness of the message identifier is guaranteed by the host which generates it.[1] RFC 822 says the identifier is intended to be machine readable and not necessarily meaningful to humans.[1]

RFC 2822, Internet Message Format, was published in April 2001 and obsoletes RFC 822.[2] RFC 5322, Internet Message Format, was published in October 2008.[3] RFC 5322 obsoletes RFC 2822.[3] RFC 5322 describes the msg-id syntax as a limited version of the addr-spec construct enclosed in the angle bracket characters.[3] RFC 5322 permits only the dot-atom-text form on the left-hand side of the @ in a message identifier.[3] RFC 5322 says the message identifier MUST be a globally unique identifier for a message.[3] RFC 5322 suggests putting the domain name of the generating host on the right-hand side of the @ and a combination of the current date and time with some other unique identifier, such as a process id number, on the left.[3] RFC 5322 recommends that the right-hand side contain some domain identifier so that the generator can guarantee the uniqueness of the left-hand side within the scope of that domain.[3] RFC 5322 says every message SHOULD have a Message-ID field, though the field is listed as optional.[3]

RFC 5536 says a msg-id MUST NOT be more than 250 octets in length.[4] RFC 5536 notes that its msg-id includes the < and > characters.[4] RFC 5536 says the global uniqueness requirement for a msg-id applies across both Email and Netnews.[4]

Use

RFC 5322 says the In-Reply-To field of a reply contains the contents of the Message-ID field of the message being replied to.[3] RFC 5322 says the References field may be used to identify a thread of conversation.[3] In a mail export, the Message-ID is the join key for rebuilding threads: match each In-Reply-To value against the Message-ID it names. (Meridian's view) RFC 5322 says a message keeps its original Message-ID field when trace fields or resent fields are added in transit.[3] RFC 5322 says subsequent revisions to a message each receive new message identifiers.[3] When the same Message-ID turns up more than once in a mailbox dump, treat the rows as candidate copies of one message, such as the same mail filed in two folders, and compare them before you count messages. (Meridian's view)

RFC 6409 notes that a number of clients still do not generate Message-ID fields.[5] Python's email.utils.make_msgid returns a string suitable for an RFC 2822-compliant Message-ID header.[6] In Python's email.utils.make_msgid, the portion of the msgid after the @ defaults to the local hostname.[6] JavaMail's UniqueValue class builds a Message-ID value from an object's hash code, a global ID, the current time in milliseconds and the host name from the user's local address.[7] Treat the identifier as an opaque key: the numbers and host names inside it are one generator's recipe, not a dependable send time or sender. (Meridian's view)

RFC 5322 says that, semantically, the angle bracket characters are not part of the msg-id.[3] Python's email.utils.unquote strips angle brackets from a string that begins and ends with them.[6] An old archive may hold identifiers that a strict pattern rejects, so flag those rows rather than drop the messages. (Meridian's view) RFC 5536 says some software matches the right-hand side of a msg-id case-insensitively and some case-sensitively.[4] RFC 5536 says a simple comparison of octets will always suffice to determine the identity of two Netnews msg-ids.[4] Compare identifiers exactly, byte for byte, and do not lower-case them before a join. (Meridian's view) RFC 2392 defines a mid: URL scheme that uses the message-id of an email message to refer to a specific message.[8]

Detection notes

New in v0.6.36 (spec 2026-06-19-plain-text-type-discovery). 3,032 distinct corpus datasets, blind-panel confidence 0.95 (unanimous). Angle-bracket + @ grammar is unambiguous. Corpus sample is Enron-heavy (single provenance) but the RFC 2822 type is universal. Sits beside url / urn / mac_address as an internet protocol identifier.

Use it

CLI · DuckDB
$ finetype infer -i "<30365805.1075860998985.JavaMail.evans@thyme>" --mode column
→ technology.internet.message_id

SELECT ft_infer('<30365805.1075860998985.JavaMail.evans@thyme>');
-- → 'technology.internet.message_id'
Cast expression
CAST({col} AS VARCHAR)

Schema

https://meridian.online/schemas/technology.internet.message_id · Frictionless type string

finetype taxonomy technology.internet.message_id -o json-schema

Aliases

messageidmsgid

Type Registry