Protokolle
MIME — alles außer Text
E-Mail kannte ursprünglich 128 Zeichen und keine Anhänge. Kein „ä", kein Bild, keine Formatierung. Alles, was heute selbstverständlich in einer Mail steckt, ist in dieses Korsett hineingefaltet worden — ohne es zu ändern.
Die Einschränkung
Das ursprüngliche Nachrichtenformat sah Zeilen aus ASCII-Zeichen vor: 128 Zeichen, 7 Bit, das lateinische Alphabet ohne Akzente, Ziffern, Satzzeichen. Mehr gab es nicht, und mehr brauchte es auch nicht, solange Text zwischen englischsprachigen Forschern floss.
Zwei Wünsche sprengten das: Menschen wollten in ihrer eigenen Sprache schreiben, und sie wollten Dateien mitschicken. Beides sind Binärdaten, und Binärdaten überleben eine Übertragung nicht, die nur 7 Bit weiterreicht.
Der Ausweg: alles wird wieder zu Text
Die Lösung von 1996 ändert das Nachrichtenformat nicht. Sie verpackt stattdessen beliebige Daten so, dass am Ende wieder harmlose ASCII-Zeilen dastehen, und legt Zusatzzeilen davor, die sagen, was drinsteckt.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_trennmarke_1"
--=_trennmarke_1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Hallo Bert, anbei die Aufstellung. Gr=C3=BC=C3=9Fe, Anna
--=_trennmarke_1
Content-Type: application/pdf; name="aufstellung.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="aufstellung.pdf"
JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVy
… weitere 40.000 Zeichen …
--=_trennmarke_1--
Eine Mail mit Anhang, von innen. Alles daran ist reiner ASCII-Text — auch das PDF.
Die vier Bestandteile
- Trennmarken. Eine Zeichenkette, die im Inhalt nicht vorkommt, trennt die Teile. Dasselbe Prinzip wie beim @ in der Adresse: ein Trennzeichen taugt nur, wenn es im Getrennten nicht auftauchen kann.
-
Inhaltstyp.
text/plain,application/pdf,image/png. Erst dadurch weiß das Mailprogramm, ob es etwas anzeigen oder zum Speichern anbieten soll. -
Kodierung.
quoted-printablefür Text, der überwiegend lesbar ist und nur ein paar Sonderzeichen enthält —=C3=BCist ein „ü".base64für alles, was ohnehin binär ist. -
Zeichensatz.
charset=UTF-8sagt, wie die Bytes zu Buchstaben werden. Fehlt die Angabe oder ist sie falsch, entstehen die bekannten Zeichensalate.
Warum Anhänge größer werden
Base64 stellt drei Byte als vier Zeichen dar. Ein Anhang wächst dadurch um etwa ein Drittel, dazu kommen Zeilenumbrüche. Eine 10-MB-Datei belegt in der Mail also gut 13,5 MB — und daran scheitern Größenbegrenzungen, die auf den ersten Blick großzügig wirken.
Das ist kein Fehler der Kodierung, sondern der Preis dafür, Binärdaten durch einen Kanal zu schicken, der nur Text kennt. Er wird bis heute bei jeder einzelnen Mail bezahlt, obwohl praktisch alle beteiligten Server längst 8 Bit übertragen könnten.
Umlaute in der Betreffzeile
Der Kopfbereich ist ein Sonderfall: Er darf auch heute nur ASCII enthalten. Ein Betreff mit Umlauten wird deshalb noch einmal anders verpackt:
Subject: =?UTF-8?Q?N=C3=A4chste_Woche_Gr=C3=BC=C3=9Fe?=
Zwischen =? und ?= stehen Zeichensatz, Kodierung und Inhalt.
Mailprogramme setzen das für die Anzeige zurück — deshalb sieht man es fast nie.
Und HTML-Mail
Formatierte Nachrichten sind kein eigenes Format, sondern ein weiterer Inhaltstyp.
Üblich ist multipart/alternative: dieselbe Nachricht zweimal, einmal als
Text und einmal als HTML. Das Mailprogramm nimmt, was es kann.
Damit kam auch das Nachladen von Bildern aus dem Netz in die E-Mail — und mit ihm die Lesebestätigung, die niemand angefordert hat: Ein Bild mit eindeutiger Adresse verrät beim Abruf, wann und wo eine Nachricht geöffnet wurde. Dass Mailprogramme externe Inhalte heute standardmäßig blockieren, ist die Antwort darauf.
Was daran bemerkenswert ist
MIME hat ein Format, das nur Text kann, dazu gebracht, alles zu transportieren — ohne eine einzige Zeile am darunterliegenden Protokoll zu ändern. Alte Systeme, die MIME nicht kannten, zeigten weiterhin lesbaren Text an, nur eben mit merkwürdigen Zeilen drumherum.
Das ist dieselbe Bauform wie bei allem, was später dazukam: nichts wegnehmen, nichts brechen, alles danebenlegen. Sie hat E-Mail vier Jahrzehnte am Leben gehalten. Sie ist auch der Grund, warum eine simple Nachricht mit Anhang heute aus fünf ineinander geschachtelten Schichten besteht, von denen jede einzelne aus einer anderen Zeit stammt.