SMTP
SMTP (Simple Mail Transfer Protocol) ist das Standardprotokoll fuer den Versand von E-Mails im Internet. Es arbeitet auf der Anwendungsschicht des OSI-Modells und ist fuer die zuverlaessige Uebertragung 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 Rueckgrat der E-Mail-Kommunikation. Die aktuelle Version ist im RFC 5321 spezifiziert. Waehrend SMTP ausschliesslich fuer den Versand von E-Mails zustaendig ist, werden fuer 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-Uebertragung sieht folgendermassen aus:
- Verbindungsaufbau: Der Client stellt eine TCP-Verbindung zum SMTP-Server her
- Begruesssung: Der Server bestaetigt die Verbindung mit einem Willkommens-Banner
- Identifikation: Der Client identifiziert sich mit HELO oder EHLO
- Absender angeben: Mit MAIL FROM wird die Absenderadresse uebermittelt
- Empfaenger angeben: Mit RCPT TO werden ein oder mehrere Empfaenger definiert
- Nachricht uebertragen: Der DATA-Befehl leitet die eigentliche Nachricht ein
- Verbindung beenden: Mit QUIT wird die Verbindung ordnungsgemaess geschlossen
Store-and-Forward-Prinzip
Eine wichtige Eigenschaft von SMTP ist das Store-and-Forward-Prinzip. Wenn ein Mailserver eine E-Mail empfaengt, speichert er sie zunaechst und versucht dann, sie an den naechsten Server weiterzuleiten. Falls der Zielserver nicht erreichbar ist, wird die Nachricht in einer Warteschlange gespeichert und der Zustellversuch spaeter 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 erfuellen:
| Port | Bezeichnung | Verwendung |
|---|---|---|
| 25 | SMTP | Server-zu-Server-Kommunikation (MTA Relay) |
| 465 | SMTPS | Implizite TLS-Verschluesselung (deprecated, aber wieder im Einsatz) |
| 587 | Submission | Client-zu-Server-Kommunikation mit STARTTLS |
Port 25 ist der urspruengliche SMTP-Port und wird heute hauptsaechlich fuer die Kommunikation zwischen Mailservern verwendet. Viele Internet-Provider blockieren diesen Port fuer Endnutzer, um Spam zu reduzieren.
Port 587 (Submission) ist der empfohlene Port fuer E-Mail-Clients, um Nachrichten an den Mailserver zu uebermitteln. Er erfordert typischerweise eine Authentifizierung und unterstuetzt die Verschluesselung mittels STARTTLS.
Port 465 wurde urspruenglich fuer SMTPS (SMTP ueber SSL) registriert, dann verworfen und spaeter wieder eingefuehrt. Er verwendet implizite TLS-Verschluesselung, das heisst die Verbindung ist von Anfang an verschluesselt.
Wichtige SMTP-Befehle
SMTP verwendet textbasierte Befehle, die der Client an den Server sendet. Die wichtigsten Befehle sind:
| Befehl | Beschreibung |
|---|---|
| HELO | Einfache Begruesssung (veraltet) |
| EHLO | Extended HELLO - initiiert ESMTP und fragt Serverfaehigkeiten ab |
| MAIL FROM | Definiert die Absenderadresse (Envelope-Sender) |
| RCPT TO | Definiert einen Empfaenger (kann mehrfach verwendet werden) |
| DATA | Leitet die Uebertragung des Nachrichteninhalts ein |
| QUIT | Beendet die SMTP-Sitzung |
| RSET | Setzt die aktuelle Transaktion zurueck |
| VRFY | Verifiziert eine E-Mail-Adresse (oft deaktiviert) |
| AUTH | Initiiert die Authentifizierung |
HELO vs. EHLO
Der HELO-Befehl stammt aus der urspruenglichen 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 unterstuetzten Erweiterungen wie Verschluesselung, Authentifizierungsmethoden oder maximale Nachrichtengroesse.
Beispiel einer SMTP-Sitzung
So koennte 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 Verschluesselung
Urspruenglich wurde SMTP ohne jegliche Authentifizierung oder Verschluesselung entwickelt - ein Designentscheid aus einer Zeit, als das Internet noch ein vertrauenswuerdiges Netzwerk war. Heute sind beide Aspekte unverzichtbar.
SMTP-AUTH
SMTP-AUTH ist eine Erweiterung, die es Clients ermoeglicht, sich gegenueber dem Mailserver zu authentifizieren. Dies verhindert, dass unbefugte Nutzer den Server als Relay fuer Spam missbrauchen. Gaengige Authentifizierungsmechanismen sind:
- PLAIN: Benutzername und Passwort werden Base64-kodiert uebertragen (nur mit TLS verwenden!)
- LOGIN: Aehnlich wie PLAIN, aber in zwei Schritten
- CRAM-MD5: Challenge-Response-Verfahren ohne Klartextpasswort
- OAUTH2: Moderne Authentifizierung ueber OAuth-Tokens
Verschluesselung mit STARTTLS und TLS
STARTTLS ist ein Befehl, der eine unverschluesselte Verbindung auf eine verschluesselte TLS-Verbindung hochstuft. Nach dem erfolgreichen TLS-Handshake wird die gesamte weitere Kommunikation verschluesselt. Dies schuetzt sowohl Anmeldedaten als auch den Inhalt der E-Mails vor Abhoeren.
Bei implizitem TLS (Port 465) ist die Verbindung von Anfang an verschluesselt - 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 urspruenglich keine Moeglichkeit bot, die Identitaet des Absenders zu verifizieren, wurden mehrere Mechanismen entwickelt, um E-Mail-Faelschung (Spoofing) und Spam zu bekaempfen. Diese drei Technologien arbeiten zusammen und sind heute Standard fuer professionellen E-Mail-Betrieb.
SPF - Sender Policy Framework
SPF ermoeglicht es Domaininhabern, festzulegen, welche Mailserver berechtigt sind, E-Mails fuer ihre Domain zu versenden. Diese Information wird als TXT-Eintrag im DNS hinterlegt. Der empfangende Mailserver prueft, 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 fuegt E-Mails eine digitale Signatur hinzu, die vom sendenden Server mit einem privaten Schluessel erstellt wird. Der oeffentliche Schluessel wird im DNS veroeffentlicht. Empfangende Server koennen damit pruefen, ob die E-Mail tatsaechlich von der angegebenen Domain stammt und unterwegs nicht veraendert 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 Pruefungen nicht bestehen. Zusaetzlich ermoeglicht DMARC das Reporting: Domaininhaber erhalten Berichte ueber fehlgeschlagene Authentifizierungsversuche und koennen so Missbrauch ihrer Domain erkennen.
DMARC-Richtlinien:
- none: Nur Berichte sammeln, keine Massnahmen
- quarantine: Verdaechtige E-Mails in den Spam-Ordner verschieben
- reject: Nicht authentifizierte E-Mails komplett ablehnen
SMTP im Vergleich zu POP3 und IMAP
Ein haeufiges Missverstaendnis ist, dass SMTP fuer die gesamte E-Mail-Kommunikation zustaendig sei. Tatsaechlich ist SMTP nur fuer den Versand zustaendig. Fuer 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 (laed herunter) | Server (synchronisiert) |
| Mehrere Geraete | - | Problematisch | Optimiert |
POP3 (Post Office Protocol) laed E-Mails vom Server herunter und loescht sie dort optional. Es ist einfach, aber nicht fuer die Nutzung mit mehreren Geraeten geeignet. IMAP (Internet Message Access Protocol) synchronisiert E-Mails zwischen Server und Client, sodass alle Geraete denselben Stand haben - das ist heute der Standard fuer die meisten Anwender.
SMTP in der Praxis
Als Fachinformatiker fuer Systemintegration wirst du regelmaessig mit SMTP-Servern arbeiten. Typische Aufgaben sind die Einrichtung von Mailservern wie Postfix oder Microsoft Exchange, die Konfiguration von SPF-, DKIM- und DMARC-Eintraegen sowie die Fehlersuche bei Zustellproblemen.
Fuer Anwendungsentwickler ist SMTP relevant, wenn Anwendungen E-Mails versenden muessen - etwa Registrierungsbestaetigungen, Passwortzuruecksetzungen oder Benachrichtigungen. Hierfuer werden haeufig SMTP-Bibliotheken oder externe Dienste wie SendGrid, Amazon SES oder Mailgun verwendet.