SMTP: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== SMTP-Protokollgrundlagen ==
+
== SMTP – Simple Mail Transfer Protocol ==
  
Das '''Simple Mail Transfer Protocol (SMTP)''' ist ein Netzwerkprotokoll, das zur Übertragung von E-Mails über das Internet verwendet wird. Es dient dazu, E-Mails von einem Absender an einen oder mehrere Empfänger zu senden.
+
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.
  
=== Verbindungsaufbau ===
+
== SMTP-Protokollgrundlagen ==
  
Der Verbindungsaufbau im SMTP-Protokoll umfasst folgende Schritte:
+
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. 
  
Der Client (Absender) öffnet eine TCP/IP-Verbindung zum SMTP-Server (Mail-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.
+
=== SMTP-Agenten === 
  
Eine TLS-Verschlüsselung kann durch den Einsatz von STARTTLS vereinbart werden, wodurch die Kommunikation zwischen Client und Server verschlüsselt wird.
+
Bei der Verarbeitung einer E-Mail sind mehrere Komponenten beteiligt: 
  
=== Kommunikation ===
+
; '''MTA (Mail Transfer Agent)''' 
 +
: Nimmt E-Mails entgegen, speichert sie und leitet sie weiter. 
  
Die Kommunikation zwischen Client und Server im SMTP-Protokoll umfasst folgende Schritte:
+
; '''MDA (Mail Delivery Agent)''' 
 +
: Zuständig für die Ablage der E-Mail im Postfach des Empfängers. 
  
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".
+
; '''MUA (Mail User Agent)''' 
 +
: Das E-Mail-Programm oder Webmail-Interface des Benutzers zum Senden und Empfangen von E-Mails.
  
Nach der Begrüßung kommunizieren Client und Server miteinander, indem sie Nachrichten in Form von Kommandos und Antworten austauschen. Jede Nachricht besteht aus einer Zeichenkette, gefolgt von einem Zeilenumbruch (CRLF).
+
; '''MSA (Mail Submission Agent)''' 
 +
: Nimmt E-Mails von einem MUA entgegen und übergibt sie an den MTA zur Weiterleitung.
  
Die meisten SMTP-Kommandos beginnen mit einem Dreibuchstaben-Code. Beispielsweise steht "HELO" für eine Begrüßung des Clients und "MAIL FROM" für den Absender der E-Mail.
+
=== Verbindungsaufbau === 
  
Der Server antwortet auf jedes Kommando des Clients mit einem entsprechenden Antwortcode. Ein Code 250 bedeutet beispielsweise, dass das Kommando erfolgreich ausgeführt wurde.
+
Der Verbindungsaufbau im SMTP-Protokoll umfasst folgende Schritte: 
  
=== Absender und Empfänger ===
+
; '''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. 
  
Die Angabe des Absenders und der Empfänger im SMTP-Protokoll umfasst folgende Schritte:
+
; '''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. 
  
Der Client gibt den Absender der E-Mail (MAIL FROM) und die Empfänger (RCPT TO) an.
+
== Kommunikation im SMTP-Protokoll == 
  
Das Kommando "MAIL FROM" wird verwendet, um den Absender zu spezifizieren, und das Kommando "RCPT TO" wird verwendet, um die Empfänger anzugeben. Mehrere Empfänger können durch wiederholtes Senden des "RCPT TO"-Kommandos angegeben werden.
+
Die Kommunikation zwischen Client und Server im SMTP-Protokoll erfolgt in mehreren Schritten: 
  
=== Nachrichteninhalt ===
+
; '''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''. 
  
Die Übermittlung des Nachrichteninhalts im SMTP-Protokoll umfasst folgende Schritte:
+
; '''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 
  
Der Client übermittelt den Inhalt der E-Mail an den Server, normalerweise über das DATA-Kommando. Vor dem Senden der E-Mail wird eine Trennlinie mit einem einzelnen Punkt (".") verwendet, um das Ende der E-Mail-Daten anzuzeigen.
+
; '''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 
  
Die E-Mail kann sowohl Text als auch HTML enthalten, und Anhänge werden als separate Teile der E-Mail übertragen.
+
== Ablauf einer SMTP-Kommunikation == 
  
=== Übertragung ===
+
Die SMTP-Kommunikation erfolgt in mehreren Schritten: 
  
Die Übertragung der E-Mail im SMTP-Protokoll umfasst folgende Schritte:
+
# 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. 
  
Der Server überprüft die empfangene E-Mail, einschließlich der Überprüfung von Absender, Empfänger, Nachrichtenformat und Größe.
+
== Beispiel einer SMTP-Sitzung == 
  
Wenn der Server nicht der endgültige Ziel-Mail-Server ist, leitet er die E-Mail an den nächsten Server weiter, bis sie den Ziel-Mail-Server erreicht.
+
<pre>
 +
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
  
Die Übertragung zwischen den Servern erfolgt über SMTP-Verbindungen. Diese Verbindungen werden durch das Senden eines weiteren Begrüßungskommandos (HELO oder EHLO) an den nächsten Server hergestellt.
+
Dies ist eine SMTP-Testnachricht.
  
=== Beendigung ===
+
.
 +
250 OK: queued as 12345
 +
QUIT
 +
221 Bye
 +
</pre> 
  
Die Beendigung der SMTP-Verbindung umfasst folgende Schritte:
+
== Erweiterungen von SMTP == 
  
Nachdem die E-Mail übertragen wurde, sendet der Client das QUIT-Kommando, um die Verbindung zum SMTP-Server zu beenden.
+
SMTP kann durch verschiedene Erweiterungen ergänzt werden: 
  
Der Server antwortet mit einem Bestätigungscode, und die Verbindung wird geschlossen.
+
; '''STARTTLS''' 
 +
: Ermöglicht die Verschlüsselung der Verbindung mit TLS.
  
Das SMTP-Protokoll bietet auch Funktionen zur Authentifizierung, Verschlüsselung und verschiedene Erweiterungen, um den E-Mail-Versand sicherer und effizienter zu gestalten. Es ist wichtig anzumerken, dass das SMTP-Protokoll nur für die Übertragung der E-Mails verantwortlich ist. Die Speicherung und Zustellung der E-Mails auf den Mail-Servern erfolgt über andere Protokolle wie POP3 (Post Office Protocol Version 3) oder IMAP (Internet Message Access Protocol).
+
; '''SMTP AUTH''' 
 +
: Authentifiziert den Absender mit Benutzername und Passwort.
  
==Beispiele==
+
; '''DSN (Delivery Status Notification)''' 
*telnet smtp.gmail.com 25
+
: Ermöglicht die Rückmeldung über den Zustellstatus der E-Mail. 
helo smtp.gmail.com
+
 
*openssl s_client -connect smtp.gmail.com:465
+
; '''PIPELINING''' 
helo smtp.gmail.com
+
: 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'''.

Aktuelle Version vom 11. März 2025, 21:50 Uhr

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:

  1. Der sendende Server öffnet eine TCP-Verbindung zum empfangenden Server auf Port 25 oder 587.
  2. Der Server begrüßt sich mit HELO oder EHLO.
  3. Der Absender (MAIL FROM) und Empfänger (RCPT TO) werden angegeben.
  4. Die Nachricht wird mit DATA gesendet, gefolgt von einem Punkt (.) zur Beendigung.
  5. Der Server bestätigt die Annahme mit 250 OK.
  6. 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.