ESMTP Einführung
ESMTP ist heute einer der integralen Bestandteile von E-Mail. Via SMTP
gelangen die Mails vom Sender (ein MTA oder MUA) bis zum MTA des
Empfängers. Dort werden sie gespeichert, und können dort entweder
lokal betrachtet werden, oder mit IMAP/POP3 heruntergeladen werden. ESMTP ist
eine Erweiterung (Extension) von SMTP. Wenn man heutzutage von SMTP spricht,
meint man meistens ESMTP. Dieser Text soll eine kleine Einführung in die
grosse und vielfältige Welt von E-Mail geben.
Wie sieht ESMTP aus ?
ESMTP ist ein sehr leichtverständliches Protokoll. Der Aufbau ist
logisch, und übersichtlich. Eine einfache, ohne Features ausgestatte SMTP
Konversation sieht in ungefähr so aus:
<<< 220 a.mx.projectdream.org NO UCE/UBE ESMTP
>>> ehlo stinky.trash.net
Der Server meldet seine Bereitschaft, und wir melden zurück, das wir
ESMTP unterstützen (ehlo statt helo bei SMTP), zudem geben wir unseren
Hostnamen an.
<<< 250-a.mx.projectdream.org NO UCE/UBE
<<< 250-PIPELINING
<<< 250 8BITMIME
Der Server meldet uns zurück, welche ESMTP Features er
unterstützt.
>>> mail from: <lb@trash.net>
<<< 250 ok
Wir geben an, wer Bounce-Nachrichten (Fehlermeldungen) für diese Mail
bekommen soll. Dieser Envelope Sender muss nichts mit dem From: Header weiter
unten zu tun haben.
>>> rcpt to: <lb@projectdream.org>
<<< 250 ok
Hier geben wir an, an wen diese Mail verschickt werden soll. Auch der
Envelope Receiver muss nichts mit dem To: Header zu tun haben (Beispiel:
Mailinglisten).
>>> data
<<< 354 go ahead
Wir geben an, das wir jetzt damit anfangen, die eigentliche Mail zu senden.
Diese besteht meistens aus einem Header nach RFC 822 (TODO: verlinken), und der
eigentlichen Nachricht. Unsere Beispielnachricht ist text/plain, 7bit. MIME und
verschiedene Content Encodings würden den Rahmen dieser Einführung sprengen.
>>> From: Lukas Beeler <lb@trash.net>
>>> To: Lukas Beeler <lb@projectdream.org>
>>> Subject: Test
>>> Message-ID: <5e94c0cccf8c884c074279cd9a8d2e76@trash.net>
>>>
Dies ist ein verkürzter Header ( Details: RFC 822, 2045 und 2046 ), der unvollständig ist, aber zum
Verständnis ausreichend. In unserem Beispiel entsprechen die From: und To:
Header den Envelope Sender bzw. Receiver.
>>> Dies ist eine Testnachricht
>>> .
<<< 250 ok 1014504830 qp 2850
Dies ist die eigentliche Nachricht. Sie wird mit einem alleinstehenden Punkt
auf einer Linie abgeschlossen, und der Server bestätigt uns den
erfolgreichen Empfang, und trägt von nunan die Verantwortung über die
Auslieferung dieser Mail.
>>> quit
<<< 221 a.mx.projectdream.org NO UCE/UBE
Wir senden den Befehl quit, und teilen damit dem Server mit, das wir gerne
die Verbindung beenden würden. Dieser bestätigt das, und beendet die
Verbindung.
Dies war ein eher kleiner Überblick über SMTP. Ich möchte noch
genauer auf SMTP AUTH und TLS eingehen. Wer sich zum Thema SMTP noch intensiver
informieren möchte, dem empfehle ich einen Blick ins RFC ( 2821 und 2822
)
SMTP AUTH
Die technischen Details von SMTP AUTH sind zu kompliziert, um hier komplett
erklärt zu werden. Für den technisch interessierten empfehle ich auch
hier wieder einen Blick ins RFC ( 2554 ).
Die Aufgabe von SMTP AUTH ist es, dem eigentlich benutzerlosen Protokoll SMTP
eine Möglichkeit der Authentifizierung hinzuzufügen. Der wichtigste
Grund ist es Benutzern mit dynamischen IP Adressen eine Möglichkeit zur
Identifikation gegenüber dem MTA zu geben. SMTP AUTH wurde geschaffen, um
Bastellösungen wie SMTP-after-POP3 überflüssig zu machen. Dies
wurde durch die Einführung des neuen Befehls "auth" ermöglicht. Nun
bieten sich hier mehrere Möglichkeiten, das Passwort zu übermitteln.
Der wohl einfachste weg ist auth plain, bei dem das Passwort als plaintext
übermittelt wird. Dies ist im heutigen Internetzeitalter nicht mehr
zumutbar. Deswegen existieren Möglichkeiten, das Passwort
verschlüsselt zu übermitteln, z.B. mit CRAM-MD5. Bei der Benutzung von
TLS kann man jedoch auch gefahrlos auth plain benutzen.
TLS/SSL
TLS bzw. SSL ist eine Möglichkeit Traffic auf Layer 3 zu
verschlüsseln. Auch andere Protokolle nutzen TLS. TLSv1 basiert auf SSLv3,
welches ursprünglich von Netscape entwickelt wurde. https ist nichts anderes
als normales http über eine mit TLS gesicherte Verbindung. Auch bei SMTP
wird TLS benutzt. Dies geschieht nach dem ehlo Kommando durch das senden von
starttls. Damit wird die SSL geschützte SMTP Verbindung initialisiert, und
von diesem Moment an ist die gesamte Verbindung verschlüsselt, und damit
mehr oder weniger sicher. Jetzt kann auch auth plain gefahrlos verwendet werden.
Wichtig ist jedoch, das TLS Software wie PGP in keinster weise ersetzt. Sie
sichert nur die Verbindung zwischen zwei Mailservern ab, und bietet nur einen
Schutz für die Authentikationsdaten, aber nicht für den Inhalt der
Mail selbst. Auch hier empfiehlt sich für den technisch Interessierten
einen Blick in die entsprechenden RFC's ( 2246 und 2487 ).
|