Protokolle
SMTP — der Versandweg
Das Protokoll, mit dem jede E-Mail verschickt wird, ist von 1982 und besteht aus Sätzen, die man vorlesen kann. Wer einmal zugehört hat, versteht danach die meisten Probleme des Systems von selbst.
Ein vollständiger Versand
So sieht es aus, wenn ein Server einem anderen eine Nachricht übergibt.
C: ist der sendende, S: der empfangende Rechner.
S: 220 mail.example.com ESMTP bereit
C: EHLO absender.example
S: 250-mail.example.com
S: 250-SIZE 52428800
S: 250-STARTTLS
S: 250 8BITMIME
C: STARTTLS
S: 220 2.0.0 Bereit für TLS
… ab hier verschlüsselt, der Dialog beginnt von vorn …
C: MAIL FROM:<anna@absender.example>
S: 250 2.1.0 Ok
C: RCPT TO:<bert@example.com>
S: 250 2.1.5 Ok
C: DATA
S: 354 Ende mit <CR><LF>.<CR><LF>
C: From: Anna <anna@absender.example>
C: To: Bert <bert@example.com>
C: Subject: Mittagessen
C:
C: Halb eins?
C: .
S: 250 2.0.0 Ok: als 4A2F1C09CA übernommen
C: QUIT
S: 221 2.0.0 Auf Wiedersehen
Zwanzig Zeilen, und die Nachricht ist unterwegs. Die Struktur stammt aus RFC 821 von
1982 und ist bis heute unverändert gültig; alles, was seither dazukam, hängt an dem
EHLO in Zeile zwei.
Was in diesem Dialog steckt
Die Antwortcodes sagen, wer schuld ist
Jede Antwort beginnt mit einer dreistelligen Zahl, und die erste Ziffer ist die wichtigste. 2xx heißt erledigt. 4xx heißt: gerade nicht, versuch es später noch einmal — der sendende Server behält die Nachricht und stellt sie erneut zu. 5xx heißt endgültig nein, mit einer Fehlermeldung an den Absender.
Diese Unterscheidung ist der Grund, warum Greylisting funktioniert: Ein Server antwortet einem unbekannten Absender einmal mit 4xx. Echte Mailserver kommen wieder, viele Massenversender nicht.
Der Absender wird genannt, nicht geprüft
In MAIL FROM sagt der sendende Rechner, in wessen Namen er einliefert.
Nichts im Protokoll sieht vor, das nachzuprüfen. Man kann dort eine beliebige Adresse
eintragen, und formal ist das korrektes SMTP.
Genau in diese Lücke wurden später SPF, DKIM und DMARC gebaut — nicht als Änderung am Protokoll, sondern als drei Verfahren daneben.
Der Umschlag ist nicht der Briefkopf
Beachte, dass die Adressen zweimal vorkommen: einmal in MAIL FROM und
RCPT TO, dann noch einmal in den Zeilen From: und
To: nach DATA. Das sind zwei verschiedene Dinge, und sie
müssen nicht übereinstimmen. Diese Unterscheidung ist so folgenreich, dass sie
eine eigene Seite hat.
Verschlüsselung ist ein Anbau
STARTTLS steht in der Fähigkeitenliste, die der empfangende Server nach
EHLO aufzählt. Es ist eine Erweiterung von 2002, keine Grundeigenschaft.
Bietet die Gegenstelle sie nicht an, wird im Klartext übertragen — und der sendende
Server macht das in aller Regel, statt die Zustellung zu verweigern.
Verschlüsselt ist damit die Strecke zwischen zwei Servern, nicht die Nachricht. Auf jeder Zwischenstation liegt sie unverschlüsselt vor. Das ist der Unterschied zwischen Transportverschlüsselung und Ende-zu-Ende-Verschlüsselung, und er wird regelmäßig verwechselt.
Weiterreichen statt zustellen
SMTP ist ein Staffellauf. Der sendende Server übergibt an den nächsten, der bestätigt die Übernahme, und ab da ist er zuständig. Kommt er nicht weiter, versucht er es über Stunden oder Tage erneut und meldet sich erst dann beim Absender.
Daraus folgt etwas, das viele überrascht: Eine erfolgreiche Übergabe bedeutet nicht, dass die Nachricht angekommen ist. Sie bedeutet, dass der nächste Server sie übernommen hat. Was danach passiert — Weiterleitung, Filterung, stilles Aussortieren — erfährt der Absender nicht zwangsläufig.
Einliefern ist nicht dasselbe wie zustellen
Wenn ein Mailprogramm eine Nachricht abschickt, spricht es nicht denselben Dienst an wie ein Server, der zustellt. Zustellung läuft über Port 25, das Einliefern durch Nutzerinnen über Port 587 — mit Anmeldung, verpflichtender Verschlüsselung und dem Recht des Servers, die Nachricht zu ergänzen oder abzulehnen.
Diese Trennung kam 1998 und war eine der wirksamsten Maßnahmen gegen Massenversand überhaupt: Sie erlaubt Netzbetreibern, Port 25 aus Endkundennetzen zu sperren, ohne dass jemand am Mailversand gehindert wird.
Warum es so alt aussehen darf
Ein zeilenbasiertes Klartextprotokoll wirkt heute antiquiert. Es hat sich aber als außerordentlich haltbar erwiesen, und zwar aus einem Grund: Man kann es lesen. Eine Fehlersuche in SMTP besteht darin, den Dialog mitzulesen — kein Werkzeug, kein Zwischenformat, keine Interpretation. Was der Server sagt, steht da.
Die Probleme des E-Mail-Systems liegen nicht in diesem Protokoll. Sie liegen darin, was es nicht vorsieht: keine Prüfung des Absenders, keine Rückmeldung über das endgültige Schicksal einer Nachricht, keine Kosten für den Versand.