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.
E-Mails wandern bei SMTP i.A. über viele Server ehe sie ihr Ziel erreichen (siehe Schema
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.
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
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
Dann authorisiert sich A bei B mit dem Kommando HELO
20:
>HELO A <250 B Hello A [foo.bar.com.org], pleased to meet youDie
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 okDieser 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 deliveryAb dem eingegebenen
DATA
kommt die eigentliche Mail (siehe Schema
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
Um also eine E-Mail an iblech@web.de
im Namen von billg@gates.gat
22 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
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 |
Wer dieses Kapitel aufmerksam gelesen hat, weiß jetzt,
HELO
20EHLO
verwenden. EHLO
ist das HELO
von ESMTP
(Extended SMTP).
billg@gates.gat
22