Hosted at Sorceforge.net next up previous contents
Next: POP3 Up: Hitchhiker's Guide to the Previous: E-Mails   Contents

Subsections

SMTP

Der Mail-Header ist jetzt erklärt, doch eine Frage wurde bisher nur verdrängt: Wie kommen die Mails eigentlich beim Empfänger an?

Diesen Part übernimmt das SMTP15-Protokoll, eines der ersten, die es im Internet16, gab.

Um einen Nutzer im Internet eindeutig zu adressieren, entwickelte man ein neues Adressierungsmuster: Man benutzt den Rechner, auf dem der Nutzer meistens anzutreffen ist, und seinen Login-Namen auf diesem als E-Mail-Adresse. Als Trenner fungiert das @-Zeichen.

Für's Verschicken und Empfangen sind zwei unterschiedliche Protokolle zuständig, beide in der Anwendungsschicht angesiedelt (siehe dazu [*]): SMTP zum Versenden und POP3 ([*]) zum Empfangen von Mails.

Grundlegendes

E-Mails wandern bei SMTP i.A. über viele Server ehe sie ihr Ziel erreichen (siehe Schema

Figure 10: Eine Mail wird von vielen Servern weitergeleitet
\includegraphics[scale=0.6]{.cached/05332a699f88a40b736d63cf4bee3599.eps}
[*]). Dies kommt noch aus der Zeit der vielen Mailboxnetze, wo viele Internetverbindungen nicht permanent aktiv waren und so häufig andere Routen für die Mail-Übertragung genommen werden mussten.

SMTP, definiert in RFC17 876, ist ein sehr einfaches, ASCII18-basiertes Protokoll, das heißt, auch Menschen können zum Beispiel mit dem telnet-Befehl das Protokoll nutzen.

Idee

Damit jeder Server weiß, wohin er eine eingegangene Mail weiterleiten soll, muss dieser in den sogenannten Envelope-Header schauen.

Dieser Header hat noch nichts mit der Mail selbst zu tun! Der Server interessiert sich nicht für den Mail-Header, nur der Envelope-Header ist entscheidend für das Ziel der Mail.

Dies ist vergleichbar mit "`traditioneller"' Post: Der Briefträger schaut nur auf den Umschlag, nicht aber in den Brief. Somit kann in dem Brief eine ganz anderer Empfänger angegeben sein, ohne das irgendjemand davon erfährt19 (siehe Abbildung

Figure 11: Unterschied zwischen Envelope- und Mail-Header)
\includegraphics[scale=0.6]{.cached/7d7403a427f753ec272a9926bb891ef7.eps}
[*].

Typischer Ablauf

Nun zu etwas praktischeren: Wir werden eine Mail, die foo@A geschrieben hat, an bar@B weiterleiten. Dabei spielen wir Rechner A.

Also verbinden wir uns zuerst mit Port 25 von Rechner B (siehe Abbildung

Figure 12: Schematische Darstellung einer Mail-Übertragung von Server A zu B
\includegraphics[scale=0.6]{.cached/2b9d7f4b45fd26d7e5f0e8bb432407df.eps}
[*]).

Dann authorisiert sich A bei B mit dem Kommando HELO20:

>HELO A
<250 B Hello A [foo.bar.com.org], pleased to meet you
Die 250 am Anfang der Antwort stellt dabei den Statuscode dar. 250 bedeutet dabei "`alles in Ordnung"', wie man an der englischen Antwort daneben auch erkennen kann.

Als nächstes erwartet B den Absender der E-Mail, und zwar den Envelope-Sender.

>MAIL FROM: <foo@A>
<250 2.1.0 <foo@A>... Sender ok

Damit B weiß, an wen er die Mail zustellen soll, kommt jetzt das Kommando RCPT21:

>RCPT TO: <bar@B>
<250 2.1.5 <bar@B>... Recipient ok
Dieser Befehl kann auch mehrmals angewendet werden, um eine identische Mail an viele Empfänger zu schicken. Dies machen Spammer leider auch...

