Message-ID

weltweit eindeutige Kennzeichnung einer E-Mail-Nachricht bzw. eines Usenet-Postings

Eine Message-ID ist eine weltweit eindeutige Kennzeichnung einer E-Mail-Nachricht bzw. eines Usenet-Postings. Diese wird entweder vom versendenden E-Mail- bzw. Newsreader oder vom benutzten SMTP- bzw. NNTP-Server generiert.

Message-IDs bestehen aus zwei Teilen, verbunden durch ein @-Zeichen. Damit ähneln sie im Aussehen dem Format von E-Mail-Adressen, mit denen sie jedoch nicht verwechselt werden dürfen.

Um die weltweite Eindeutigkeit einer Message-ID zu gewährleisten, empfiehlt RFC 5322[1] folgendes Vorgehen:

  • Ein Domänenname oder eine weltweit eindeutige IP-Adresse bildet den Teil rechts vom @-Zeichen. Dies kann der vollqualifizierte Hostname des sendenden Rechners sein, oder eine beliebige andere Domain, für die der Sender die globale Eindeutigkeit der Message-ID garantieren kann.
  • Aus dem aktuellen Datum, der Uhrzeit und weiteren lokal verfügbaren Daten (z. B. ein einfacher Zähler, die Prozess-ID o. Ä.) wird eine Zeichenkette gebildet, die sich zumindest auf dem Host niemals wiederholen darf. Diese Zeichenkette bildet den Teil links vom @-Zeichen.

Dieses Vorgehen ist nur empfohlen, nicht verpflichtend. In der Praxis wird für den rechten Teil oft – aber nicht immer – die Domain der Absender-Adresse genommen, während der linke Teil eine zufällige UUID oder eine andere (pseudo-)zufällige Zeichenkette ist, die – ohne Kenntnis des erzeugenden Algorithmus – keine Rückschlüsse auf die Sendezeit oder andere Interna des sendenden Hosts zulässt. Derartig (pseudo-)zufällig generierte Message-IDs sind nicht mehr garantiert eindeutig, aber mit einer sehr hohen Wahrscheinlichkeit.

Im Gegensatz zu E-Mail-Adressen darf der linke Teil einer Message-ID nur aus einem oder mehreren "Wörtern" bestehen, die aus ASCII-Buchstaben oder -Zahlen oder den folgenden ASCII-Sonderzeichen bestehen:

! # $ % & ' * + - / = ? ^ _ ` { | } ~

Diese "Wörter" werden durch ein . voneinander getrennt.

Message-IDs besitzen keine explizite Minimal- oder Maximallänge. Sie sollten somit so lang wie nötig (um garantiert oder mit hoher Wahrscheinlichkeit weltweit einmalig und eindeutig zu sein), aber aus Rationalitätsgründen auch kurz wie möglich sein. Allerdings muss eine Message-ID in eine Headerzeile passen, da innerhalb einer Message-ID kein Zeilenumbruch eingefügt werden darf. Aufgrund der Empfehlung auf 78 Zeichen pro Headerzeile ergibt sich indirekt eine empfohlene Maximallänge für eine Message-ID von 75 Zeichen.

Der Gleichheitsvergleich zweier Message-IDs soll „case-sensitiv“ erfolgen. Allerdings wird aus Rücksichtnahme auf alte/fehlerhafte Mailprogramme empfohlen, keine Message-IDs zu erzeugen, die sich nur aufgrund ihrer Groß-Klein-Schreibung unterscheiden.

Beispiele

Bearbeiten
Beispiele für gültige und ungültige Message-IDs
Message-ID Gültig Anmerkungen
20180429-114054033-4711@wiki.example ja Message-ID, deren linker Teil offenbar aus einem Zeitstempel und Prozess-ID, wie in RFC 5322[1] beschrieben, gebildet wurde
bde36ec8-9710-47bc-9ea3-bf0425078e33@wiki.example ja übliche Message-ID, deren linker Teil aus einer (pseudo-)zufälligen UUID gebildet wurde
&X~hu=8Fw#G?on%#Gf//!2Yeb@wiki.example ja ungewöhnliche, aber syntaktisch korrekte Message-ID
msg-"pa4gX..T0VY6yF"@wiki.example veraltet Entspricht nicht mehr der Syntax für Message-IDs, war aber nach früheren RFCs erlaubt und sollte daher von Parsern weiterhin akzeptiert werden.
pa4gXT0V..Yf16yF:G6@wikipedia.example nein zwei aufeinanderfolgende Punkte im linken Teil sind ebenso wenig erlaubt wie der Doppelpunkt.

Verwendung

Bearbeiten

Üblicherweise werden Message-IDs in <> eingefasst. Diese Begrenzer gehören aber nicht zur eigentlichen Message-ID.

In einer Nachricht steht die eigene Message-ID in der gleichnamigen Headerzeile. Die Message-IDs der Nachrichten, auf die sich die Nachricht bezieht, stehen in der References- oder Reply-To-Headerzeile. Mit Hilfe dieser Information kann ein E-Mail- oder Usenet-Programm die Nachrichten zu den dazugehörigen Antworten gruppieren (Threading).

Google Groups ermöglichte bis 2013 die Suche nach Usenet-Postings mit gegebener Message-ID in der „Erweiterten Groups-Suche“.[2]

Auch heute noch ist die Suche nach Usenet-Postings mit Hilfe ihrer Message-ID über Google Groups möglich, indem man der MID im Suchfeld ein "messageid:" (ohne die Anführungszeichen) unmittelbar voranstellt.

Zur Kennzeichnung von Message-IDs von Usenet-Postings wird ihnen eigentlich ein „news:“ vorangestellt.

Die Headerzeile Message-ID wird bereits in RFC 724[3] erwähnt.

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b RFC: 5322 – Internet Message Format. Oktober 2008 (englisch).
  2. Sqwertz: Google Advanced Search Gone. news.software.readers, 3. November 2013.
  3. RFC: 724 – Proposed Official Standard for the Format of ARPA Network Messages. 12. Mai 1977 (englisch).