Erzwingen der Verschlüsselung für ausgehendes SMTP mit Postfix

22

Weiß jemand, wie man Postfix anweist, ausgehende E-Mails zu verschlüsseln?

Ich habe es so konfiguriert, dass die Verschlüsselung beim Empfang verwendet wird, kann dies jedoch nicht mit ausgehenden E-Mails tun. Das ist meine main.cfAkte:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Simon
quelle

Antworten:

30

smtp_tls_security_level = verschlüsseln oder smtp_enforce_tls = ja

Für bestimmte Ziele können Sie smtp_tls_policy_maps verwenden

smtp_use_tls = yes und smtp_enforce_tls = yes sind veraltet. Verwenden Sie ab Postfix 2.3 stattdessen smtp_tls_security_level .

Denken Sie daran: Das Erzwingen der TLS-Verschlüsselung kann zu Problemen bei der E-Mail-Zustellung für SMTP-Hosts führen, für die TLS nicht konfiguriert ist. Wenn der Server verwendet wird, um E-Mails nur an Ihren internen Server mit konfiguriertem TLS zuzustellen, ist dies in diesem Fall kein Problem. Wenn der Server jedoch zur Zustellung von E-Mails an öffentliche Server verwendet wird, können Sie nicht davon ausgehen, dass alle Server TLS-Unterstützung bieten. In diesem Fall verwenden Sie smtp_tls_security_level = may

sumar
quelle
1
Ich denke, er will es nur vom Software-Mailclient zum sendenden Mailserver durchsetzen. Nicht von Mailserver zu Mailserver (siehe seinen Kommentar am
07.03.10
4

Die Idee ist, Benutzer zu zwingen, ihre E-Mail-Clients mit einem verschlüsselten SMTP-Server für ausgehende Nachrichten zu konfigurieren. Mit der aktuellen Konfig lässt Thunderbird ihnen die Möglichkeit, mit dem SMTP-Server im Klartext zu kommunizieren ...

Sie können die Option in Thunderbird nicht deaktivieren, ohne den Quellcode neu zu kompilieren. Sie können jedoch den Daemon postfix stmpd (der E-Mails von Ihren Clients empfängt) so konfigurieren, dass die Verschlüsselung erzwungen wird. Verwenden Sie dazu smtpd_tls_security_level = encrypt , was den veralteten Optionen smtpd_use_tls = yes und smtp_enforce_tls = yes entspricht . smtpd_tls_security_level = encrypt und smtp_enforce_tls = yes implizieren smtpd_tls_auth_only = yes

Aus der Postfix-Dokumentation zu smtpd_tls_security_level = encrypt

Obligatorische TLS-Verschlüsselung: Kündigen Sie SMTP-Clients die STARTTLS-Unterstützung an und setzen Sie voraus, dass Clients die TLS-Verschlüsselung verwenden. Laut RFC 2487 darf dies NICHT bei einem öffentlich referenzierten SMTP-Server angewendet werden. Stattdessen sollte diese Option nur auf dedizierten Servern verwendet werden.

Wenn Sie einen öffentlichen Server verwenden, können Sie die E-Mail-Verschlüsselung auf Port 25 / tcp nicht erzwingen. Die bessere Lösung besteht darin, die E-Mail-Zustellung über den Postfix-SMTPD-Dämon-Port 25 / TCP von Ihren Clients zu deaktivieren und den Postfix-Submission-Dämon zu aktivieren (dies ist ein spezieller Postfix-SMTPD-Dämon, der nur zum Empfangen von E-Mails von Ihren lokalen Clients verwendet wird, wie in RFC 4409 beschrieben , der auf Port 587 / TCP ausgeführt wird). . Um das zu tun, Set smtpd_tls_security_level = kann und entfernen permit_sasl_authenticatedvon smtpd_recipient_restrictions . In der master.cfKommentarzeile zum Submission Daemon:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
quelle
1

Nur neugierig, wie erzählen Sie, dass TLS nicht verwendet wird? Der Standardwert für smtp_tls_loglevel (der sich von smtpd_tls_loglevel unterscheidet) ist 0, sodass in den Postfix-Protokollen standardmäßig keine Informationen zur TLS-Aushandlung für ausgehende E-Mails angezeigt werden.

Wenn Sie smtp_tls_loglevel = 1 oder höher festlegen, sollte beim Senden einer Nachricht eine Zeile wie diese im Protokoll angezeigt werden:

7. März, 22:28:10 Uhr Rack-Postfix / SMTP [27400]: Initialisierung der clientseitigen TLS-Engine

Ich gebe zu, dass ich faul bin, aber abgesehen davon (und den obigen Anmerkungen) sieht die Konfiguration für mich auf einen Blick gut aus.

jlupolt
quelle
1
Ich habe verstanden, dass Simon die Verschlüsselung aller E-Mails mit TLS erzwingen möchte. smtp_use_tls = yes ermöglicht die Postfix-Verwendung von TLS, wenn der Remote-Server dies unterstützt (smtp_use_tls = yes entspricht smtp_tls_security_level = may). Entsprechende Nachrichten sollten im Mail-Protokoll abgelegt werden, wenn ausgehende E-Mails mit TLS verschlüsselt wurden. Sie haben Recht, dass smtp_ * -Optionen für andere Postfix-Daemons als smtpd_ * gelten (smtpd_ * dient zum Empfangen von E-Mails von Remoteservern, smtp_ * zur Zustellung von E-Mails an Remoteserver).
Kumar
Eigentlich denke ich, dass die Frage etwas mehrdeutig sein könnte. Zumindest kann ich nicht sagen, ob Simon möchte, dass Postfix TLS benötigt oder es nur verwendet, wenn der Server des Empfängers es unterstützt.
Jlupolt
1
Danke für deine Worte, ich habe es mir wahrscheinlich nicht gut erklärt. Die Idee ist, Benutzer zu zwingen, ihre E-Mail-Clients mit einem verschlüsselten SMTP-Server für ausgehende Nachrichten zu konfigurieren. Mit der aktuellen Konfig überlässt Thunderbird ihnen die Option, mit dem SMTP-Server im Klartext zu kommunizieren. Ist es möglich, dies zu vermeiden? Vielen Dank im Voraus, Simon.
Simon
Eine einfache Möglichkeit, festzustellen, ob TLS aktiv ist, besteht darin, die Rohnachricht auf der Empfängerseite zu überprüfen und nach Authentifizierungsergebnissen zu suchen: domainkeys = neutral (no sig); Was darauf hinweist, dass TLS nicht verwendet wird
Scott Stensland