Simple Mail Transfer Protocol
Das Simple Mail Transfer Protocol / SMTP (RFC 821, RFC 2821) bestimmt (ergänzend zu POP3) den Aufbau der E-Mails und die Routinen zum Versenden von E-Mails. Beispielsweise wird geregelt, wie Steuermeldungen aussehen oder wie zwei Mail-Systeme untereinander Informationen austauschen. Das grösste Problem von SMTP sind fehlende Authentifizierungsmechanismen, die jedem Internetnutzer erlauben, den SMTP-Server zum Versand von E-Mails zu verwenden. SMTP-Server vertrauen dabei standardmässig jedem, Benutzer können also jede beliebige Absenderadresse angeben! Der SMTP-Server lauscht standardmässig auf Port 25.
Ein SMTP-Server erledigt folgende Aufgaben:
- Akzeptieren einer ankommenden Nachricht.
- Überprüfen der Adressaten der Nachricht.
- Speichern der Nachricht zur Abholung, wenn es sich um lokale Empfänger handelt.
- Weiterleiten der Nachricht, wenn es entfernte Empfänger sind.
SMTP-Server ähneln daher von der Funktionalität her Paketroutern, werden aber ausschliesslich für E-Mail verwendet. Oft passiert eine Nachricht mehrere SMTP-Gateways, bevor sie ihr endgültiges Ziel erreicht. Der Weg einer E-Mail ist in ihrem Header nachvollziehbar.
Bekannte SMTP-Clients sind:
Das Extended Simple Mail Transfer Protocol / ESMTP (RFC 1869) erschien 1995 und beinhaltet neben verschiedenen Verschlüsselungsmethoden wie SSL und TLS auch SMTP-Auth zur Benutzerautentisierung.
Befehle
Mit einem SMTP-Server kann über eine telnet-Sitzung an Port 25 mit folgenden Befehlen direkt kommuniziert werden.
$ telnet xxx.xxx.xxx.xxx 25
Befehl | Beschreibung |
---|---|
DATA | Folgende Zeilen sind der Textkörper der E-Mail. Das Ende der Nachricht wird durch Senden einer Zeile mit einem einzelnen Punkt angezeigt. |
EXPN | Expandieren des Benutzernamens zu einer vollständigen E-Mail-Adresse. |
HELO / EHLO | Starten einer SMTP-Sitzung und Austausch von Daten zur Identifizierung unter Angabe des Rechnernamens des Absenders. Ein Mailcleint sendet an dieser Stelle normalerweise den eigenen Rechnernamen. |
HELP | Hilfe zu SMTP. |
MAIL FROM: | Starten einer E-Mail-Transaktion. |
QUIT | Beenden einer E-Mail-Transaktion. |
RCPT TO: | Angabe eines Empfängers. |
RESET | Abbruch der aktuellen Operation. |
SEND | Starten der Zustellung. |
VERIFY / VRFY | Überprüfen der Absenderadresse. |
Eine SMTP-Sitzung zwischen Mail Delivery Agent (Mailserver) und Mail User Agent (Mailclient) könnte wie folgt aussehen.
Mailserver | Mailclient |
---|---|
(wartet auf Verbindungen auf TCP-Port 25) | (öffnet Verbindung) |
220 mail.xxxxx.xx SMTP Foo Mailserver | HELO client.xxxxx.xx |
250 Hello client.xxxxx.xx, nice to meet you | MAIL FROM: sender@xxxxx.xx |
250 Sender OK | RCPT TO: recipient@xxxxx.xx |
250 Recipient OK | DATA |
354 End data with <CR><LF>.<CR><LF> | From: sender@xxxxx.xx To: recipient@xxxxx.xx Subject: Testmail Date: Sun, 18 May 2008 12:45:32 +0200 Testmail . |
250 Message accepted for delivery | QUIT |
221 See you later | (schliesst Verbindung) |
Das Testen verschiedener Kombinationen von Absender- und Empfängeradressen gibt einen recht guten Aufschluss übder die Konfiguration des SMTP-Servers. Ein nicht authentifizierter Benutzer sollte niemals Nachrichten an Empfänger fremder Domains schreiben dürfen, da der Server sonst im Open Relay-Modus arbeitet.
Weblinks
- SMTP via Telnet (Thomas-Fahle.de)
- Command line SMTP client (Logix.cz) - ein Perl-Skript