(E)SMTP-Dialog (Mail schreiben über SMTP)

Diese Referenz soll dazu dienen, um sich mit einem SMTP-Server zu verständigen, etwa wenn man mal ein mail über telnet schicken will… 😉

Nach dem verbinden mit telnet mail.example.org 25, meldet sich der SMTP-Dämon mit einer Statuszeile:

220 Welcome blabla...

Alle Meldungen beginnen mit einer dreistelligen Zahl, deren erste Ziffer angibt, ob die Aktion erfolgreich war oder nicht. 2 steht für Erfolg.
Jetzt identifiziert sich der Sender mit HELO (SMTP) oder EHLO (ESMTP):

EHLO <hostname>

Nun antwortet der Server:

2xx OK

xx steht dabei für zwei Ziffern.

Ab hier muss man sich mittlerweile bei den meisten Mailservern Authentifizieren, dass die Mail angenommen wird:

AUTH LOGIN

Der Server erwartet nun Benutzername und Passwort, jeweils BASE64 Codiert (base64 Encoder)

334 USER <Base64_codierter_Benutzername>
334 PASS <Base64_codiertes_Passwort>

Nach erfolgreichem authentifizieren bestätigt der Server dies:

235 OK

Der Sender übergibt die Envelope-Adresse des Absenders:

MAIL FROM: <user@example.org>

Der Server bestätigt dies mit:

2xx OK

Jetzt werden die Envelope-Adressen der Adressaten übergeben:

RCPT TO: <user@example.net>

Der Server bestätigt dies wieder mit:

2xx OK

Dies wiederholt sich für alle Adressaten. Nun kann die Mail selber verschickt werden:

DATA
From: user@example.org
To: user@example.net
hallo
.

Eine Zeile mit einem einzelnen Punkt beendet die Mail (ist aber selbst nicht Teil der Nachricht). Der Server antwortet:

2xx Message accepted for delivery.

Nun kann eine weitere Mail durch Angabe der Envelope-Adressen verschikt werden, oder aber die Verbindung wird beendet durch:

QUIT

und der Server antwortet etwa:

221 blabla closing connection.

Bei diesem einfachen SMTP-Dialog ist insbesondere zu beachten, daß ausschließlich druckbare ASCII-Zeichen (also auch keine Umlaute) übertragen werden können. Dies ist erst möglich im erweiterten ESMTP; dort muß zwar der ESMTP-Dialog selbst ebenso wie die Header der Mail aus druckbaren ASCII-Zeichen bestehen, allerdings darf der Text der Mail beliebige Zeichen enthalten.
ESMTP wird statt mit HELO mit EHLO eingeleitet, darauf antwortet der Dämon mit einer Liste der zusätzlich verstandenen Kommandos/Features:

220 mail.Uni-Mainz.DE ESMTP Sendmail 8.8.4/8.8.4; Mon, 13 Jan 1997 15:03:46 +0100 (MET)
ehlo roquefort.zdv.uni-mainz.de
250-mail.Uni-Mainz.DE Hello roquefort.zdv.Uni-Mainz.DE [134.93.8.119], pleased to meet you
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP

Versteht der Server nur SMTP, so antwortet er einer Fehlermeldung, worauf der Sender nun doch ein HELO schickt:

220 vm.gmd.de running IBM VM SMTP V2R2 on Mon, 13 Jan 97 15:04:47 +0100
ehlo roquefort.zdv.uni-mainz.de
500 Unknown command, 'ehlo'
helo roquefort.zdv.uni-mainz.de
250 vm.gmd.de is my domain name.

Sieve

Mit dem addon sieve können Serverseitige Mail filter erstellt werden.
Muss man mal den sieve Server testen, so geht dies natürlich auch via telnet:

AUTHENTICATE "PLAIN" "<base64-encoded credentials>"
OK "Logged in."
LISTSCRIPTS
"managesieve" ACTIVE
OK "Listscripts completed."
GETSCRIPT "managesieve"
{6}
keep;
OK "Getscript completed."

Verbinden mit SSL/STARTTLS

Wenn SSL ins Spiel kommt (was heutzutage eigentlich immer der Fall ist 😉 ), wird es schwieriger, da sich die clients in diesem Falle ja verschlüsselt unterhalten und kaum jemand diese „Sprache“ beherrschen wird. 😀

Glücklicherweise gibt es dafür im openssl Programm eine Option, welche die Verschlüsselung transparent macht:

openssl s_client -starttls smtp -connect mail.example.org:587 -crlf -ign_eof

Zwischen -starttls und -connect wird das Protokoll angegeben.
openssl unterstützt derzeit die Protokolle „smtp“, „pop3“, „imap“, „ftp“, „xmpp“, „xmpp-server“, „irc“, „postgres“, „lmtp“, „nntp“, „sieve“ und „ldap“

Weitere Informationen

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

2 thoughts on “(E)SMTP-Dialog (Mail schreiben über SMTP)”

Schreibe einen Kommentar zu Franz Mayr Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.