Wie E-Mail funktioniert: RFC 5321 und das SMTP-Protokoll erklärt
Jedes Mal, wenn Sie bei einer E-Mail auf „Senden“ klicken, beginnt ein komplexes Zusammenspiel von Protokollen. Das Herzstück dieses Prozesses ist SMTP (Simple Mail Transfer Protocol). Obwohl über die Jahrzehnte viele Erweiterungen hinzugefügt wurden, bleibt RFC 5321 die Kernspezifikation, die definiert, wie E-Mails von einem Server zum anderen übertragen werden.
Was ist RFC 5321 (SMTP)?
Der 2008 veröffentlichte RFC 5321 aktualisierte die ursprüngliche SMTP-Spezifikation, um moderne Internetpraktiken widerzuspiegeln. Er definiert das Protokoll, das von Mail Transfer Agents (MTAs) zum Senden und Empfangen von Post verwendet wird.
Es ist wichtig, SMTP von folgenden Begriffen zu unterscheiden:
- IMAP/POP3: Wird zum Abrufen von E-Mails von einem Server auf einen Client verwendet.
- RFC 5322: Definiert das Format der E-Mail-Nachricht (die Header wie An, Von, Betreff sowie den Textkörper). RFC 5321 befasst sich mit dem Umschlag (Envelope) und dem Transport.
Kernprinzipien von SMTP
1. Das Client-Server-Modell
SMTP arbeitet nach einem Anfrage-Antwort-Modell. Ein Client (der Server des Absenders) öffnet eine TCP-Verbindung zu einem Server (dem Server des Empfängers) auf Port 25 (Standard), 587 (Submission) oder 465 (SMTPS).
2. Die SMTP-Transaktion
Eine typische SMTP-Sitzung umfasst mehrere Befehle:
HELO/EHLO: Der Client identifiziert sich.MAIL FROM: Gibt die Adresse des Absenders an (den „Envelope From“).RCPT TO: Gibt die Adresse des Empfängers an (den „Envelope To“).DATA: Der Client sendet den eigentlichen E-Mail-Inhalt (einschließlich RFC 5322 Header und Body).QUIT: Der Client beendet die Verbindung.
3. Zuverlässigkeit und Queuing (Warteschlangen)
SMTP ist auf Robustheit ausgelegt. Wenn der Server eines Empfängers nicht erreichbar ist, stellt der sendende Server die Nachricht in eine Warteschlange und versucht es in Abständen (meist über mehrere Tage) erneut, bevor er aufgibt und eine „Bounce“-Nachricht (Unzustellbarkeitsnachricht) zurücksendet.
Praktische Anwendungsszenarien
Fehlerbehebung bei der E-Mail-Zustellung
Das Verständnis von SMTP-Codes (wie 250 OK, 421 Service not available oder 550 No such user) ist entscheidend, um zu analysieren, warum eine E-Mail nicht angekommen ist.
Konfiguration von Mailservern
Egal, ob Sie Postfix oder Exim einrichten oder einen Dienst wie SendGrid nutzen, Sie interagieren mit SMTP. Die Kenntnis des Unterschieds zwischen dem „Umschlag“ und den „Nachrichten-Headern“ hilft bei der korrekten Konfiguration von SPF, DKIM und DMARC.
Automatisierte Benachrichtigungen
Anwendungen, die transaktionale E-Mails (Passwort-Resets, Quittungen) versenden, nutzen SMTP oder eine API, die SMTP kapselt, um die Zustellung zu gewährleisten.
SMTP vs. HTTP für den Datentransfer
Obwohl beide Anwendungsschicht-Protokolle sind, dienen sie unterschiedlichen Zwecken:
| Merkmal | SMTP | HTTP |
|---|---|---|
| Hauptnutzung | Push (E-Mail senden) | Pull (Webinhalte abrufen) |
| Verbindung | Besteht während der Transaktion | Oft kurzlebig (stateless) |
| Binärdaten | Kodiert (Base64) | Nativ (Multipart/form-data) |
| Zuverlässigkeit | Eingebautes Queuing/Retries | Durch Anwendung geregelt |
FAQ
F: Ist SMTP sicher?
A: Das ursprüngliche SMTP war Klartext. Heute wird STARTTLS verwendet, um eine Klartextverbindung zu einer verschlüsselten Verbindung (TLS) aufzuwerten. SMTPS (SMTP über TLS) bietet Verschlüsselung von Beginn an.
F: Was ist der Unterschied zwischen „Envelope From“ und „Header From“?
A: Der „Envelope From“ (RFC 5321) wird von Servern für das Routing und Bounces verwendet. Der „Header From“ (RFC 5322) ist das, was der Benutzer in seinem E-Mail-Programm sieht. Sie müssen nicht identisch sein!
F: Warum verwenden wir Port 587 anstelle von 25?
A: Port 25 dient primär dem Relay zwischen Servern. Port 587 ist der Standard für die „Message Submission“ von einem E-Mail-Client an einen Server und erfordert meist eine Authentifizierung.
Verwandte Tools
- Base64-Kodierer/Dekodierer - E-Mail-Anhänge und einige Header werden mit Base64 kodiert.
- JSON-Formatierer - Nützlich zum Debuggen von API-basierten E-Mail-Diensten.
- URL-Kodierer/Dekodierer - Wichtig für die Erstellung von
mailto:-Links.