Nun erst wird mit der Übertragung der eigentlichen Mail begonnen:

>DATA
<354 Enter mail, end with "." on a line by itself
>From: Mister Foo <foo@A>
>To: Bar Com <bar@B>
>Subject: foobar
>
>blabla...
>.
<250 2.0.0 h6EIf8O08948 Message accepted for delivery
Ab dem eingegebenen DATA kommt die eigentliche Mail (siehe Schema
Figure 13: Header und Body einer Mail
\includegraphics[scale=0.6]{.cached/72c601dcfab1ff30ba066a9e4227c8ce.eps}
[*]), im gleichen Format wie schon im vorhergehenden Kapitel erläutert. Diese Mail-Header können hier beliebig gesetzt werden, ohne dass das irgendeine Software überprüft.

Theoretisch kann der Mail-Header sogar fehlen; Die Mail kommt trotzdem an, dafür sorgt ja der Envelope-Header.

Zum Schluss muss die Sitzung noch geschlossen werden:

>QUIT
<221 2.0.0 B closing connection

Beispiel

Um also eine E-Mail an iblech@web.de im Namen von billg@gates.gat22 zu schicken, verbindet man sich einfach mit einem Open Relay23 oder direkt mit dem SMTP-Server vom Empfänger (siehe das Kapitel über DNS [*], oder gleich den Abschnitt über MX-Records [*]) auf Port 25 (zum Beispiel via telnet).

Bei der Eingabe des Envelope-Senders ist allerdings zu beachten, dass viele Mailserver die Syntax jenes Absenders überprüfen. Als Envelope-Sender ginge also zum Beispiel hallo@-@dd nicht durch. Deswegen verwendet man immer eine gültig aussehende E-Mail-Adresse als Envelope-Header. Welcher Absender in der Mail selbst dann steht, ist, wie schon erwähnt, vollkommen egal.

Also gibt man ein:

>EHLO localhost
>MAIL FROM: <koennte_existieren@realer_host.com>
>RCPT TO: <iblech@web.de>
>DATA
>From: The Imperor <billg@gates.gat> ¤¢
>To: You! Yes, you! <html>
>Subject: Hmm...
> 
>muhahahaha...
>.
>QUIT

Übersicht aller Befehle

Befehl Wirkung
HELO hostname Authentifizierung, alt
EHLO hostname Authentifizierung, neu
MAIL FROM: <e@m> Envelope-Sender
RCPT TO: <m@e> Envelope-Empfänger
DATA Beginn der Mail
. Ende der Mail
QUIT Terminieren der Verbindung

Abschluss

Wer dieses Kapitel aufmerksam gelesen hat, weiß jetzt,



Footnotes

... SMTP15
Send Mail Transport Protocol
... Internet16
bzw. damals noch ARPAnet
... RFC17
Request for Comments
... ASCII18
American Standard Charset, Version 2
... erfährt19
korrupte Postboten mal abgesehen... ;-)
...HELO20
Tatsächlich wird man meistens EHLO verwenden. EHLO ist das HELO von ESMTP (Extended SMTP).
... RCPT21
Recipient
...billg@gates.gat22
Diese Adresse gibt es (zumindest bei der ICANN) nicht; da diese aber nur im Mail-Header (und nicht im Envelope-Header, der vielleicht auf syntaktische Korrektheit hin überprüft wird) zu finden sein wird, ist dies egal.
... Relay23
Ein Open-Relay ist ein SMTP-Server, der jede Mail annimmt und dann entsprechend weiterleitet. Solche Open-Relays waren früher sehr beliebt und legitim, da ein Internetzugang noch sehr viel gekostet hat und so jemand anderes die Mails weiter verschickt hat (zum Beispiel ein Server einer Universität)

Hosted at Sorceforge.net next up previous contents
Next: POP3 Up: Hitchhiker's Guide to the Previous: E-Mails   Contents
Ingo Blechschmidt 2003-08-07