Skip to content

Postfix: Verschlüsselung zwischen Mailservern

Eine vollkommen wasserdichte verschlüsselte Kommunikation mittels E-Mail ist nur durch eine Ende-zu-Ende-Verschlüsselung realisierbar. Nur wenige Nutzer greifen jedoch darauf zurück. Grundlegende Maßnahmen sind dennoch möglich.

Geschichte

E-Mail kommt aus einer Zeit, in der alles als Klartext übertragen wurde und niemand jemals an Verschlüsselung dachte. Die Zeiten haben sich geändert und das dafür zuständige Protokoll SMTP wurde um Verschlüsselungsoptionen erweitert.

Bis eine E-Mail ihren Empfänger erreicht, wird sie unter Umständen über mehrere verschiedene Mailservern geleitet. Während dieser automatischen Weiterleitungsvorgänge zwischen Mailservern kann bei unzureichenden Maßnahmen der E-Mail-Inhalt durch Dritte einfach mitgelesen werden.

Motivation

Insofern Mailserver korrekt konfiguriert sind, können sie den Mailtransport untereinander verschlüsselt durchführen, indem sie auf Bibliotheken wie OpenSSL zurückgreifen. Auch wenn man lediglich die eigenen Server beeinflussen kann, hat jeder Mailserveradministrator die Verantwortung, das Setup zeitgemäß zu halten. Verschlüsselungsverfahren gelten eben nur eine begrenzte Zeit als sicher.

Mit dem Werkzeug starttls.info kann man den eigenen Mailserver prüfen lassen und es werden allgemeine Hinweise ausgegeben, wo Verbesserungsbedarf besteht.

Konfiguration von Postfix

Ich setze Postfix als Mailserver ein und folgende Einstellungen habe ich getroffen, um besser gerankt zu werden.

smtp_tls_ciphers = high
smtpd_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
smtpd_tls_mandatory_ciphers = high

smtp_tls_security_level = may
smtpd_tls_security_level = may

smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

smtp_tls_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtpd_tls_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtp_tls_mandatory_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES
smtpd_tls_mandatory_exclude_ciphers = aNULL, DES, RC4, MD5, 3DES

Mit den Einstellungen in *protocols deaktiviere ich SSL vollständig, da es von verschiedenen Stellen als unsicher eingestuft wird. Weiter gibt es TLS 1.0 bereits lange genug. Mit *tls_ciphers und *tls_mandatory_ciphers auf high schränke ich auf die durch Postfix als gut eingestuften Ciphers ein und danach deaktiviere ich manuell weitere mittels *exclude_ciphers.

Durch *security_level auf may mache ich alles optional. So kann man weiterhin mit Mailservern kommunizieren, die keinerlei verschlüsselte Kommunikation unterstützen, wie aktuell z.B. die von KabelBW und Hotmail. Wenn man Hardliner ist, kann jederzeit das Level auf encrypt gestellt werden und schon pocht Postfix auf Verschlüsselung. Es gibt aber auch noch härtere Level. :-)

Testung

Mit sslscan kann man jederzeit die verbliebenen aktivierten Ciphers auflisten lassen.

$ sslscan --starttls --no-failed localhost:25

Weiter bietet es sich an, das Senden und Empfangen von E-Mails an große E-Mailanbieter wie gmail, gmx,... zu testen. Das Logfile von Postfix bzw. das hoffentlich korrekt eingerichtete Monitoring dessen gibt Aufschluss darüber, ob alles einwandfrei arbeitet.

Fazit

Unglaublich viele Konfigurationsparameter machen OpenSSL für einen Dienst wie Postfix nur in Verbindung mit viel Rechercheaufwand einrichtbar. Weiter muss man stets IT-Nachrichten lesen, um zu Wissen auf welche Funktionalität der Bibliothek man lieber gerade verzichten sollte.

Leider kann man OpenSSL nicht dienstübergreifend konfigurieren, wenn man es nicht gerade selbst kompilieren will. ;-)

Nachtrag

27.05.2014: Einen weiteren guten Mailservertester gibt es übrigens bei ssl-tools.net.

20.05.2015: smtpd(d)_tls_ciphers hinzugefügt, danke Akimiya :-)

28.08.2016: smtpd(d)_tls_exclude_ciphers um 3DES erweitert; Noch einen guten SSL-Tester gibts bei tls.imirhil.fr.

Kommentare

Noch keine Kommentare

Kommentar schreiben