Simple Mail Transfer Protocol
aus Wikipedia, der freien Enzyklopädie
SMTP (Simple Mail Transfer Protocol) | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Familie: | Internetprotokollfamilie | ||||||||||||||||||||||||
Einsatzgebiet: | Einspeisung von E-Mail (Mail Submission), Versendung von E-Mail eventuell über mehrere Stationen (Mail Transfer) | ||||||||||||||||||||||||
Ports: | 25/TCP 587/TCP (Alternative bei neueren Servern) |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
Standards: | RFC 821 (1982) und RFC 2821 (2001) |
Das Simple Mail Transfer Protocol (SMTP – zu deutsch etwa Einfaches E-Mail-Übertragungsverfahren) ist ein Protokoll der Internetprotokollfamilie, das zum Austausch von E-Mails in Computernetzen dient. Es wird dabei vorrangig zum Einspeisen und zum Weiterleiten von E-Mails verwendet. Zum Abholen von Nachrichten kommen andere, spezialisierte Protokolle wie POP3 oder IMAP zum Einsatz. SMTP-Server nehmen traditionell Verbindungen auf Port 25 ("smtp") entgegen, neuere Server auch auf Port 587 ("submission").
Inhaltsverzeichnis |
[Bearbeiten] Verfahren
Die Abwicklung des SMTP Protokolls wird meist für den Anwender unsichtbar durch sein Mailprogramm vorgenommen, den sogenannten Mail User Agent (MUA). Dieses Programm verbindet sich zu einem SMTP-Server, dem Mail Submission Agent (MSA), der die Mail über ggf. weitere SMTP-Server, sogenannten Mail Transfer Agents (MTA), zum Ziel transportiert. Da SMTP als Protokoll zum Transport von lokal erstellten Mails zwischen Servern konzipiert wurde, übernahm dabei ursprünglich ein einzelner Server auf Port 25 ("smtp") die Rolle von MSA und MTA. Der dedizierte Port 587 ("submission") für MSAs wurde erst 1998 eingeführt, um den unterschiedlichen Anforderungen beider Aufgaben gerecht zu werden: Ein MSA akzeptiert ausdrücklich nur Nachrichten berechtigter Nutzer und bereitet sie vor der Einspeisung in das Mailsystem gegebenenfalls standardkonform auf. Wegen der nahen Verwandtschaft beider Dienste wird die Funktionalität von MSA und MTA üblicherweise immer noch von nur einem Programm, das dann auf beiden Ports Verbindungen annimmt, bereitgestellt.
[Bearbeiten] Das Protokoll
Da SMTP ein textbasiertes Protokoll ist, kann unter den gängigen Betriebssystemen mit dem Kommandozeilen-Programm telnet eine E-Mail auch „von Hand“ verschickt werden. Dabei wie auch bei anderen Verfahren sind Absender- und Empfängeradresse frei wählbar und eine Authentifizierung findet nicht statt. Aus diesem Grund ist die Verlässlichkeit der Absenderangabe einer E-Mail nicht gegeben. (Anmerkung: es können sich sogar die Adressen im MAIL FROM
- und RCPT TO
-Kommando (sog. Envelope-From
bzw. Envelope-To
) von den Adressen im From:
- und To:
-Mailheader unterscheiden.)
Eine typische SMTP-Sitzung zum Versenden einer E-Mail sieht folgendermaßen aus:
Client | Server |
---|---|
220 mail.example.com SMTP Foo Mailserver | |
HELO mail.example.org | |
250 Hello mail.example.org, nice to meet you | |
MAIL FROM:<hans.muster@example.org> | |
250 Sender OK | |
RCPT TO:<foo@example.com> | |
250 Recipient OK | |
DATA | |
354 End data with <CR><LF>.<CR><LF> | |
From: <hans.muster@example.org> To: <foo@example.com> Subject: Testmail Date: Thu, 26 Oct 2006 13:10:50 +0200 Testmail . |
|
250 Message accepted for delivery | |
QUIT | |
221 See you later |
[Bearbeiten] Status-Codes
Das SMTP-Protokoll hält zum Status der Kommunikation zwischen Mailserver und Mailclient folgende Error-Codes bereit:
- 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.
[Bearbeiten] Extended SMTP
Als SMTP 1982 in RFC 821 definiert wurde, gab es eine überschaubare Anzahl von Hosts im Internet. Da die Verbindungen langsam und instabil waren, wurde auf Zuverlässigkeit großen Wert gelegt. Authentifizierung war nicht vorgesehen, somit war jeder Mailserver ein Open Relay, über den Mails an jeden anderen Knoten weitergeleitet werden konnten. Mit der wachsenden Popularität des Internets entstand so das Problem des Spam.
1995 wurde mit Extended SMTP (ESMTP) in RFC 1869 das Protokoll erweitert. Diese Erweiterung erlaubt, dass über ein modulares Konzept weitere Befehle (SMTP-Verben) definiert werden. Wenn der Sender sich beim Server nicht wie oben gezeigt mit HELO
, sondern mit EHLO
(Extended HELO) meldet, teilt der Server ihm im Gegenzug mit, welche Erweiterungen des Protokolls er unterstützt. Gängige Beispiele hierfür sind STARTTLS (Secure SMTP over TLS), 8BITMIME (8bit-MIMEtransport), DSN (Delivery Status Notifications) und AUTH (SMTP-Auth).
Zur Verschlüsselung über SSL/TLS wird alternativ das STARTTLS-Kommando oder SMTP über SSL (SMTPS) auf TCP Port 465 verwendet.
[Bearbeiten] Sicherheitskonzepte
Merkmal | Definition | Konzepte |
---|---|---|
Zugangskontrolle | Nur zugelassene Benutzer dürfen den Mailserver benutzen | SMTP-After-POP, SMTP-Auth |
Echtheitsprüfung | Eine eindeutige Zuordnung Absender <-> Nachricht ist möglich | PGP, S/MIME (siehe Elektronische Unterschrift), SPF |
Integrität | Die Nachricht kann auf dem Weg durchs Netz nicht unbemerkt verändert werden | PGP, S/MIME |
Vertraulichkeit | Die Nachricht wird nicht im Klartext übertragen, sondern verschlüsselt | PGP, S/MIME, SSL/TLS |
[Bearbeiten] Software
Einige der am häufigsten verwendeten SMTP-Server sind:
[Bearbeiten] Verwandte Themen
[Bearbeiten] Related Requests For Comments (RFCs)
- RFC 821 (SMTP, Standard)
- RFC 822 (Textformat)
- RFC 2821 (SMTP, Proposed Standard, macht RFC 821 und RFC 1869 obsolet)
- RFC 1652 (SMTP Service Extension for 8bit-MIMEtransport)
- RFC 1891 (SMTP Service Extension for Delivery Status Notifications)
- RFC 1845 (SMTP Service Extension for Checkpoint/Restart)
- RFC 1869 (SMTP Service Extensions, ESMTP)
- RFC 1870 (SMTP Service Extension for Message Size Declaration)
- RFC 1893 (Enhanced Mail System Status Codes)
- RFC 1894 (An Extensible Message Format for Delivery Status Notifications)
- RFC 1985 (SMTP Service Extension - ETRN)
- RFC 2034 (SMTP Service Extension for Returning Enhanced Error Codes)
- RFC 2476 (Message Submission, führt Port 587 für Message Submission ein)
- RFC 2487 (SMTP Service Extension for Secure SMTP over TLS)
- RFC 2505 (Anti-Spam Recommendations for SMTP MTAs)
- RFC 2554 (SMTP Service Extension for Authentication)
- RFC 2920 (SMTP Service Extension for Command Pipelining)
- RFC 3030 (SMTP Service Extensions for Transmission of Large and Binary MIME Messages)
- RFC 3207 (SMTP Service Extension for Secure SMTP over Transport Layer Security)
- RFC 3461 (SMTP Service Extension for Delivery Status Notifications (DSNs)
- RFC 3463 (Enhanced Status Codes for SMTP)
- RFC 3464 (An Extensible Message Format for Delivery Status Notifications)
- RFC 3700 (Internet Official Protocol Standards)
- RFC 2606 (Reserved Top Level DNS Names)