Mail: SMTP AUTH via Konsole testen, inkl. STARTTLS

Ohne TLS:
Aufbau der Verbindung:

telnet mx.example.com 25

oder

netcat mx.example.com 25

man wird nett begrüßt mit

220 mx.example.com ESMTP

Dann senden wir ein „EHLO unserhosname“ o.ä.

EHLO test.example.com

Wir bekommen eine Antwort mit den unterstützten Befehlen:


250-mx.example.com
250-PIPELINING
250-SIZE 102400000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Hier sieht man das der Server nur PLAIN und LOGIN unterstützt, nur Klartext verfahren. ALSO: Ohne TLS nur Test-Logins verwenden!

Hier gibt es nun zwei Möglichkeiten: PLAIN oder LOGIN

Bsp. PLAIN:

AUTH LOGIN

es kommt eine Antwort in Base64 Kodierung: 334 VXNlcm5hbWU6
Er möchte gerne den Benutzernamen wissen, den müssen wir ebenfalls Base64 kodiert übertragen.
Vorgehensweise:

perl -MMIME::Base64 -e 'print encode_base64("username");'

echo -n "username" | openssl enc -base64

python -c "import base64;print base64.encodestring('username')"

usw.

Hier als Beispiel der Nutzer test

dGVzdA==

als nächstes wird das Passwort verlangt: 334 UGFzc3dvcmQ6
für unseren Testaccount ebenfalls test:

dGVzdA==

dann folgt eine Bestätigung vom Mailserver:

235 Authentication succeeded

Bsp. LOGIN:

das gleiche wie bei PLAIN jedoch wird der Benutzername und das Kennwort in einem Schritt übertragen:

perl -MMIME::Base64 -e 'print encode_base64("\000username\000passwort");'

echo -en "\000username\000passwort" | openssl enc -base64

python -c "import base64;print base64.encodestring('\000username\000passwort')"

usw.

auch hier folgt dann eine Bestätigung vom Mailserver:

235 Authentication succeeded

Mit TLS

Das Gespräch mit dem Mailserver hat den gleichen Inhalt, jedoch wird die Verbindung anders hergestellt:

openssl s_client -host mx.example.com -port 25 -starttls smtp

andere ports ansonsten über

openssl s_client -host mx.example.com -port 465

openssl s_client -host mx.example.com -port 993

als Ausgabe sind nun noch ein paar TLS Infos zu sehen.

der rest wie oben 😉