SMTP – Simple Mail Transfer Protokoll Bielefeld, den 23.01.2004

Werbung
SMTP – Simple Mail Transfer Protokoll
Bielefeld, den 23.01.2004
Handout zu
Internet-Protokolle – SMTP
Christoph Weitkamp & Michael Johannfunke
[email protected]
[email protected]
Beispiel E-Mail
Kurze Geschichte der E-Mail
Erstmals wurde 1971 eine E-Mail von Ray Tomlinson bei der amerikanischen Firma Bolt Beranek and Newman (BBN) entwickelt,
bzw. an einen zweiten Rechner im damaligen ARPANet verschickt.
Der sogenannte Vorläufer war das Programm SNDMSG von Tomlinson, welches aber nur lokal am Computer ermöglichte den
anderen Nutzern eine Nachricht zu hinterlassen.
Er experimentierte auch mit dem Datenübertragungsprotokoll CYPNet und verband sein Programm SNDMSG und ermöglichte
eine Übertragung von Nachrichten zwischen mehreren Rechnern.
In diesem Zusammenhang wählte Tomlinson das @, um damit zwischen Nachrichten zu unterscheiden, die an Benutzer desselben
Rechners, und solchen, die an Benutzer entfernter Rechner gerichtet waren. Er verwandte das @, um damit zu markieren, dass der
Empfänger sich an oder bei (Engl.: "at") einem anderen Host und nicht an dem lokalen Rechner befindet.
Die Definition von E-Mail und dem SMTP Protokoll ist nachzulesen im RFC 881.
Aufbau einer E-Mail
Die E-Mail Adresse besteht aus drei Teilen ([email protected])
Der localpart gibt den Benutzernamen an, das @ Zeichen kennzeichnet den Host und der Host kennzeichnet den Rechner, bzw die
Zieladresse im Internet, dass kann z.B. Web.de oder GMX sein.
Die E-Mail an sich besteht aus drei Teilen (Envelope, Header und den Body).
Der Envelope entsteht aus den nötigsten Daten zum Versand an den Empfänger. Er wird auch nur von den MTA's benutzt zum
Versand und weiterleiten, also das Auslesen des Empfängers oder zur Fehlergenerierung, falls die E-Mail unzustellbar ist.
Der Header besteht aus allen relevanten und weiteren Daten für Versand und Empfang. In ihm werden z.B. Datum, Empfänger,
Absender, usw. eingetragen.
Der Body stellt den eigentlichen Inhalt dar, also den Teil den der Versender schreibt und den der Empfänger über sein
Mailprogramm liest.
Wichtige Header-Elemente
To:
Cc:
Bcc:
From:
Sender:
Received:
Subject:
Weitere Header-Elemente
Date:
Reply-To:
Message-Id:
In-Reply-To:
References:
Keywords:
Return-Path:
E-Mail Adressen der primären Empfänger
E-Mail Adressen der sekundären Empfänger
E-Mail Adressen für blinde Kopien an Dritte
Absender der Nachricht
eigentlicher Absender, falls Abweichen vom erstgenannten
Zeile, die von jedem MTA auf der Route eingefügt wird
Kurzer einzeiliger Betreff der Nachricht
Datum und Uhrzeit, wann die Nachricht gesendet wurde
E-Mail Adresse an die Anwtworten gesendet werden sollen
Eindeutige Identifizierung der Nachricht
Kennung der Nachricht der diese Antwort gilt
Andere relevante Nachrichtenkennungen
Vom Benutzer gewählte Schlüsselwörter
Kann benutzt werden, um einen beliebigen Pfad
zurück zum Sender zu bezeichnen
Beispiel für einen Header
>
>
>
>
>
Received: by xyz.de. id AA00502; Mon, 19 Nov 2001 12:47:32 +0100
Received: from adam1 (715684625313-0001@[192.168.80.201]) by fwd00.xyz.de
with smtp id 166Cyz-1KXYRsC; Tue, 20 Nov 2001 16:38:45 +0100
From: [email protected] (Adam)
To: [email protected] (Eva)
Internet-Protokolle
1-4
WS 03/04
SMTP – Simple Mail Transfer Protokoll
>
>
>
>
>
>
>
>
Bielefeld, den 23.01.2004
Subject: Beispiel-Mail
Date: Mon, 19 Nov 2001 12:47:31 +0100
Reply-To: [email protected]
Message-ID: <[email protected]>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
United Gizmo
180 Main St
Boston, MA 02120
Header
Mr. Daniel Dummkopf
18 Willow Lane
White Plains, NY 10604
Umschlag
Briefvergleich
From: United Gizmo
Address: 180 Main St
Location: Boston, MA 02120
Date: Jan. 30, 2004
Subject: Invoice 1081
Body
Subject: Invoice 1081
Dear Mr. Dummkopf,
Our computer records
show that you still have
not paid the above invoice
of $0,00. Please send us a
check for $0,00 promptly.
Name: Mr. Daniel Dummkopf
Street: 18 Willow Lane
State: NY
Zip code: 10604
Priority Urgent
Encryption: None
Dear Mr. Dummkopf,
Our computer records
show that you still have
not paid the above invoice
of $0,00. Please send us a
check for $0,00 promptly.
Yours truely
United Gizmo
Yours truely
United Gizmo
Weg der E-Mail
User
user atata a
terminal
terminal
user
agent
queue of mail
to be sent
sender
message
message
transfer
transfer
agent
agent
TCP connection
TCP Port 25
user at a
terminal
user
agent
user
mailboxes
message
transfer
agent
receiver
User Agent
Der User Agent ist die Schnittstelle zwischen Mensch und der E-Mail. Er ermöglicht das E-Mail lesen, editieren, verwalten,
empfangen und versenden. Bekannte Programme hierfür sind z.B. Outlook, Mozilla, KMail, Pegasus Mail oder Eudora.
MTA Message Transfer Agent
Der MTA ist ein im Hintergrund agierendes Programm welches die E-Mails vom User Agent annimmt und sie weiterleitet bis zum
Empfänger.
Das SMTP Protokoll tritt hier in Kraft und wird vom MTA zur Weiterleitung und Zustellung der Mail benutzt. Weiteres hierzu
haben wir vorher schon gesehen. Sendmail ist das am meisten verbreitete Programm welches den MTA darsstellt und mit dem
SMTP Protokoll arbeitet.
Internet-Protokolle
2-4
WS 03/04
SMTP – Simple Mail Transfer Protokoll
Bielefeld, den 23.01.2004
SMTP Simple Mail Transfer Protocoll
Geschichte des SMTP
Um 1982 machte sich Jonathan B. Postel mit ein paar anderen Leuten in einer Network Group an der University of Southern
California Gedanken über einen Weg mehr Textmitteilungen über das Internet zu verschicken. und dafür ein allgemeines,
einfaches Protokoll zu entwerfen. Im August des Jahres war es dann so weit. Die Geburtsstunde von Simple Mail Transfer
Protocol (RFC 821). Bis heute wurde dieses simple Verfahren sehr publik gemacht und es ist immer noch das häufigst gebrauchte
Mail Protokoll. Ca. die Hälfte des Traffics im Internet wird durch E-Mails verursacht. Doch es brauchte auch immer weitere
Erneuerungen, da es ja der Weiterentwicklung des WWW standhalten musste.
Durch SMTP wurde ein sehr kompliziertes und kolplexes E-Mail Protokoll vom Markt verdrängt, was bis heute vollständig in
Vergessenheit geraten ist. X400 entwickelt von IBM. Doch durch die vielen Weiterentwicklungen und Sicherheitsvorkehrungen ist
SMTP auf dem besten Wege dahin bald ebenso komplex zu sein.
Die aktuellste SMTP Version (RFC 2821) umfasst sehr viele Seiten und beinhaltet alle Erweiterungen bis dahin. Sie wurde bis
zum April 2001 von J. Klensin unter demselbigen Codenamen entwickelt.
Eigenschaften
Die mit SMTP versendeten E-mails unterliegen den Standard for the format of ARPA Internet Textmessages. Es baut den header,
den envelope und den eigentlichen Textteil aus NVT ASCII Code auf, der aus 7bit besteht, aber in 8bit verpackt versendet wird.
Das 8te bit wird auf 0 gesetzt. SMTP kommuniziert mittels TCP über den bekannten Port 25.
Funktionweise
Punkt-zu-Punkt Auslieferung
Punkt-zu-Punkt Auslieferung
User
File
System
Client
SMTP
Commands/Replies
and Mail
Server
File
System
Die Übermittlung von Nachrichten funktioniert folgendermassen: Ein Client kommuniziert mit einem Server indem ein Kommando
gesendet wird und der Empfängert dieses mit einem 3-stelligem Code und ggf. mit einem String zur besseren Lesbarkeit bestätigt.
Eine E-Mail setzt sich so durch Punkt-zu-Punkt Ausliefrung durch das gesammte Netz fort und verweilt auch dort, wenn der
passende Empfänger nicht zu erreichen ist. Diesen Ablauf nennt man Store-And-Forward.
Befehle
Es gibt 5 Grundbefehle, die für eine SMTP Session notwendig sind:
HELO:
Mit diesem Befehl meldet sich der Client beim Server an und gibt seinen Namen (IP Adresse) bekannt.
MAIL FROM:
Durch diesen Befehl wird die Absender Adresse festgelegt. Es spielt keine Rolle, ob die Adresse auf dem
sendendem Client bekannt ist oder nicht. (Dies wird bei SPAM gnadenlos ausgenutzt)
RCTP TO:
Dieser Befehl legt die Empfänger Adresse fest.
DATA:
Mittels DATA beginnt die eigentliche Textnachricht, welche meistens durch einen einzelnen Punkt in einer
eigenen Zeile beendet wird.
QUIT:
QUIT ist zur Beendung der SMTP Session.
Die nächsten Befehle sind auch nützlich:
HELP:
Ruft die Hilfe auf, oder Informationen über einen anderen angegebenen Befehl.
VRFY:
Mit diesem Befehl kann man herausfinden, welcher User sich hinter einer E-mail Adresse verbirgt, bzw welche
Adresse zu welchem User gehört.
RSET:
Durch diesen Befehl wird eine laufende SMTP Verbindung zurückgesetzt. Alle eingegebenen Daten, also
Adressen und Nachricht, werden gelöscht.
EXPN:
Man kann mit diesem Befehl eine E-mail Adresse an eine Mailingliste anhängen.
NOOP:
Dorch diesen Befehl kann man von seinem Gesprächspartner ein O.K. Anfordern.
TURN:
Dieser Befehl war dafür vorgesehen, um in einer laufenden SMTP Sitzung Sender und Empfänger zu
vertauschen, ohne die Verbindung trennen zu müssen. Wird heutzutage aber nicht mehr benutzt.
Internet-Protokolle
3-4
WS 03/04
SMTP – Simple Mail Transfer Protokoll
Bielefeld, den 23.01.2004
Rückmeldecodes
Die Tabelle spricht für sich selber.
Code
200
211
214
220
221
250
251
252
354
421
450
500
501
502
503
504
550
551
553
554
Bedeutung
O.K. Rückmeldung
System Status oder Hilferückmeldung
Hilfe
<domain> Service bereit
<domain> Service schließt Kommunikationskanal
Kommando zulässig, Eingabe akzeptiert
User nicht lokal, Weiterleitung aktiviert
User nicht zu ermitteln
Email Eingabe beginnen
<domain> Service nicht erreichbar
Mailboxname nicht erreichbar
Syntaxfehler, Befehl nicht akzeptiert
Syntaxfehler in den Parametern oder Argumenten
Befehl nicht implementiert
Reihenfolge der Eingabe ist unbekannt
Befehlsparameter nicht akzeptabel
Mailbox nicht vorhanden
User nicht lokal
Mailboxname nicht erlaubt
Transaktion gescheitert
ESMTP
Das extended SMTP ist eine Erweiterung des SMTP. Es ermöglicht den Gebrauch von 8bit ASCII Code und somit auch mehr
Zeichen in der Nachricht. Für die Anmeldung zu einer ESMTP Sitzung wurde der neue Befehl EHLO implementiert. Der Internet
Standard wird im RFC 1435 festgehalten und wurde von J. Klensin entwickelt und im Februar 1998 veröffentlicht.
Beispiel
Jeder kann über eine telnet Verbindung manuell eine SMTP Sitzung durchführen und so eine E-Mail verschicken.
Internet-Protokolle
4-4
WS 03/04
Herunterladen