7.4    Mail-Transport

Ihre E-Mails können Sie auf verschiedene Arten senden und empfangen. Der Transport erfolgt im Hintergrund durch den Mail Transport Agent (MTA), während Sie selbst den Mail User Agent (MUA) benutzen (Outlook, K-Mail, Evolution, Mutt, Alpine …).

7.4.1    Grundlagen des SMTP/ESMTP-Protokolls

Ihre E-Mails werden mit dem Simple Mail Transport Protocol (SMTP) bzw. dem Extended Simple Mail Transport Protocol (ESMTP) übertragen. Oft hören Sie den Begriff SMTP, gemeint ist aber die neuere Version ESMTP. Der MTA benutzt das (E)SMTP-Protokoll.

Übersicht über das SMTP/ESMTP-Protokoll und den Mail-Transport

Sie können aus verschiedenen MTAs wählen:

Der Absender einer E-Mail muss sich bei »seinem« SMTP-Server authentifizieren. Verlangt der Server keine Anmeldung, fungiert er als »Open-Relay« und damit als Verbreitungswerkzeug für unerwünschte E-Mails (Spam). Beim Einsatz des SMTP-Auth zur Authentifizierung können Sie folgende Verfahren einsetzen:

Bevorzugen Sie auch im Intranet verschlüsselte Anmeldeverfahren. Moderne MTAs beherrschen eine oder mehrere Formen davon.

Gegen das unerwünschte Mitlesen von E-Mails während des Transports helfen verschiedene Verschlüsselungstechniken: für die Übertragung als solche (SSL/TLS) und auch für den Inhalt. Hier gibt es mehrere Standards. Sie müssen vorher mit dem Empfänger absprechen, welche Verschlüsselungsmethode er »versteht«.

Der Mail-Transport besteht aus mehreren Phasen. Sie senden von Ihrem PC aus mit Ihrem E-Mail-Programm eine Nachricht per SMTP ab. Ihr Programm authentifiziert sich beim SMTP-Server Ihres Providers. Dieser Server verfügt über einen eigenen SMTP-Client. Dieser leitet die Nachricht ebenfalls per SMTP an den Mail-Server beim Provider des Empfängers weiter. Der empfangende Server gleicht möglicherweise die Adresse des sendenden SMTPs mit einer »Blacklist« (hier werden Spam-Server geführt) ab. Hierzu muss der DNS-Zugriff funktionieren. Der Empfänger der E-Mail kann auf die E‐Mail aber nicht mittels SMTP zugreifen. Für das Abholen muss er Protokolle wie POP3 oder IMAP benutzen, wenn er die Mails auf seinen lokalen Rechner übertragen möchte. Alternativ bieten viele Provider Webmail-Lösungen an. Hier greifen Sie mittels Webbrowser mit HTTPS auf Ihre E-Mails auf dem Server (Schreiben und Lesen) zu.

In Abbildung 7.14 zeige ich Ihnen schematisch den Lauf einer E-Mail. Die Webmail-Lösung habe ich dabei nicht dargestellt.

Schema des Transportwegs einer E-Mail

Abbildung 7.14     Schema des Transportwegs einer E-Mail

Der SMTP-Client sendet im Dialog mit dem Server verschiedene Kommandos. Eine Auswahl finden Sie in Tabelle 7.8.

Kommando

Aktion

EHLO <RECHNERNAME>

Beginn der SMTP-Sitzung; der Server teilt Ihnen mit, welche SMTP und ESMTP-Kommandos er anbietet.

HELO <RECHNERNAME>

Beginn der SMTP-Sitzung

MAIL FROM <ABSENDER>

Beginn der E-Mail-Übertragung mit Angabe der Absenderadresse

NOOP

Beim Leerlauf in der Sitzung bekommen Sie damit eine Antwort vom Server. Damit verhindern Sie einen Abbruch wegen Zeitüberschreitung (Time-out).

QUIT

Beenden der SMTP-Sitzung

RCPT TO <EMPFÄNGER>

Angabe der oder des Empfängers (mehrfach je Nachricht möglich)

RSET

Abbruch einer bereits eröffneten E-Mail-Übertragung, ohne die bestehende Verbindung zu beenden

VRFY

Überprüfung der Empfängeradresse

Tabelle 7.8     Auswahl an SMTP-Kommandos

Der SMTP-Server sendet Ihnen bzw. Ihrem E-Mail-Client während der Verbindung Statuscodes als Antwort auf die einzelnen Aktionen. In Tabelle 7.9 finden Sie eine Auswahl.

Code

Text

Bedeutung

220

SERVICE READY

Der Server ist bereit, Anweisungen entgegenzunehmen.

221

