SMTP Simple Mail Transfer Protocol Autor: Prof. Dr.-Ing. Anatol Badach Auszug aus dem Werk: Herausgeber: Heinz Schulte WEKA-Verlag ISBN 978-3824540662 Eine der wichtigsten Anwendungen des Internets ist die Übermittlung von Nachrichten. Man spricht in diesem Zusammenhang von elektronischer Post bzw. vom E-Mail-Dienst. Die Übermittlung von E-Mails kann als Nachbildung des Transports von Briefen also der normalen Post angesehen werden. Die Funktion einer Poststelle beim E-Mail-Dienst übernimmt ein E-Mail-Server. Ebenso wie ein normaler Brief, der zuerst vom Absender bei einer Poststelle abgegeben und danach zur Poststelle des Empfängers transportiert wird, wird eine E-Mail zuerst vom Rechner des Absenders an einen E- Mail-Server im Internet übergeben und danach an den E-Mail- Server des Empfängers übermittelt. Dem E-Mail-Dienst im Internet liegt das Kommunikationsprotokoll SMTP zugrunde. Es beschreibt die Prinzipien, nach denen eine E- Mail vom Rechner des Absenders an den E-Mail-Server in dessen Internetdomain übergeben und danach an den E-Mail-Server in der Internetdomain des Empfängers übermittelt wird (Bild 004515). Hervorzuheben ist aber, dass SMTP nur die Prinzipien der Übermittlung von E-Mails im Internet beschreibt folglich ein reines Transportprotokoll für E-Mails ist. Die Formate und die Strukturen von E- Mails werden in anderen Internetstandards u.a. im RFC 5322 festgelegt. Nachdem ein Brief die Poststelle seines Empfängers erreicht hat, wird er diesem normalerweise durch einen Briefträger zugestellt. Wurde aber eine E-Mail mithilfe von SMTP dem E-Mail-Server eines Empfängers zugesandt, dann wird sie in der Regel mithilfe des Post Office Protocol (POP) bzw. des Internet Message Access Protocol (IMAP) vom Rechner des Empfängers abgerufen (abgeholt). Eine E-Mail kann aber auch vom E-Mail-Server dem Rechner eines Empfängers zugestellt werden. Beim E-Mail-Dienst ersetzen somit die Protokolle POP3 und IMAP4 die Rolle eines Briefträgers. Diese beiden Protokolle bilden zusammen mit dem SMTP eine Protokollfamilie, auf der die heutigen E-Mail-Dienste im Internet basieren. Die grundlegenden Ideen, die im SMTP enthalten sind, stammen bereits aus den Siebzigerjahren und zwar aus den ersten in 1971 von 1
Raymond (Ray) Samuel Tomlinson zur Übermittlung von E-Mails in ARPANET (Advanced Research Projects Agency Network) entwickelten Programmen SNDMSG (Send Message) und READMAIL. Die erste Version von SMTP wurde 1982 als RFC 821 veröffentlicht; sie hat sich bewährt und über eine lange Zeit gehalten. Erst 2001 wurde unter Berücksichtigung zwischenzeitlich gewonnener Erkenntnisse sowie veröffentlichter Erweiterungen von SMTP die nächste Version dieses Protokolls im RFC 2821 spezifiziert. Die heute aktuelle Version von SMTP wurde 2008 als RFC 5321 veröffentlicht. Seit seiner Spezifikation im RFC 821 wurden in mehreren RFCs verschiedene Erweiterungen sog. Extensions von SMTP veröffentlicht. Der RFC 1869 (1995) beschreibt, wie eine erweiterte Funktionalität von SMTP realisiert werden kann. In diesem Zusammenhang spricht man auch von Extended SMTP (ESMTP). Protokolle zur Übermittlung von E-Mails Bild 004515 illustriert das E-Mail-Konzept im Internet und zeigt insbesondere, welche Systemkomponenten und Protokolle bei der Übermittlung einer E-Mail im gezeigten Beispiel von den Protagonisten Alice an Bob beteiligt sind. Wie hier ersichtlich ist, setzt das E-Mail-Konzept im Internet voraus, dass in jeder der beiden Internetdomains, in diesem Fall abc.de und xyz.de, ein spezieller Server ein sog. E-Mail-Server eingerichtet wird. Den E-Mail- Server könnte man mit einer Poststelle innerhalb eines Postleitzahlgebietes vergleichen. Folglich würde eine Internetdomain einem Postleitzahlgebiet beim Briefdienst entsprechen. Bild 004515: Übermittlung einer E-Mail notwendige Protokolle SMTP wird verwendet, um eine E-Mail vom Rechner des Absenders an den E-Mail-Server in dessen Domain zu übergeben. Diese Phase der E-Mail-Übermittlung bezeichnet man in Internetstandards als 2
Message Submission. SMTP dient auch als Protokoll für den E-Mail- Transfer zwischen E-Mail-Servern also de facto zwischen Poststellen im Internet. Hat eine E-Mail den E-Mail-Server in der Domain des Empfängers erreicht, wird sie in der Mailbox des Empfängers wie in einem Postfach zwischengespeichert. Liegt auf dem E-Mail-Server in der Mailbox eines Empfängers eine neue E-Mail vor, so kann der Rechner des Empfängers diese selbstständig herunterladen bzw. sie wird ihm seitens des E-Mail-Servers zugestellt so wie beim Postdienst ein Brief durch einen Briefträger. Auf diesem letzten Übermittlungsabschnitt wird die Funktion Postabholung bzw. Postzulieferung benötigt. Für die Realisierung dieser Funktion wird ein anderes Protokoll verwendet nämlich wie bereits erwähnt entweder POP oder IMAP. Die aktuelle Version von POP ist die Version 3 (POP3) und von IMAP die Version 4 (IMAP4). Modell einer E-Mail-Kommunikation Bild 004516 zeigt das allgemeine Modell einer E-Mail- Kommunikation und bringt zum Ausdruck, welche Funktionskomponenten in Rechnern von Benutzern und in E-Mail-Servern an der Übermittlung einer E-Mail beteiligt sind. Bild 004516: Allgemeines Modell der E-Mail-Kommunikation Für die E-Mail-Kommunikation enthält jeder Benutzerrechner folgende Funktionskomponenten: 3
einen E-Mail-Editor (z.b. Mozilla Thunderbird, Microsoft Outlook), um E-Mails zu editieren diese also zu erstellen, zu bearbeiten und zu löschen, eine SMTP-Instanz, damit er die erstellten E-Mails an den E- Mail-Server zwecks ihres Versands übermitteln kann, eine POP- oder IMAP-Instanz, damit er empfangene E-Mails aus seinem Postfach im E-Mail-Server abholen kann. Diese Funktionskomponenten in einem Benutzerrechner werden in der Literatur oft als Message User Agent (MUA) 1 bezeichnet. Jeder E-Mail-Server muss dementsprechend Funktionsmodule zur Realisierung von SMTP und der Protokolle POP und IMAP enthalten. Die SMTP-Instanz im E-Mail-Server bezeichnet man auch als Message Transfer Agent (MTA) 2. Die POP/IMAP-Instanz stellt einen Message Delivery Agent (MDA) 3 dar. Nehmen wir an, dass Alice mit der Adresse alice@abc.de mithilfe eines E-Mail-Editors eine E-Mail für Bob mit der Adresse bob@xyz.de also an eine in einer anderen Domain angesiedelte Adresse erstellt hat. Diese kann nun wie durch Bild 004516 zum Ausdruck gebracht übergangsweise, also bevor sie an den E-Mail- Server zwecks ihrer Versendung übertragen wird, im Ausgangspostfach gespeichert werden. Soll die E-Mail abgeschickt werden, dann wird sie von der SMTP-Instanz im Rechner von Alice an den E- Mail-Server zum Versand übergeben. Da die SMTP-Instanz im Rechner von Alice die Übermittlung der E-Mail zum E-Mail-Server initiiert, fungiert sie als SMTP-Client (Bild 004518). Dementsprechend dient die SMTP-Instanz im E-Mail-Server als SMTP-Server. Aus diesem Grund ist SMTP ein Client-Server-Protokoll. Hat der SMTP-Server der Domain von Alice eine E-Mail mit Adresse von Bob also mit bob@xyz.de als Zieladresse empfangen, 1 auch Mail User Agent (MUA) 2 auch Mail Transfer Agent (MTA) 3 auch Mail Delivery Agent (MDA) 4
muss er diese an den SMTP-Server der Domain xyz.de senden. Hierfür ermittelt er zuerst mithilfe des Domain Name System (DNS) die IP 4 -Adresse des SMTP-Servers der Domain xyz.de und sendet die E-Mail daraufhin an diesen. Die dort empfangene E-Mail wird in Bobs Postfach abgespeichert. Der Rechner von Bob kann sie danach mithilfe des Protokolls POP oder IMAP abholen und mittels des E- Mail-Editors auf seinem Bildschirm anzeigen lassen. In diesem Fall fungiert die POP-/IMAP-Instanz im Rechner von Bob als POP- /IMAP-Client und die entsprechende Instanz im SMTP-Server als POP-/IMAP-Server. Anmerkung: Bei der Ermittlung der IP-Adresse des SMTP-Servers auch als E-Mail-Server bezeichnet werden zwei Resource Records (RR) im DNS-Server der Domain xyz.de abgefragt und zwar: zuerst der RR vom Typ MX (Mail exchange) und diese Abfrage liefert den vollständigen Hostnamen des SMTP-Servers z.b. mailserver.xyz.de; danach wird für mailserver.xyz.de der RR vom Typ A (Address) abgefragt und das Ergebnis dieser Abfrage ist die IP-Adresse des SMTP-Servers. Besonderheiten von SMTP Die wichtigsten Besonderheiten bzw. Funktionen von SMTP sind: Client-Server-Prinzip SMTP funktioniert nach dem Client-Server-Prinzip. Als SMTP- Client bezeichnet man die SMTP-Instanz, die eine Übermittlung von E-Mails initiiert und diese daraufhin auch versendet. Eine andere SMTP-Instanz, die deren Kommunikationspartner ist, stellt einen SMTP-Server dar. Der Client sendet Befehle sog. Commands an den Server und dieser antwortet ihm mit Replies. Allgemein gesehen dient eine Reply entweder als Bestätigung auf einen Command oder als Fehlermeldung. Deshalb muss ein SMTP-Server auf jeden Command immer mit einer entsprechenden Reply antworten. Textbasiertes Protokoll SMTP ist ein textbasiertes Protokoll. Alle Commands und 4 Internet Protocol 5
Replies werden zeilenweise als lesbare Zeichenketten so wie ein Text geschrieben. SMTP erfordert, dass jeder Command und jede Reply am Ende mit dem Zeichen CRLF (Carriage Return and Line Feed) abgeschlossen werden, was dem Drücken der Taste ENTER entspricht. Aus diesem Grund darf im Text das Zeichen CRLF innerhalb keiner Zeile vorkommen. Schreibweise von Commands Zur Spezifikation von Commands verwendet man eine aus vier Großbuchstaben bestehende Kombination den sog. Command Code wie z.b. EHLO, MAIL, DATA. Nach einem Command Code können Parameter angegeben werden. Jeder Command hat im Allgemeinen folgende Struktur: <Command-Code> <Parameters> <CRLF> Beispiel: EHLO mailserver.abc.de SMTP over TCP SMTP verwendet das Transmission Control Protocol (TCP), ein verbindungsorientiertes Transportprotokoll. Der Well Known Port (WKP) von SMTP over TCP ist 25. SMTP over TLS oder SMTP over SSL Um eine gesicherte Übermittlung von E-Mails zu garantieren, kann SMTP die Sicherheitsprotokolle 5 Transport Layer Security (TLS) oder Secure Socket Layer (SSL) nutzen. Man spricht in diesem Fall von SMTP over TLS oder von SMTP Secure (SMTPS). 6 Der WKP von SMTPS ist 465. Ausnahmsweise wird bei der Message Submission nach RFC 4409 der Port 587 als WKP verwendet. 5 Es sei hervorgehoben, dass das Sicherheitsprotokoll SSL bzw. TLS im Schichtenmodell eine Schicht zwischen SMTP und TCP bildet. 6 Die Version 1.0 von TLS im RFC 2246 (1999) dargestellt entspricht weitgehend der Version 3.0 des von der Firma Netscape entwickelten Sicherheitsprotokolls SSL. 6
Erweiterungen von SMTP SMTP-Extensions Um die eigentliche Spezifikation von SMTP übersichtlich zu halten, wurden und werden die Erweiterung des Protokolls die sog. Extensions in getrennten RFCs spezifiziert. Eine Extension kann auch als eine zusätzliche SMTP-Funktion angesehen werden. Jede Extension hat einen Namen, damit beide kommunizierenden SMTP-Instanzen also Client und Server sich gegenseitig mitteilen können, welche Erweiterungen sie unterstützen. Auf diese Art und Weise können sie sich auf einen gemeinsamen Funktionsumfang von SMTP einigen. Bedeutung von STARTTLS StartTLS Um eine gesicherte Übermittlung von E-Mails zu garantieren, wird in beiden kommunizierenden SMTP-Instanzen oft das Sicherheitsprotokoll TLS verwendet. Mithilfe der Extension STARTTLS kann SMTP over TLS eingesetzt werden. STARTTLS wurde erstmals 1999 im RFC 2487 spezifiziert, a- ber schon im Jahre 2002 durch RFC 3207 ersetzt. SMTP-Commands minimale SMTP-Implementierung Jeder SMTP-Client muss in der Lage sein, einen festgelegten, minimalen Satz von Commands zu bearbeiten und zu versenden. Dies wird als minimale Implementierung bezeichnet. Hierzu gehören die folgenden Commands: HELO Hello Dieser Command im RFC 821 spezifiziert wird vom SMTP- Client gesendet, um sich dem SMTP-Server vorzustellen. Er enthält den vollständigen Namen den sog. Fully Qualified Domain Name (FQDN) des Clients. EHLO Extended Hello Dieser Command im RFC 2821 definiert 7 entspricht dem im RFC 821 spezifizierten Command HELO. Mit EHLO wird de facto HELO ersetzt. 7 Weil RFC 821 durch RFC 2821 ersetzt wurde, wird HELO statt EHLO nur noch von älteren SMTP-Clients versendet. Um weiterhin mit älteren SMTP-Clients kommunizieren zu können, müssen SMTP-Server nach RFC 5321 auch auf HELO antworten. 7
MAIL Initiierung einer Mail-Transaktion Mit diesem Command wird seitens des Clients die Übermittlung von E-Mails eingeleitet. MAIL enthält u.a. die Adresse des E- Mail-Absenders wie z.b. MAIL FROM:<alice@abc.de> RCPT Recipient; Angabe des E-Mail-Empfängers In diesem Command wird dem Server die E-Mail-Adresse des Empfängers übermittelt wie z.b. RCPT TO:<bob@xyz.de> DATA Beginn der Übermittlung einer E-Mail Mit DATA teilt der Client dem Server mit, dass er mit dem Senden einer E-Mail beginnt. RSET Reset; Abbruch einer E-Mail-Transaktion Mit RSET kann der Client den bereits für das Senden einer E- Mail begonnenen SMTP-Verlauf als sog. Mail Transaction abbrechen. Die SMTP-Verbindung bleibt aber weiterhin bestehen (vgl. Bild 004518). RSET enthält keine Parameter. VRFY Verify; Überprüfen der E-Mail-Adresse Mit VRFY fordert der Client den Server auf zu überprüfen, ob die E-Mail-Adresse eines Empfängers gültig ist, und ihm das Ergebnis der Überprüfung zu liefern. NOOP No Operation, Anforderung einer Reply Mit NOOP wird der Server seitens des Clients aufgefordert, eine Reply zu übermitteln. Auf diese Weise kann der Client den Status des Servers überprüfen beispielsweise sehen, ob dieser intakt ist. QUIT Beenden einer SMTP-Verbindung Diese Nachricht wird gesendet, um eine SMTP-Verbindung zu beenden. Jede SMTP-Implementation nach RFC 5321 muss HELO/EHLO, MAIL, RCPT, DATA, RSET, VRFY, NOOP und QUIT unterstützen. Für die Fortsetzung siehe: Fachkompendium Protokolle und Dienste der Informationstechnologie, WEKA-Verlag, ISBN-13: 978-3824540662 8