SMTP – Simple Mail Transfer Protocol

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einführung in SMTP

Das Simple Mail Transfer Protocol (SMTP) ist das Standardprotokoll für den Versand und die Weiterleitung von E-Mails. Es regelt, wie E-Mails zwischen Mailservern übertragen werden und welche Ports für die Kommunikation genutzt werden.

Port 25
Wird für die Server-zu-Server-Kommunikation (MTA-zu-MTA) genutzt, meist mit optionalem STARTTLS.
Achtung: 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.


Das Simple Mail Transfer Protocol (SMTP) ist das Standardprotokoll für den Versand und die Weiterleitung von E-Mails. Es regelt, wie E-Mails zwischen Mailservern übertragen werden und welche Ports für die Kommunikation genutzt werden.

Port 25
Wird für die Server-zu-Server-Kommunikation (MTA-zu-MTA) genutzt, meist mit optionalem STARTTLS.
Achtung: 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. }}

Aufbau einer E-Mail

Eine E-Mail besteht aus zwei Hauptbestandteilen:

Envelope (Umschlag)
Enthält die Adressen des Absenders und des Empfängers, die für die SMTP-Zustellung verwendet werden. Diese Informationen sind nicht im Header sichtbar.
Header (Kopfzeilen)
Enthält Metadaten zur E-Mail. Wichtige Felder sind:
From: Absenderadresse
To: Empfängeradresse
Cc: Kopieempfänger (Carbon Copy)
Bcc: Verdeckte Kopieempfänger (Blind Carbon Copy)
Subject: Betreff der Nachricht
Date: Zeitpunkt des Versands
Message-ID: Eindeutige Kennung der Nachricht
Reply-To: Adresse für Antworten
Received: Routing-Informationen über die Mailserver, die die E-Mail verarbeitet haben
MIME-Version: Gibt an, ob die E-Mail Multipart-Inhalte oder Anhänge enthält
Content-Type: Definiert das Format der Nachricht, z. B. Text oder HTML
Body (Nachrichtentext)
Der eigentliche Inhalt der E-Mail. Er kann reinen Text oder HTML enthalten. Anhänge werden über MIME (Multipurpose Internet Mail Extensions) codiert.

Beispiel einer E-Mail

Ein vollständiges Beispiel einer SMTP-E-Mail mit Header und Body:

From: alice@example.com
To: bob@example.com
Cc: charlie@example.com
Bcc: dave@example.com
Subject: Testmail
Date: Tue, 12 Mar 2024 10:00:00 +0100
Message-ID: <123456@example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"

Hallo Bob,

dies ist eine Testmail mit CC und BCC.

Grüße
Alice

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.

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

Hier ein Beispiel für eine SMTP-Interaktion zwischen zwei Servern:

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.

Fazit

SMTP ist das zentrale Protokoll für den E-Mail-Versand. Es definiert, wie E-Mails weitergeleitet werden und welche Komponenten an der Verarbeitung beteiligt sind. Durch Erweiterungen wie STARTTLS und SMTP AUTH kann die Sicherheit erhöht werden. }}