CLOSING CHANNEL

Der Server trennt die Sitzung.

250

OK

Das Kommando wurde erfolgreich ausgeführt.

354

START MAIL INPUT

Aufforderung zur Übermittlung der E‐Mail

421

<DOMAIN> SERVICE NOT AVAILABLE. CLOSING TRANSMISSION CHANNEL

Die Domain ist nicht verfügbar, die Verbindung wird getrennt.

500

SYNTAX ERROR, COMMAND UNRECOGNISED

Fehler im Kommando

501

SYNTAX ERROR, NO PARAMETERS ALLOWED

Fehler im Kommando, keine weiteren Parameter zulässig

502

COMMAND NOT IMPLEMENTED

Das Kommando ist entweder unbekannt oder nicht verfügbar.

503

BAD SEQUENCE OF COMMANDOS

falsche Reihenfolge der übermittelten Kommandos

504

COMMAND PARAMETER NOT IMPLEMENTED

Dieser Parameter im Kommando nicht möglich.

554

TRANSACTION FAILED

Übermittlung fehlgeschlagen oder kein SMTP-Service verfügbar

Tabelle 7.9     SMTP-Statuscodes

7.4.2    Konfigurationshinweise

Wenn Sie selbst einen SMTP-Server für Ihr Netz installieren, können Sie verschiedene Einsatzbereiche festlegen:

Testen Sie vor dem Echteinsatz Ihres SMTP-Servers, ob

Die ersten Funktionsprüfungen können Sie übrigens mit dem telnet-Client vornehmen. Mit einem E-Mail-Client (MUA) als Testobjekt laufen Sie Gefahr, dass falsche oder zu allgemeine Fehlermeldungen ausgegeben werden. Dies würde die Nachkonfiguration erschweren. Allerdings können Sie mit dieser Methode nur unverschlüsselte E‐Mail-Übertragungen prüfen. Sie bauen die Verbindung in der Form

telnet <RECHNERNAME> 25

oder

telnet <IPADRESSE> 25

auf. Zwischen <RECHNERNAME> oder <IP-ADRESSE> und der Port-Angabe 25 steht ein Leerzeichen.

Zunächst sehen Sie in Abbildung 7.15 die Abfrage allgemeiner Einstellungen und angebotener Kommandos.

Abfrage verfügbarer Kommandos

Abbildung 7.15     Abfrage verfügbarer Kommandos

In Abbildung 7.16 sehen Sie den kompletten Ablauf einer E-Mail-Lieferung an den SMTP-Server.

Manueller Test einer E-Mail-Übertragung

Abbildung 7.16     Manueller Test einer E-Mail-Übertragung

7.4.3    Anhänge von E-Mails, MIME, S/MIME

E-Mails können nur Text transportieren. Der Text muss zudem im ASCII-Code (American Standard Code for Information Interchange) vorliegen. Damit Sie in Ihren E-Mails auch Umlaute benutzen und Dateien anhängen können, gibt es Erweiterungen (Multipurpose Internet Mail Extensions, MIME, und für die Verschlüsselung von E-Mails Secure MIME, S/MIME).

Die MIME-Erweiterungen codieren Nicht-ASCII-Texte und Anhänge (Binärcode, Bilder, Multimedia-Dateien) in ASCII-Zeichenfolgen um. Nur mit diesen kann das E-Mail-System umgehen. Beim Empfänger werden diese Anhänge wieder in das Originalformat zurückverwandelt.

MIME-Erweiterung, Codierungen

Codierungen:

7bit: nur ASCII

8bit: ASCII und einzelne Sonderzeichen

Nicht-ASCII-Texte: Quoted-Printable-Verfahren. Sie codieren alle Bytes außerhalb des ASCII-Zeichensatzes. Das umgewandelte Zeichen trägt als Kennzeichnung das »=«-Zeichen. Der Zeichenwert in hexadezimaler Form schließt sich daran an.

Binäre Anhänge und zum Teil Texte: Sie codieren alle Nicht-Text-Anhänge (Binärdaten aller Art) mittels Base64 in ASCII-Text.

MIME-Parts: Die MIME-Spezifikation ist in mehrere Sektionen unterteilt:
Part 1: Erweiterungen des Mail-Headers
Part 2: Typ des Inhalts
Part 3: Mail-Header-Erweiterungen für Nicht-ASCII-Text
Part 4: Registrierungsprozedur von neuen Erweiterungen bei der IANA
Part 5: Mindestanforderungen an MUAs

RFCs: 1847, 2045, 2046, 2047, 2049, 2131, 2184, 2231, 3396, 3676, 3798, 4289, 4361, 4648, 4829, 5147, 5322, 5494, 6532, 6657, 6838, 6842, 6854, 7303, 8098

