Postfix/Kryptografie

Aus Foxwiki

TLS-(SSL-)Kryptografie

Wer einen MTA außerhalb des LANs anbieten (oder selber nutzen) möchte, sollte TLS-Kryptografie (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-Kryptografie 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 Kryptografie 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 (Kryptografie möglich) und encrypt (Kryptografie erforderlich). Die alten Schlüsselwörter funktionieren aber aus Kompatibilitätsgründen vorerst weiterhin.

Außerdem ist zu beachten, dass ein Erzwingen der Kryptografie 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 Kryptografie 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

Kryptografie 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)

TMP

TLS

Weitere Informationen finden Sie unter Postfix-TLS-Unterstützung.

Sicheres SMTP (Senden)

Standardmäßig sendet Postfix/Sendmail keine verschlüsselten E-Mails an andere SMTP-Server.

  • Um TLS zu verwenden, wenn verfügbar, fügen Sie die folgende Zeile hinzu main.cf:
/etc/postfix/main.cf
smtp_tls_security_level = kann

Um erzwingen (und fehlschlägt, wenn der Remoteserver es nicht unterstützt), ändern Sie mayzu encrypt.

  • Beachten Sie jedoch, dass dies gegen RFC:2487 wenn auf den SMTP-Server öffentlich verwiesen wird.

Sicheres SMTP (Empfangen)

Warnung: Wenn Sie TLS , befolgen Sie unbedingt die Anleitung von Weakdh.org , um FREAK/Logjam zu verhindern.

Standardmäßig akzeptiert Postfix keine sichere E-Mail.

Sie müssen ein Zertifikat erwerben. Verweisen Sie Postfix auf Ihre TLS-Zertifikate, indem Sie die folgenden Zeilen zu hinzufügen main.cf:

/etc/postfix/main.cf
smtpd_tls_security_level = kann
smtpd_use_tls = ja
smtpd_tls_cert_file = /Pfad/zu/cert.pem
smtpd_tls_key_file = /path/to/key.pem

Es gibt zwei Möglichkeiten, sichere E-Mails zu akzeptieren.

  • STARTTLS über SMTP (Port 587) und SMTPS (Port 465).
  • Letzteres war zuvor veraltet, wurde aber durch RFC:8314.

Um STARTTLS über SMTP (Port 587) zu aktivieren, kommentieren Sie die folgenden Zeilen aus master.cf:

/etc/postfix/master.cf
Übermittlung inet n - n - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=verschlüsseln
  -o smtpd_sasl_auth_enable=ja
  -o smtpd_tls_auth_only=ja
  -o smtpd_reject_unlisted_recipient=nein
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,ablehnen
  -o milter_macro_daemon_name=URSPRUNG

Die smtpd_*_restrictionsOptionen bleiben kommentiert, weil $mua_*_restrictionssind standardmäßig nicht in main.cf definiert.

  • Wenn Sie sich entscheiden, eine von einzustellen $mua_*_restrictions, kommentieren Sie auch diese Zeilen aus.

Um SMTPS (Port 465) zu aktivieren, kommentieren Sie die folgenden Zeilen aus master.cf:

/etc/postfix/master.cf smtps inet n - n - - smtpd

  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=ja
  -o smtpd_sasl_auth_enable=ja
  -o smtpd_reject_unlisted_recipient=nein
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,ablehnen
  -o milter_macro_daemon_name=URSPRUNG

Die Begründung rund um die $smtpd_*_restrictionsLinien ist die gleiche wie oben.