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
-
Funktionsschema Mail-Transport: siehe Abbildung 7.14
-
Wichtige Befehle: siehe Tabelle 7.8
-
Statuscodes: siehe Tabelle 7.9
Sie können aus verschiedenen MTAs wählen:
-
exim: leistungsfähig, ressourcenschonend, einfache Konfiguration
(www.exim.org) -
postfix: für mittlere und größere E-Mail-Aufkommen, umfangreiche Ausstattung
(www.postfix.org) -
qmail: für ISPs und sehr große E-Mail-Aufkommen (http://cr.yp.to/qmail.html)
-
MS EXCHANGE: für Microsoft Windows (www.microsoft.com)
-
Ports: 25/TCP, 465/TCP mit Verschlüsselung, 587/TCP
-
RFCs zum Nachlesen: 1845, 1870, 1985, 2034, 2047, 2184, 2231, 2505, 2852, 2920, 3030, 3207, 3461, 3463, 3464, 3798, 3885, 3886, 4468, 4865, 4954, 5248, 5321, 5322, 5337, 6152, 6409, 6531, 6532, 6533, 6854, 7100, 7504, 7817, 8098, 8314, 8997
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:
-
CRAM-MD5: Challenge-Response Authentication Mechanism, Message Digest 5; ein relativ sicheres Anmeldeverfahren, da keine Kennwörter im Klartext übertragen werden (siehe RFCs 2104, 2195 und 6151)!
-
LOGIN: Benutzername und Kennwort werden in zwei Schritten unverschlüsselt übertragen. Die verwendete Base64-Codierung ist keine Verschlüsselung im eigentlichen Sinne.
-
NTLM: NT-LAN-Manager; ein proprietäres Anmeldeverfahren von Microsoft.
-
PLAIN: Benutzername und Kennwort werden in einem Schritt unverschlüsselt übertragen. Die verwendete Base64-Codierung ist keine Verschlüsselung im eigentlichen Sinne (siehe RFC 4616, 8996).
-
SCRAM-SHA-1: Salted Challenge Response Authentication Mechanism; relativ sichere Anmeldemethode mit Verschlüsselung (siehe RFC 5808).
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.
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 |
---|---|
Beginn der SMTP-Sitzung; der Server teilt Ihnen mit, welche SMTP und ESMTP-Kommandos er anbietet. |
|
Beginn der SMTP-Sitzung |
|
Beginn der E-Mail-Übertragung mit Angabe der Absenderadresse |
|
Beim Leerlauf in der Sitzung bekommen Sie damit eine Antwort vom Server. Damit verhindern Sie einen Abbruch wegen Zeitüberschreitung (Time-out). |
|
Beenden der SMTP-Sitzung |
|
Angabe der oder des Empfängers (mehrfach je Nachricht möglich) |
|
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 |
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:
-
Der Server dient nur netzinternem E-Mail-Verkehr. Er verweigert E-Mails mit Adressen »von außerhalb« die Weiterleitung, und er leitet keine E-Mails »nach außen«.
-
Der Server dient dem netzinternen E-Mail-Verkehr und sendet ausgehende E-Mails in das Internet.
-
Der Server sendet ausschließlich ausgehende E-Mails weiter.
Testen Sie vor dem Echteinsatz Ihres SMTP-Servers, ob
-
Sie keine E-Mails mit beliebigem Absender darüber versenden können (Spam-Relay!),
-
abgehende E-Mails eine vollständige und richtige Absenderadresse aufweisen und ob
-
die Verbindung zu einem SMTP-Relay Ihres Internet-Providers verschlüsselt funktioniert.
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.
Abbildung 7.15 Abfrage verfügbarer Kommandos
In Abbildung 7.16 sehen Sie den kompletten Ablauf einer E-Mail-Lieferung an den SMTP-Server.
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:
-
application: angehängte Datei mit Zuordnung zu einer Anwendung
-
audio: Audiodatei
-
image: Grafikdatei
-
multipart: Daten sind mehrteilig.
-
video: Videodatei
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 |
---|---|
blanker Text |
|
HTML-Text |
|
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.
Abbildung 7.17 Multipart-E-Mail