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.
Sender | Text |
---|---|
client | <code>telnet huschi.net 25code> |
server | <code>220 server1.consult-n.de ESMTP Postfix (Debian/GNU)code> |
client | <code>EHLO localhostcode> |
server | <code>250 server1.consult-n.de 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAINcode> |
client | <code>AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNzcode> |
server | <code>235 go aheadcode> |
[...] | |
client | <code>QUITcode> |
server | <code>221 Byecode> |
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.
Sender | Text |
---|---|
client | <code>telnet huschi.net 25code> |
server | <code>220 server1.consult-n.de ESMTP Postfix (Debian/GNU)code> |
client | <code>EHLO localhostcode> |
server | <code>250 server1.consult-n.de 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAINcode> |
client | <code>AUTH LOGINcode> |
server | <code>334 VXNlcm5hbWU6code> |
client | <code>[username]code> |
server | <code>334 UGFzc3dvcmQ6code> |
client | <code>[userpw]code> |
server | <code>235 go aheadcode> |
[...] | |
client | <code>QUITcode> |
server | <code>221 Byecode> |
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.
Sender | Text |
---|---|
client | <code>telnet huschi.net 25code> |
server | <code>220 server1.consult-n.de ESMTP Postfix (Debian/GNU)code> |
client | <code>EHLO localhostcode> |
server | <code>250 server1.consult-n.de 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAINcode> |
client | <code>AUTH CRAM-MD5code> |
server | <code>334 PDI0NjA5LjEwNDc5MTQwNDZAcG9wbWFpbC5TcGFjZS5OZXQ+code> |
client | <code>USER NAME [username]code> |
server | <code>334code> |
client | <code>DIGEST [digest]code> |
server | <code>235 go aheadcode> |
[...] | |
client | <code>QUITcode> |
server | <code>221 Byecode> |