Parsen
Warum dieser Schritt
Ein Paket mit Schichten: MIME
Die Email ist im System angekommen und liegt als ein langer Text in der Datenbank. Roher Inhalt, eine einzige Zeichenkette. Daraus müssen jetzt verständliche Felder werden: Absender, Betreff, Datum, Textkörper, Anhänge. Genau darum geht es in diesem Schritt.
Mehr als Text: Eine Email ist ein Paket
Was ein Mensch als eine Nachricht sieht, ist technisch ein verpacktes Objekt. Anna schickt eine Email mit dem Text "Hallo Karl", dazu ein PDF-Anhang und ein Foto. Für Anna ist das eine Email. Für den Mailserver ist das eine einzige Datei, in der Text, PDF und Foto auf eine bestimmte Weise nebeneinander verpackt sind.
Um den PDF-Anhang zu extrahieren, muss ein Programm dieses Paket erst auspacken und die einzelnen Teile voneinander trennen. Genau das macht der MIME-Parser.
Das MIME-Format: Der Standard dahinter
Das Format, in dem Emails aufgebaut sind, heißt MIME (en: Multipurpose Internet Mail Extensions). Es beschreibt, wie eine Email strukturiert ist: zuerst die Metadaten, dann der Inhalt, und innerhalb des Inhalts die Möglichkeit, mehrere Teile gleichzeitig zu transportieren.
Der Standard existiert seit den frühen 1990er Jahren und ist in der RFC 5322 beschrieben. Die MIME-Erweiterungen für mehrteilige Inhalte, Zeichensätze und Kodierung sind vor allem in RFC 2045 bis 2049 definiert. Diese Standards bilden die gemeinsame Grundlage der Internet-Email. Reale Implementierungen halten sich meist weitgehend daran, weichen im Detail aber teils ab. Darum können Emails zwischen beliebigen Systemen hin und her wandern.
Header und Body: Die erste Trennung
Jede MIME-Email besteht aus zwei Blöcken, die der Parser als Erstes trennt:
- Ein Header-Block oben mit den Metadaten: Absender, Empfänger, Betreff, Datum, Message-ID und viele weitere Steuerfelder.
- Ein Body-Block unten mit dem eigentlichen Inhalt: Text, HTML, Anhänge.
Die Trennung zwischen Header und Body ist eine einzige Leerzeile. Das klingt fragil, ist aber seit Jahrzehnten die verbindliche Regel. Der Parser teilt die Email an dieser Leerzeile, und alles davor ist Header, alles danach Body.
Warum das Format so komplex ist
MIME wirkt auf den ersten Blick überladen. Würde nicht "Absender, Betreff, Text, fertig" ausreichen? Die Antwort liegt in der Geschichte. Emails mussten ursprünglich nur 7-Bit-ASCII-Text enthalten. Keine Umlaute, keine Anhänge, kein HTML, nichts Binäres.
Als später Umlaute, Bilder, HTML und Anhänge dazukommen mussten, durfte das bestehende Email-System dabei nicht kaputtgehen. Die Lösung: Alle Erweiterungen werden in der 7-Bit-Text-Form verpackt (kodiert) und wieder entpackt. Das MIME-Format ist im Kern eine Verpackungsanleitung für Inhalte, die eigentlich nicht in eine 7-Bit-Textleitung passen.