Was ist SMTP?
SMTP ist ein textbasiertes Übertragungsprotokoll, welches zum Austausch elektronischer Post genutzt wird. SMTP wird auf der Anwendungsschicht des TCP/IP-Modells bzw. ISO-OSI-Schichtmodell verwendet. Das SMTP-Protokoll kann lediglich zum Versenden und Weiterleiten von E-Mails verwendet werden, da es sich um ein Push-Protokoll handelt. Zum Abholen von Nachrichten kommen andere, spezialisierte Protokolle wie POP3 oder IMAP zum Einsatz.
Verfahren
Möchte der Sender eine E-Mail versenden, nimmt sein E-Mailprogramm (Mail User Agent) die Verbindung mit dem SMTP-Server (Mail Submission Agent) auf. Von dort wird die E-Mail gegebenenfalls über weitere SMTP-Server (Mail Transfer Agents) an das Ziel übermittelt. Als SMTP-Client können hierbei sowohl das E-Mailprogramm, als auch der SMTP-Server angesehen werden. Der SMTP-Client sendet dem SMTP-Server einen Befehl und der SMTP-Server antwortet mit einem Status-Code. Eine Liste der Befehl und Codes wird im Verlauf des Artikels angegeben.
Ein weit verbreiteter SMTP Server ist Sendmail:
Die wichtigsten SMTP-Befehle
| SMTP-Befehl | Beschreibung |
| HELO(Hello) | HELO startet die SMTP-Sitzung und identifiziert den Client am Server. |
| | MAIL leitet die Mailübertragung ein und liefert gleich die Absender-Adresse mit. |
| RCPT (Recipient) | RCPT gibt die Adresse eines oder mehrere Empfänger an. Dieses Kommando kann deshalb mehrmals ausgeführt werden. |
| DATA | Mit DATA wird die Übermittlung der eigentlichen E-Mail-Nachricht wird mit "CRLF.CRLF" gekennzeichnet. |
| RSET (Reset) | Mit RSET wird die bereits eingeleitete Mailübertragung abgebrochen. Die Verbindung zwischen Client und Server bleibt bestehen. |
| VRTY (Verify) | Mit VRFY kann die Empfänger-Adresse überprüft werden. |
| EXPN (Expand) | Die meisten MTAs behandeln EXPN wie VRFY. |
| NOOP | NOOP bewirkt eine Antwort vom Server. Damit wird die Verbindungstrennung durch einen Timeout verhindert. |
| QUIT | QUIT beendet die Verbindung zum SMTP-Server. Der Server liefert eine letzte Antwort zurück. |
Kategorisierung der Status-Codes
| 1XX | Mailserver hat die Anforderung akzeptiert, ist aber selbst noch nicht tätig geworden. Eine Bestätigungsmeldung ist erforderlich. |
| 2XX | Mailserver hat die Anforderung erfolgreich ohne Fehler ausgeführt. |
| 3XX | Mailserver hat die Anforderung verstanden, benötigt aber zur Verarbeitung weitere Informationen. |
| 4XX | Mailserver hat einen temporären Fehler festgestellt. Wenn die Anforderung ohne jegliche Änderung wiederholt wird, kann die Verarbeitung möglicherweise abgeschlossen werden. |
| 5XX | Mailserver hat einen fatalen Fehler festgestellt. Ihre Anforderung kann nicht verarbeitet werden. |
Beispiel eines Protokolls
| Server: 220 mail.example.com SMTP Foo Mailserver |
Direkt nach dem Verbindungsaufbau über TCP meldet sich der SMTP-Server. |
| Client: HELO mail.example.org |
Der SMTP-Client meldet sich mit seinem Computernamen an. |
| Server: 250 Ok |
Der Server bestätigt den Erhalt und erwartet die Fortführung der Verbindung. |
| Client: MAIL FROM: hans.muster@example.org |
Der Client meldet die Absender-Adresse für den MTA. |
| Server: 250 Ok |
Der Server bestätigt den Erhalt und erwartet die Fortführung der Verbindung. |
| Client: RCPT TO: foo@example.com |
Der Client meldet die Empfänger-Adresse für den MTA. |
| Server: 250 Ok |
Der Server bestätigt den Erhalt und erwartet die Fortführung der Verbindung. |
| Client: DATA |
Mit DATA leitet der Client das Senden der E-Mail ein.
|
| Server: 354 End data with. |
Der Server teilt dem Client mit, dass er die E-Mail mit einem Punkt (.) abgeschlossen haben will. |
| Client: From: hans.muster@example.org |
1. E-Mail-Zeile |
| Client: To: foo@example.com |
2. E-Mail-Zeile |
| Client: Subject: Testmail |
3. E-Mail-Zeile |
|
| Der Client signalisiert mit zweimal Zeilenumbruch den eigentlichen Nachrichtentext der E-Mail in der 4. E-Mail-Zeile. |
| Client: Testmail |
5. E-Mail-Zeile |
| Client: . |
Die E-Mail wird mit dem Punkt (.) abgeschlossen. |
| Server: 250 Ok |
Der Server quittiert den erfolgreichen Empfang der E-Mail. |
| Client: QUIT |
Der Client beendet die Verbindung zum Server. |
| Server: 221 Bye |
Der Server sagt "Auf Wiedersehen". |
Ein Screenshot dieser E-Mail ist dem Anhang beigefügt.
Vorteile
Bei SMTP handelt es sich um ein relativ einfaches Protokoll, da es textbasiert ist.
Die Überprüfung des SMTP-Servers kann problemlos durch die Verwendung eines Telnetprogramms erfolgen.
Nachteile
Für versendete E-Mails wird keine Versandbestätigung zurückgeliefert. Geht eine E-Mail verloren wird weder der Versender noch der Empfänger darüber informiert. Für den Fall, dass eine E-Mail nicht zustellbar ist wird zwar in den meisten Fällen eine Nachricht gesendet, diese enthält jedoch lediglich eine Fehlermeldung und den Header der E-Mail.
Es erfolgt beim einfachen SMTP keine Authentifizierung des Benutzers. Dies hatte eine große Menge SPAM zur Folge. Um diese Problem zu reduzieren wurde SMTP-Auth entwickelt. Dieses Verfahren ermöglicht dem Server eine Authentifizierung des Clients anhand seines Nutzernamens und Kennworts ermöglicht.
Da es sich bei diesem Protokoll um Plaintext handelt, ist es möglich den Inhalt auch als nicht berechtigter Empfänger zu lesen.
Quellen:
http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol zugegriffen am 20.11.2007.
http://www.elektronik-kompendium.de/sites/net/0903081.htm zugegriffen am 20.11.2007.
http://www.tecchannel.de/kommunikation/e-mail/401772/index2.html zugegriffen am 19.12.2007.
| Anhang | Größe |
|---|---|
| Beispiel E-Mail.JPG | 73.19 KB |