SMTP
SMTP – Simple Mail Transfer Protocol
Das Simple Mail Transfer Protocol (SMTP) ist das Standardprotokoll für den Versand und die Weiterleitung von E-Mails. Es definiert, wie E-Mails zwischen Mailservern übertragen werden. SMTP basiert auf einer Client-Server-Architektur und regelt sowohl die direkte Kommunikation zwischen Mailservern als auch die Übergabe von E-Mails durch Mail-Clients an einen Mailserver.
SMTP-Protokollgrundlagen
SMTP ist ein textbasiertes Protokoll, bei dem Client und Server in einer definierten Abfolge von Kommandos und Antworten kommunizieren. Es wird für den Versand und die Weiterleitung von E-Mails genutzt, nicht jedoch für den Abruf von Nachrichten durch Endbenutzer.
SMTP-Agenten
Bei der Verarbeitung einer E-Mail sind mehrere Komponenten beteiligt:
- MTA (Mail Transfer Agent)
- Nimmt E-Mails entgegen, speichert sie und leitet sie weiter.
- MDA (Mail Delivery Agent)
- Zuständig für die Ablage der E-Mail im Postfach des Empfängers.
- MUA (Mail User Agent)
- Das E-Mail-Programm oder Webmail-Interface des Benutzers zum Senden und Empfangen von E-Mails.
- MSA (Mail Submission Agent)
- Nimmt E-Mails von einem MUA entgegen und übergibt sie an den MTA zur Weiterleitung.
Verbindungsaufbau
Der Verbindungsaufbau im SMTP-Protokoll umfasst folgende Schritte:
- Verbindung herstellen
- Der Client (Absender) öffnet eine TCP/IP-Verbindung zum SMTP-Server des Empfängers auf Port 25 (Standard-SMTP-Port).
- Alternativ können auch andere Ports wie 587 (Submission) oder 465 (SMTPS) verwendet werden, um verschlüsselte Verbindungen herzustellen.
- Verschlüsselung
- Eine TLS-Verschlüsselung kann durch den Einsatz von STARTTLS vereinbart werden, wodurch die Kommunikation zwischen Client und Server verschlüsselt wird.
- Das BSI empfiehlt jedoch, STARTTLS nicht mehr zu verwenden, sondern direkt **SMTP über TLS (Port 465)** zu nutzen.
Kommunikation im SMTP-Protokoll
Die Kommunikation zwischen Client und Server im SMTP-Protokoll erfolgt in mehreren Schritten:
- Begrüßung
- Der SMTP-Server sendet eine Begrüßungsnachricht, um die Verbindung herzustellen. Diese Nachricht enthält normalerweise den Servernamen und einen Code wie 220 mail.example.com ESMTP.
- Kommando-Austausch
- Nach der Begrüßung kommunizieren Client und Server miteinander, indem sie Nachrichten in Form von Kommandos und Antworten austauschen.
- Die meisten SMTP-Kommandos bestehen aus drei oder vier Buchstaben. Beispiele:
- HELO – Begrüßung des Clients
- EHLO – Erweiterte Begrüßung für ESMTP
- MAIL FROM – Absender der E-Mail
- RCPT TO – Empfänger der E-Mail
- DATA – Beginn der Nachrichtenübertragung
- QUIT – Verbindung beenden
- Antworten des Servers
- Der Server antwortet auf jedes Kommando mit einem numerischen Antwortcode. Beispiel:
- 250 OK – Kommando erfolgreich
- 421 Service not available – Server nicht verfügbar
- 550 Requested action not taken – Fehlerhafte oder nicht erlaubte Empfängeradresse
Ablauf einer SMTP-Kommunikation
Die SMTP-Kommunikation erfolgt in mehreren Schritten:
- Der sendende Server öffnet eine TCP-Verbindung zum empfangenden Server auf Port 25 oder 587.
- Der Server begrüßt sich mit HELO oder EHLO.
- Der Absender (MAIL FROM) und Empfänger (RCPT TO) werden angegeben.
- Die Nachricht wird mit DATA gesendet, gefolgt von einem Punkt (.) zur Beendigung.
- Der Server bestätigt die Annahme mit 250 OK.
- Die Verbindung wird mit QUIT beendet.
Beispiel einer SMTP-Sitzung
220 mail.example.com ESMTP EHLO sender.example.com 250-mail.example.com 250-SIZE 10485760 250-STARTTLS 250 AUTH PLAIN LOGIN MAIL FROM:<alice@example.com> 250 OK RCPT TO:<bob@example.com> 250 OK DATA 354 End data with <CR><LF>.<CR><LF> From: alice@example.com To: bob@example.com Subject: Test Dies ist eine SMTP-Testnachricht. . 250 OK: queued as 12345 QUIT 221 Bye
Erweiterungen von SMTP
SMTP kann durch verschiedene Erweiterungen ergänzt werden:
- STARTTLS
- Ermöglicht die Verschlüsselung der Verbindung mit TLS.
- SMTP AUTH
- Authentifiziert den Absender mit Benutzername und Passwort.
- DSN (Delivery Status Notification)
- Ermöglicht die Rückmeldung über den Zustellstatus der E-Mail.
- PIPELINING
- Erlaubt das Senden mehrerer Befehle in einer Übertragung, um die Effizienz zu steigern.
SMTP-Ports und Sicherheit
SMTP nutzt verschiedene Ports, abhängig von der Art der Verbindung und Sicherheitseinstellungen:
- Port 25
- Wird für die Server-zu-Server-Kommunikation (MTA-zu-MTA) genutzt, oft mit optionalem STARTTLS.
- Viele Provider blockieren ausgehenden Traffic auf Port 25, um Spam zu verhindern.
- Port 465
- Wird für Mail-Submission genutzt, **mit erzwungener TLS-Verschlüsselung (Implicit TLS)**.
- Diese Methode wird vom BSI empfohlen, da sie nicht durch Downgrade-Angriffe manipuliert werden kann.
- Port 587
- Wird für Mail-Submission genutzt, aber mit **STARTTLS** (opportunistische Verschlüsselung).
- Das BSI rät von STARTTLS ab, da es durch Man-in-the-Middle-Angriffe entfernt werden kann.
Hinweis: Das **BSI empfiehlt ausdrücklich Port 465 für Mail-Submission**, da hier eine direkte TLS-Verbindung erzwungen wird. Port 25 bleibt für den Transport zwischen Mailservern (MTA-zu-MTA), ist aber für Clients ungeeignet.
Fazit
SMTP ist das zentrale Protokoll für den E-Mail-Versand und definiert die Übertragung zwischen Mailservern sowie die Einlieferung durch Clients. Moderne Sicherheitsrichtlinien empfehlen die Nutzung von **Port 465 mit erzwungener TLS-Verschlüsselung**, um Downgrade-Attacken zu verhindern. Während **Port 25 für den Server-zu-Server-Verkehr genutzt wird**, ist **Port 587 mit STARTTLS nicht mehr die bevorzugte Wahl**.