Postfix/Kryptografie

Aus Foxwiki

TLS-(SSL-)Verschlüsselung

Wer einen MTA außerhalb des LANs anbieten (oder selber nutzen) möchte, sollte TLS-Verschlüsselung (ehemals SSL genannt) anbieten.

  • Dafür benötigt man neben Postfix ein zweiteiliges SSL-/TLS-Zertifikat.
  • Eine einfache Möglichkeit, an ein Dummy-Zertifikat zu kommen, bietet das Paket ssl-cert, das hier benutzt wird.
  • Wer den Server nicht nur privat nutzt, sollte sich aber auf jeden Fall ein richtiges, von einer respektierten Zertifizierungsstelle signiertes, Zertifikat besorgen.

Um TLS-Verschlüsselung zu aktivieren, muss man nur folgende Zeilen in die /etc/postfix/main.cf eintragen [3]:

smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls = yes

Danach Postfix neu starten.

Zusätzlich zu den o.a. Konfigurationsdirektiven gibt es auch folgende:

smtpd_enforce_tls = yes

Diese bewirkt, dass Postfix die Verschlüsselung nicht nur optional anbietet, sondern explizit erzwingt. Unterstützt der Client kein TLS, wird die Verbindung abgelehnt.

Hinweis
In Postfix 2.3 wurden die beiden Direktiven smtpd_use_tls und smtpd_enforce_tls zusammengefasst zu smtpd_tls_security_level, mit den möglichen Werten may (Verschlüsselung möglich) und encrypt (Verschlüsselung erforderlich). Die alten Schlüsselwörter funktionieren aber aus Kompatibilitätsgründen vorerst weiterhin.

Außerdem ist zu beachten, dass ein Erzwingen der Verschlüsselung von vielen Emailservern nicht beachtet wird und Emails von anderen E-Mailservern (z.B. GMX) nicht an Ihre lokalen Postfächer zugestellt werden können.

Veraltet: ssmtp

  • Früher benutzte man SSL/TLS nicht über den normalen SMTP-Port, sondern ohne besondere Protokollverhandlungen über den sog. ssmtp- (oder smtps-)Port 465.
  • Wer das unterstützen möchte, um auch Uralt-Clients Verschlüsselung zu bieten, muss die /etc/postfix/master.cf ändern und den zusätzlichen Service eintragen:
smtps    inet  n       -       n       -       -       smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

Verschlüsselung aktivieren

Standardmäßig werden Mails unverschlüsselt an den nächsten Server verschickt. Inzwischen wird dies aus Sicherheitsgründen von immer mehr Anbietern nicht mehr unterstützt (Web.de, GMX, T-Online, etc).

Durch Setzen des smtp_tls_security_level auf encrypt werden nur noch verschlüsselte Verbindungen aufgebaut. Man sollte den Wert zumindest aber auf may setzen. In diesem Fall wird versucht, eine verschlüsselte Verbindung aufzubauen, wenn dies möglich ist.

In die /etc/postfix/main.cf hierzu folgendes hinzufügen:

smtp_tls_security_level = may

Ob die Mail verschlüsselt wurde, sieht man daran, dass in den Kopfzeilen ("header") der Mail bei der entsprechenden Verbindung ESMTPS(A) steht:

Received: from Meinserver (meine-reverse-dns [Meine IP])

by Derserver (Postfix) with ESMTPSA id 0E523340030E
for <me@example.com>; Tue,  8 Apr 2014 10:21:11 +0200 (CEST)