IT-Academy Logo
Sign Up Login Help
Home - Netzwerke - Protokolle - Das SMTP-Protokoll



Das SMTP-Protokoll

Beschreibung des Modells und der Funktionsweise des SMTP-Protokolls. Außerdem werden die wichtigsten Befehle zum Versand einer E-Mail über telnet und SMTP vorgestellt.


Autor: Tobias Surmann (incsoft)
Datum: 15-08-2003, 21:31:44
Referenzen: s. Abschnitt Internetadressen und Quellen
Schwierigkeit: Profis
Ansichten: 20697x
Rating: 9.67 (6x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

SMTP ist die Abkürzung für Simple Mail Transfer Protocol und ist ein Protokoll, um E-Mails zu verschicken. Ich werde Ihnen in diesem Artikel das dem SMTP-Protokoll zugrunde liegende Modell, die Funktionsweise und die wichtigsten Befehle zum Versand einer E-Mail nach RFC 821 vorstellen.

Das Modell




Funktionsweise

Das SMTP-Design basiert auf dem im folgenden beschriebenen Kommunikationsmodell. Der SMTP-Client (also meistens das E-Mail Programm des Users, der eine E-Mail verschicken möchte) schickt eine Anfrage an den SMTP-Server der daraufhin einen Zweiwege Übertragungskanal zum SMTP-Client einrichtet. Der SMTP-Server muss dabei nicht der SMTP-Server des Mailempfängers sein, es kann auch ein zwischengeschalteter Server sein (und das ist heutzutage in den allermeisten Fällen so). Der SMTP-Server fungiert bei letzterem also nur als Vermittler.

Der SMTP-Client erzeugt dann die nötigen SMTP-Befehle, die an den SMTP-Server gesendet werden. Als Antwort auf die Befehle des SMTP-Clients werden immer Statusmeldungen (z.B. +OK, wenn der Befehl akzeptiert wurde) vom Server an den Client zurückgesendet. Zum Beispiel sendet der SMTP-Client den Befehl MAIL an den Server sobald ein Übertragungskanal eingerichtet worden ist. Als Antwort erhält er dann ein +OK vom Server, wenn dieser in der Lage ist die Anfrage zu bearbeiten, d.h. E-Mails zu verschicken. Sobald dies geschehen ist wird über das Kommando RCPT der Empfänger der E-Mail an den SMTP-Server gesendet. Falls der Server diese E-Mail nicht zustellen kann, erhält der Client eine entsprechende Fehlermeldung und kann versuchen eine neue gültige Empfängeradresse zu senden.

Ist dieser Schritt abgeschlossen, können die eigentlichen Daten (Header und Nachrichtentext) gesendet werden, was wiederum über einen entsprechenden SMTP-Befehl geschieht. Das Ende der E-Mail wird über eine vom Protokoll festgelegte Sequenz angezeigt.

Danach verarbeitet der SMTP-Server die E-Mail und falls er sie an den oder die Empfänger erfolgreich versenden konnte, schickt er als Antwort wieder ein +OK an den Client zurück.

SMTP-Befehle

Im folgenden werde ich auf die wichtigsten Befehle zum Versenden einer E-Mail mit Hilfe von SMTP eingehen. Um die Schritte am eigenen Computer nachvollziehen zu können, öffnen Sie die MS-DOS-Eingabeaufforderung (über Start | Ausführen | "cmd" unter Windows XP oder Start | Programme | Zubehör | Eingabeaufforderung). Führen Sie dann das Programm telnet aus, um auf den SMTP-Server zuzugreifen.

Wahrscheinlich müssen Sie sich aber vorher noch per SMTP-after-POP bei Ihrem Provider authentifizieren. Dazu rufen Sie entweder über das Web-Interface ihre E-Mails ab oder Sie geben die folgenden Befehle ein, auf die ich aber im einzelnen nicht weiter eingehen werde. C steht für den Text den Sie auf der Konsole tippen müssen (C wie Client) und S für die Antwort des Servers. Kommentare stehen zwischen zwei Rauten (#). Die spitzen Klammern müssen nicht mit eingegeben werden und dienen nur zur Verdeutlichung von Platzhaltern (doppelte spitze Klammern müssen aber als ein Klammernpaar eingegeben werden!).

C: telnet <POP-Server Adresse><POP-Server Port> #Beispiel: telnet pop.web.de 110#
S: +OK WEB.DE POP3-Server
C: USER <Benutzername> #Der Benutzername ist meist Ihre E-Mail Adresse#
S: +OK Bitte Kennwort eingeben/enter password
C: PASS <Ihr Passwort> #Achtung! Das Passwort wird im Klartext auf dem Bildschirm angezeigt!#
S: +OK Postfach bereit/mailbox locked and ready
C: LIST
S: <Eine Liste der E-Mails> #Es werden nur E-Mail MsgIDs und die Größe
der jeweiligen E-Mail in Byte angezeigt# C: QUIT S: +OK
Die Serverantworten können je nach SMTP-Server und Mailprovider variieren. Sie haben jetzt für eine bestimmte, vom Mailprovider festgelegte Zeitspanne die Gelegenheit, über den SMTP-Server des gleichen Anbieters E-Mails zu verschicken.

Stellen Sie nun wieder über telnet eine Verbindung zu Ihrem SMTP-Server her. Bei web.de ist dies smtp.web.de. Der Port ist bei SMTP-Servern meist 25.

C: telnet <SMTP-Server Adresse> <SMTP-Server Port> #Beispiel: telnet smtp.web.de 25#
S: 220 smtp.web.de ESMTP WEB.DE V4.99#433 <Datum> <Uhrzeit>
SMTP-Server "begrüßen"

Um die Verbindung zu Initialisieren begrüßen Sie den SMTP-Server mit einem freundlichen HELO. Der Befehl erwartet einen Parameter, der der Name des SMTP-Servers ist.

C: HELO <SMTP-Server Adresse> #Beispiel: HELO smtp.web.de#
S: 250 <SMTP-Server Adresse> Hello <Ihre IP>
Absender festlegen

Eine neue E-Mail beginnt immer mit dem Befehl MAIL. Da Sie meistens gleichzeitig den Absender festlegen möchten, können Sie dies über MAIL FROM tun.

C: MAIL FROM: <Ihre E-Mail Adresse>
S: 250 <<Ihre E-Mail Adresse>> is syntactically correct
Empfänger festlegen

Sie können einen oder mehrere Empfänger über das Kommando RCPT TO spezifizieren. Geben Sie für mehrere Empfänger einfach das Kommando mehrere Male hintereinander ein.

C: RCPT TO: <Empfänger E-Mail Adresse> #mehrere Male für mehrere Empfänger#
S: 250 <<Empfänger E-Mail Adresse>> verified
Header der E-Mail

Der Header der E-Mail muss mehrere Teilbereiche umfassen. Zum einen muss hier noch mal der Absender und der Empfänger angegeben werden (hierbei können auch wie in vielen E-Mail Programmen üblich Namen vor die E-Mail Adresse gesetzt werden. Die eigentliche E-Mail Adresse muss dann in spitzen Klammern geschrieben werden). Zum anderen muss natürlich auch noch der Betreff und die Versandzeit angegeben werden.

C: DATA 
S: 354 Enter message, ending with "." on a line by itself
C: To: <Beliebiger Name für den Empfänger> <<Empfänger E-Mail Adresse>>
C: From: <Beliebiger Name für den Absender> <<Absender E-Mail Adresse>>
C: Date: <Versandzeit>
C: Subject: <Betreff>
Der einzig schwierige Part beim Festlegen des Headers ist die Angabe des Versandzeitpunkts. Dieser muss in einem ganz bestimmten Format vorliegen. Am besten gebe ich mal ein Beispiel:

Fri, 08 Aug 2003 20:57:47 +0001
In diesem Format wird der 8. August 2003 (ein Freitag), Uhrzeit 20:57:47 als Versandzeitpunkt angegeben (Hinweis: die meisten Provider halten sich nicht daran, sondern verschicken die E-Mail sofort!). Der Zusatz +0001 weist auf die Zeitzone GMT+01:00 (Berlin, Amsterdam, Bern, Rom, Stockholm, Wien) hin.

Nachrichtentext

Nachdem Sie den Header der E-Mail definiert haben, schließt sich sofort der Nachrichtentext an, d.h. Sie erhalten bis zu diesem Zeitpunkt keine Rückmeldung vom SMTP-Server über die Korrektheit der gemachten Angaben. Der Nachrichtentext wird mit der Sequenz "." Auf einer einzelnen Zeile abgeschlossen. Wenn Sie trotzdem einen Punkt auf eine Zeile schreiben wollen, so müssen Sie zwei Punkte ".." hintereinander angeben. Der SMTP-Server leitet danach sofort alle Maßnahmen ein, um die E-Mail an Ihren Bestimmungsort zu bringen.

C: <Nachrichtentext>
C: .
S: 250 OK id=<eine vom Server generierte ID für diese E-Mail>
Verbindung trennen

Sie können die Verbindung zum SMTP-Server über den Befehl QUIT trennen.

C: QUIT
S: 221 smtp.web.de closing connection
Hinweise

Tatsächlich kann es vorkommen, dass mal ein Kommando vom Server nicht sofort angenommen wird. Da müssen Sie dann einfach hartnäckig bleiben und das Kommando einfach noch mal senden (so würde es ein E-Mail Programm auch machen), bis Sie ein +OK (Statuscode 250) erhalten.
Wenn Sie zu lange mit der Eingabe des nächsten Kommandos warten, wird der Server die Verbindung von alleine trennen. Möchten Sie dies vermeiden, so senden Sie den Befehl NOOP (der Server sendet ein einfaches +OK zurück), um die Verbindung weiter aufrecht zu erhalten.

Internetadressen und Quellen

Simple Mail Transfer Protocol RFC 821 von August 1982
Simple Mail Transfer Protocol RFC 2821 von April 2001
SMTP Service Extension for Authentification RFC 2554 von März 1999
SMTP Error Codes RFC 1123
Enhanced Status Codes for SMTP RFC 1893
Enhanced Status Codes for SMTP RFC 2034


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0