E-Mail-Verschlüsselung austesten

Für Diagnose-Zwecke ist es sehr nützlich, mit dem SMTP- oder IMAP-Server direkt zu sprechen. Wenn Verschlüsselung im Spiel ist, geht das zwar nicht mehr ganz so einfach – aber mit den richtigen Tools ist es kein Hexenwerk.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 9 Min.
Inhaltsverzeichnis

Fast alle Mail-Server bieten zumindest optional auch verschlüsselte Verbindungen an. Dabei gibt es zwei verschiedene Verfahren. Entweder man schickt das komplette Dienst-Protokoll durch einen SSL-Tunnel oder man verwendet eine Protokollerweiterung namens "StartTLS", um die Verschlüsselung nachträglich zu aktivieren.

Zunächst zu den SSL-Diensten. Die laufen in der Regel auf eigenen, speziell definierten TCP-Ports. Hier eine kurze Liste der wichtigsten:

Dienst Kürzel TCP-Port
HTTP über SSL https 443
IMAP über SSL imaps 993
IRC über SSL ircs 994
POP3 über SSL pop3s 995
SMTP über SSL ssmtp 465

Der am Komunikationsendpunkt lauschende Dienst erwartet dabei direkt eine SSL-Kommunikation. Ein E-Mail-Client, der kein SSL unterstützt, kann mit einem IMAPS-Server auf Port 993 nicht kommunizieren. Erst wenn die Verschlüsselungsparameter ausgehandelt und die Zertifikate ausgetauscht sind, steht der Tunnel, durch den dann das eigentliche Nutz-Protokoll gesprochen wird. Weil der SSL-Vebindungsaufbau zu komplex ist, kommt man bei der Diagnose von Problemen mit Standardwerkzeugen wie telnet und netcat nicht weit.

In die Bresche springt das universelle OpenSSL, das auch einen einfachen SSL-Client mitbringt. Mit dessen Hilfe kann man sich einfach mit einem SSL-Dienst wie dem auf https://www.heise.de verbinden:

$ openssl s_client -host www.heise.de -port 443
CONNECTED(00000003)
[...]
---
Certificate chain
 0 s:/C=DE/ST=Niedersachsen/L=Hannover/O=Heise Zeitschriften Verlag GmbH Co KG/OU=Netzwerkadministration/OU=Terms of use at www.verisign.com/rpa (c)05/CN=www.heise.de
  i:/O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
 1 s:/O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
  i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
[...]

Mit den von openssl bereitgestellten Informationen kann man zunächst die verwendeten Zertifikate überprüfen. Achtung: Wer das nicht tut, ist im Folgenden anfällig für Man-in-the-Middle-Angriffe. Es soll schon vorgekommen sein, dass technisch versierte Anwender, die ettercap bedienen konnten, auf diesem Weg an ein Admin-Passwort gekommen sind.

Der SSL-Client ver- und entschlüsselt den Eingabe- und Ausgabekanal transparent, so dass man nun direkt mit dem Server sprechen kann:

GET / HTTP/1.1
Host: www.heise.de

HTTP/1.1 302 Found
Date: Wed, 16 Sep 2009 10:24:44 GMT
Server: Apache/1.3.34
Location: http://www.heise.de/
[...]

Die Anmeldung bei einem bei IMAPS-Server ist nur wenig komplizierter:

$ openssl s_client -host imap.irgend.wo -port 993
[...]
* OK IMAP4 Ready 0.0.0.0 0001f994
1 Login user-ju secret
1 OK You are so in
2 LIST "" "*"
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.AV"
[...]
2 OK Completed (0.130 secs 5171 calls)
3 logout
* BYE LOGOUT received
3 OK Completed

Wichtig ist dabei die beliebig wählbare Sequenznummer, die dem eigentlichen IMAP-Befehl vorangestellt werden muss. Eine POP3-Anmeldung funktioniert vergleichbar, wenn man sich innerhalb des SSL-Tunnels mit den POP3-Kommandos USER und PASS ausweist:

$ openssl s_client -host pop.irgend.wo -port 995
[...]
+OK POP server ready H mimap3
USER user-ju
+OK password required for user "user-ju"
PASS secret
+OK mailbox "user-ju" has 0 messages (0 octets) H mimap3
quit
+OK POP server signing off

Alternativ kann man auch telnet-ssl oder die Netcat-Weiterentwicklung Ncat einsetzen, die ebenfalls SSL-Funktionen bieten. Bei Diensten, die mit StartTLS arbeiten, muss man jedoch zu anderen Tricks greifen.