SMTP
SMTP (Simple Mail Transfer Protocol) ist das Standardprotokoll für den Versand von E-Mails im Internet. Es arbeitet auf der Anwendungsschicht des OSI-Modells und ist für die zuverlässige Übertragung von E-Mail-Nachrichten zwischen Mailservern sowie von E-Mail-Clients zu Mailservern verantwortlich.
SMTP wurde erstmals 1982 im RFC 821 definiert und ist seitdem das Rückgrat der E-Mail-Kommunikation. Die aktuelle Version ist im RFC 5321 spezifiziert. Während SMTP ausschließlich für den Versand von E-Mails zuständig ist, werden für den Empfang andere Protokolle wie POP3 oder IMAP verwendet.
Funktionsweise von SMTP
SMTP basiert auf dem Client-Server-Modell und arbeitet nach einem einfachen Anfrage-Antwort-Prinzip. Ein SMTP-Client (der Absender) stellt eine Verbindung zu einem SMTP-Server her und sendet Befehle, auf die der Server mit Statuscodes antwortet.
Der typische Ablauf einer E-Mail-Übertragung sieht folgendermaßen aus:
- Verbindungsaufbau: Der Client stellt eine TCP-Verbindung zum SMTP-Server her
- Begrüßung: Der Server bestätigt die Verbindung mit einem Willkommens-Banner
- Identifikation: Der Client identifiziert sich mit HELO oder EHLO
- Absender angeben: Mit MAIL FROM wird die Absenderadresse übermittelt
- Empfänger angeben: Mit RCPT TO werden ein oder mehrere Empfänger definiert
- Nachricht übertragen: Der DATA-Befehl leitet die eigentliche Nachricht ein
- Verbindung beenden: Mit QUIT wird die Verbindung ordnungsgemäß geschlossen
Store-and-Forward-Prinzip
Eine wichtige Eigenschaft von SMTP ist das Store-and-Forward-Prinzip. Wenn ein Mailserver eine E-Mail empfängt, speichert er sie zunächst und versucht dann, sie an den nächsten Server weiterzuleiten. Falls der Zielserver nicht erreichbar ist, wird die Nachricht in einer Warteschlange gespeichert und der Zustellversuch später wiederholt. Erst nach mehreren fehlgeschlagenen Versuchen (typischerweise nach einigen Tagen) wird eine Unzustellbarkeitsnachricht an den Absender gesendet.
SMTP-Ports und deren Verwendung
SMTP nutzt verschiedene Well-Known Ports, die jeweils unterschiedliche Zwecke erfüllen:
| Port | Bezeichnung | Verwendung |
|---|---|---|
| 25 | SMTP | Server-zu-Server-Kommunikation (MTA Relay) |
| 465 | SMTPS | Implizite TLS-Verschlüsselung (deprecated, aber wieder im Einsatz) |
| 587 | Submission | Client-zu-Server-Kommunikation mit STARTTLS |
Port 25 ist der ursprüngliche SMTP-Port und wird heute hauptsächlich für die Kommunikation zwischen Mailservern verwendet. Viele Internet-Provider blockieren diesen Port für Endnutzer, um Spam zu reduzieren.
Port 587 (Submission) ist der empfohlene Port für E-Mail-Clients, um Nachrichten an den Mailserver zu übermitteln. Er erfordert typischerweise eine Authentifizierung und unterstützt die Verschlüsselung mittels STARTTLS.
Port 465 wurde ursprünglich für SMTPS (SMTP über SSL) registriert, dann verworfen und später wieder eingefüht. Er verwendet implizite TLS-Verschlüsselung, das heißt die Verbindung ist von Anfang an verschlüsselt.
Wichtige SMTP-Befehle
SMTP verwendet textbasierte Befehle, die der Client an den Server sendet. Die wichtigsten Befehle sind:
| Befehl | Beschreibung |
|---|---|
| HELO | Einfache Begrüßung (veraltet) |
| EHLO | Extended HELLO - initiiert ESMTP und fragt Serverfähigkeiten ab |
| MAIL FROM | Definiert die Absenderadresse (Envelope-Sender) |
| RCPT TO | Definiert einen Empfänger (kann mehrfach verwendet werden) |
| DATA | Leitet die Übertragung des Nachrichteninhalts ein |
| QUIT | Beendet die SMTP-Sitzung |
| RSET | Setzt die aktuelle Transaktion zurück |
| VRFY | Verifiziert eine E-Mail-Adresse (oft deaktiviert) |
| AUTH | Initiiert die Authentifizierung |
HELO vs. EHLO
Der HELO-Befehl stammt aus der ursprünglichen SMTP-Spezifikation und wird heute nur noch selten verwendet. EHLO (Extended HELLO) ist der moderne Nachfolger und wird von ESMTP (Extended SMTP) genutzt. Der wichtige Unterschied: Bei EHLO antwortet der Server mit einer Liste seiner unterstützten Erweiterungen wie Verschlüsselung, Authentifizierungsmethoden oder maximale Nachrichtengröße.
Beispiel einer SMTP-Sitzung
So könnte eine vereinfachte SMTP-Sitzung aussehen:
S: 220 mail.example.com ESMTP Postfix
C: EHLO client.example.org
S: 250-mail.example.com Hello client.example.org
S: 250-SIZE 52428800
S: 250-STARTTLS
S: 250 AUTH PLAIN LOGIN
C: MAIL FROM:<sender@example.org>
S: 250 OK
C: RCPT TO:<empfaenger@example.com>
S: 250 OK
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: Testmail
C: From: sender@example.org
C: To: empfaenger@example.com
C:
C: Dies ist eine Testnachricht.
C: .
S: 250 OK: queued as ABC123
C: QUIT
S: 221 Bye
Authentifizierung und Verschlüsselung
Ursprünglich wurde SMTP ohne jegliche Authentifizierung oder Verschlüsselung entwickelt - ein Designentscheid aus einer Zeit, als das Internet noch ein vertrauenswürdiges Netzwerk war. Heute sind beide Aspekte unverzichtbar.
SMTP-AUTH
SMTP-AUTH ist eine Erweiterung, die es Clients ermöglicht, sich gegenüber dem Mailserver zu authentifizieren. Dies verhindert, dass unbefugte Nutzer den Server als Relay für Spam missbrauchen. Gängige Authentifizierungsmechanismen sind:
- PLAIN: Benutzername und Passwort werden Base64-kodiert übertragen (nur mit TLS verwenden!)
- LOGIN: Ähnlich wie PLAIN, aber in zwei Schritten
- CRAM-MD5: Challenge-Response-Verfahren ohne Klartextpasswort
- OAUTH2: Moderne Authentifizierung über OAuth-Tokens
Verschlüsselung mit STARTTLS und TLS
STARTTLS ist ein Befehl, der eine unverschlüsselte Verbindung auf eine verschlüsselte TLS-Verbindung hochstuft. Nach dem erfolgreichen TLS-Handshake wird die gesamte weitere Kommunikation verschlüsselt. Dies schützt sowohl Anmeldedaten als auch den Inhalt der E-Mails vor Abhören.
Bei implizitem TLS (Port 465) ist die Verbindung von Anfang an verschlüsselt - der Client muss nicht erst STARTTLS senden. Beide Methoden bieten gleichwertigen Schutz, unterscheiden sich aber im Verbindungsaufbau.
Spam-Bekaempfung: SPF, DKIM und DMARC
Da SMTP ursprünglich keine Möglichkeit bot, die Identität des Absenders zu verifizieren, wurden mehrere Mechanismen entwickelt, um E-Mail-Fälschung (Spoofing) und Spam zu bekämpfen. Diese drei Technologien arbeiten zusammen und sind heute Standard für professionellen E-Mail-Betrieb.
SPF - Sender Policy Framework
SPF ermöglicht es Domaininhabern, festzulegen, welche Mailserver berechtigt sind, E-Mails für ihre Domain zu versenden. Diese Information wird als TXT-Eintrag im DNS hinterlegt. Der empfangende Mailserver prüft, ob die IP-Adresse des sendenden Servers in diesem Eintrag autorisiert ist.
example.com. IN TXT "v=spf1 mx a:mail.example.com ip4:192.0.2.0/24 -all"
Dieser SPF-Eintrag erlaubt E-Mails von den MX-Servern der Domain, dem Server mail.example.com und allen IPs im Bereich 192.0.2.0/24. Das -all am Ende bedeutet, dass alle anderen Quellen abgelehnt werden sollen.
DKIM - DomainKeys Identified Mail
DKIM fügt E-Mails eine digitale Signatur hinzu, die vom sendenden Server mit einem privaten Schlüssel erstellt wird. Der öffentliche Schlüssel wird im DNS veröffentlicht. Empfangende Server können damit prüfen, ob die E-Mail tatsächlich von der angegebenen Domain stammt und unterwegs nicht verändert wurde.
DMARC - Domain-based Message Authentication
DMARC baut auf SPF und DKIM auf und legt fest, wie empfangende Server mit E-Mails umgehen sollen, die diese Prüfungen nicht bestehen. Zusätzlich ermöglicht DMARC das Reporting: Domaininhaber erhalten Berichte über fehlgeschlagene Authentifizierungsversuche und können so Missbrauch ihrer Domain erkennen.
DMARC-Richtlinien:
- none: Nur Berichte sammeln, keine Maßnahmen
- quarantine: Verdächtige E-Mails in den Spam-Ordner verschieben
- reject: Nicht authentifizierte E-Mails komplett ablehnen
SMTP im Vergleich zu POP3 und IMAP
Ein häufiges Missverständnis ist, dass SMTP für die gesamte E-Mail-Kommunikation zuständig sei. Tatsächlich ist SMTP nur für den Versand zuständig. Für den Abruf von E-Mails vom Server werden andere Protokolle verwendet:
| Aspekt | SMTP | POP3 | IMAP |
|---|---|---|---|
| Funktion | E-Mail-Versand | E-Mail-Abruf | E-Mail-Abruf |
| Port (unverschl.) | 25, 587 | 110 | 143 |
| Port (TLS) | 465 | 995 | 993 |
| Speicherort | - | Lokal (lädt herunter) | Server (synchronisiert) |
| Mehrere Geräte | - | Problematisch | Optimiert |
POP3 (Post Office Protocol) lädt E-Mails vom Server herunter und löscht sie dort optional. Es ist einfach, aber nicht für die Nutzung mit mehreren Geräten geeignet. IMAP (Internet Message Access Protocol) synchronisiert E-Mails zwischen Server und Client, sodass alle Geräte denselben Stand haben - das ist heute der Standard für die meisten Anwender.
SMTP in der Praxis
Als Fachinformatiker für Systemintegration wirst du regelmäßig mit SMTP-Servern arbeiten. Typische Aufgaben sind die Einrichtung von Mailservern wie Postfix oder Microsoft Exchange, die Konfiguration von SPF-, DKIM- und DMARC-Einträgen sowie die Fehlersuche bei Zustellproblemen.
Für Anwendungsentwickler ist SMTP relevant, wenn Anwendungen E-Mails versenden müssen - etwa Registrierungsbestätigungen, Passwortzurücksetzungen oder Benachrichtigungen. Hierfür werden häufig SMTP-Bibliotheken oder externe Dienste wie SendGrid, Amazon SES oder Mailgun verwendet.