MIME kennt derzeit nur die Version 1.0. Sie verwenden diesen Eintrag ohne Änderung.

MIME kennt verschiedene Inhalttypen. Diese finden Sie als Content-Type-Eintrag im Kopfbereich der E-Mail:

Am Content-Type-Eintrag finden Sie eine weitere Beschreibung des Inhalts. Bei Texten finden Sie Hinweise zum Zeichensatz (Text/Plain charset="<ZEICHENSATZ>"). In Tabelle 7.10 finden Sie eine kleine Übersicht häufig vorkommender Content-Type-Einträge.

Content-Type (MIME-Type)

Inhalt

text/plain

blanker Text

text/html

HTML-Text

multipart/mixed

mehrteilige Daten in verschiedenen Formaten (Text, Bilder …)

Tabelle 7.10     Inhaltsbeschreibungen

Nach der Inhaltsbeschreibung enthalten E-Mails einen weiteren Eintrag über die Art der Codierung (siehe den vorherigen Kasten »MIME-Erweiterung, Codierungen«).

Betrachten Sie zunächst in Listing 7.2 das Beispiel einer reinen Text-Mail, deren Inhalt im heute weitverbreiteten Zeichensatz utf8 abgefasst ist:

From: Harald Zisler <harald@example.com>
To: harald@example.com
Subject: Test Umlaute =?utf-8?b?w5bDhMOcw58=?=
Date: Mon, 25 Jul 2016 23:06:38 +0200
User-Agent: KMail/1.13.5 (Linux/2.6.32-5-amd64; KDE/4.4.5; x86_64; ; )
MIME-Version: 1.0
Content-Type: Text/Plain;
charset="utf-8"
Content-Transfer-Encoding: base64
...
VGVzdCBVbWxhdXRlL1NvbmRlcnplaWNoZW46CgrDpMO2w7zDn8OEw5bDnED

Listing 7.2     E-Mail mit Umlauten

Im Folgenden zeige ich Ihnen ein weiteres Beispiel. Diesmal handelt es sich um eine E‐Mail mit dem Content-Type multipart. In der E-Mail befinden sich eine Grafik- und eine HTML-Datei, etwas Text und ein ZIP-Archiv. Die einzelnen Anhänge einer E-Mail des Typs multipart werden durch die boundary-Einträge voneinander getrennt. Sie bilden eine Art »Zwischenüberschrift«, in der unter anderem der Content-Type der folgenden Daten angegeben wird. Ein weiterer boundary-Eintrag mit zwei Strichen am Ende seiner Zeichenkette schließt die Reihe der Anhänge ab.

From: Harald Zisler <harald@example.com>
To: harald@example.com
Subject: Mehrere =?iso-8859-1?q?Anh=E4nge?=
Date: Tue, 26 Jul 2016 20:35:52 +0200
User-Agent: KMail/1.13.5 (Linux/2.6.32-5-amd64; KDE/4.4.5; x86_64; ; )
MIME-Version: 1.0
Content-Type: Multipart/Mixed;
boundary="Boundary-00=_IkwLOSj9eA6z3cS"

--Boundary-00=_IkwLOSj9eA6z3cS
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Diese Mail hat mehrere Anh=E4nge!

--Boundary-00=_IkwLOSj9eA6z3cS
Content-Type: image/jpeg;
name="img_0604.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="img_0604.jpg"

/9j/4TP+RXhpZgAASUkqAAgAAAAKAA4BAgAgAAAAhgAAAA8BAgAGAAAApg
...
fy7eUvGo34wT61ZXxC8tmbZ1yq/dNFrk2OfMki3CurYH1pbiVpiSRk+tWg

--Boundary-00=_IkwLOSj9eA6z3cS
Content-Type: text/html;
charset="UTF-8";
name="index.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="index.html"

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
.Normal
...
</body>
</html>
--Boundary-00=_IkwLOSj9eA6z3cS
Content-Type: application/x-compressed-tar;
name="modem.tgz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="modem.tgz"

H4sICK0RFEwAA21vZGVtLnRhcgDsvGVsHc+/5nmOmZmZ2Y6Z7ZiZmZmZ2c
...
+bCMTAGn65n/o59AN27cuHHjxo0bN27cuHHjxo0bN27cuHHjxo0bN27cuH
--Boundary-00=_IkwLOSj9eA6z3cS--

Listing 7.3     E-Mail mit mehreren Anhängen

In Abbildung 7.17 sehen Sie die in Listing 7.3 gezeigte E-Mail im MUA.

Multipart-E-Mail

Abbildung 7.17     Multipart-E-Mail