Um bei ausgehenden Mails die Nutzung von TLS zu erzwingen, muss man Postfix zwei Dinge mit auf den Weg geben:
die Liste der Domains, bei denen TLS erzwungen werden soll, und die entsprechenden Zertifikate.
Zuerst sollte man prüfen, dass Mails an diese Domains bereits mit TLS übermittelt werden und dass das Server Zertifikat erfolgreich verifiziert werden kann (im Logfile steht dann so etwas wie “Setting up connection to …” und “Verified: subject_CN=..., issuer=...”).
Postfix Konfiguration
In /etc/postfix/main.cf:
smtp_tls_per_site = hash:/etc/postfix/ssl_outgoing
Daneben sind natürlich die weiteren smtp_tls_XXX-Einstellungen notwendig.
Domain Konfiguration
In /etc/postfix/ssl_outgoing:
example.com MUST_NOPEERMATCH
Neben MUST_NOPEERMATCH gibt es noch andere Optionen (siehe postconf Dokumentation auf postfix.org):
- NONE: Kein TLS. Ist nützlich, um Ausnahmen zu definieren, da ein weniger spezifisches MAY übersteuert wird.
- MAY: Opportunistisches TLS. Die anderen Angaben übersteuern das MAY.
- MUST_NOPEERMATCH: TLS wird erzwungen, aber es ist nicht notwendig, dass der Name im subject_CN-Feld mit dem Namen des Mailservers übereinstimmt. Das ist die sinnvollste Methode, da beim Erzwingen gleicher Namen alle Mailserver mit Wildcards im subject_CN rausfallen (Postini nutzt überall Wildcards).
- MUST: TLS wird erwzungen, inklusive Übereinstimmung zwischen subject_CN und Hostnamen.
Postfix >= 2.3
Die Einstellungen oben gelten für die wahrscheinlich am weitesten verbreitete Postfix Version 2.2. Ab Version 2.3 gibt es anstelle von smtp_tls_per_site das flexiblere smtp_tls_policy_maps (siehe die entsprechende postconf Dokumentation).