ESMTP-Dialog
Ein SMTP-Dialog wurde bereits vorgestellt. Heute erkläre ich einen ESMTP-Dialog mit verschiedenen Authentifizierungsmethoden.
Wir sehen uns drei Auth-Methods an:
- PLAIN
- LOGIN
- CRAM-MD5
PLAIN
Die Methode PLAIN wird von Netscape/Mozilla/Thunderbird bevorzugt. Dies Clients können zwar auch LOGIN, aber nutzten lieber dieses.
Hierbei werden ID, Username und Passwort in einen String zusammengefasst (mit � - also dem Null-Byte als Trenner) und dann Base64-Encodiert.
telnet huschi.net 25
220 server1.consult-n.de ESMTP Postfix (Debian/GNU)
EHLO localhost
250 server1.consult-n.de
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz
235 go ahead
QUIT
221 Bye
LOGIN
Die Methode LOGIN wird vorallem von Outlook genutzt. (Es ist meist die einzige Methode, die Outlook beherscht.)
Hier werden Benuztername und Passwort einzeln abgefragt. Die Kommunikation dazu wird Base64 kodiert ('VXNlcm5hbWU6' => 'Username:').
Ensprechend wird der User und das Passwort Base64-kodiert übertragen.
telnet huschi.net 25
220 server1.consult-n.de ESMTP Postfix (Debian/GNU)
EHLO localhost
250 server1.consult-n.de
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
AUTH LOGIN
334 VXNlcm5hbWU6
[username]
334 UGFzc3dvcmQ6
[userpw]
235 go ahead
QUIT
221 Bye
CRAM-MD5
Während bei den anderen zwei Methode das Passwort unverschlüsselt (Base64 ist keine Verschlüsselung!) über die Leitung geht, wird nun ein String erzeugt, welcher per MD5 kodiert ist.
Hierbei wird ein zufälliger String auf Server-Seite erzeugt (meist ein Timestamp), welcher zur Kodierung hinzugefügt wird. Dieser wird vom Server gesendet sobald CRAM-MD5 gewählt wurde.
Die Antwort enthält den User und das Passwort inkl. des Strings per MD5 encoded.
telnet huschi.net 25
220 server1.consult-n.de ESMTP Postfix (Debian/GNU)
EHLO localhost
250 server1.consult-n.de
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
AUTH CRAM-MD5
334 PDI0NjA5LjEwNDc5MTQwNDZAcG9wbWFpbC5TcGFjZS5OZXQ+
USER NAME [username]
334
DIGEST [digest]
235 go ahead
QUIT
221 Bye