HI Patrick, HI all!
Mit der Postfix-Option smtp_tls_policy_maps kann ich ja für beliebige Ziel-Domains eine abweichende Gewichtung bei der nötigen TLS-Verschlüsselung erreichen.(1)
Das Ganze funktioniert ja soweit recht einfach und gut - wenn, und jetzt kommt die Einschränkung - wenn es eine Zieldomäne ohne Backup-MX betrifft.
Wie, was ich da meine? O.K. ich erklär es mal an einem Beispiel.
Fall 1: ======= Die Domäne example.edu hat nur einen MX-Record mit Namen mx01.example.edu
Auf meinem Mailserver habe ich nur definiert: /etc/postfix/main.cf: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy_maps
/etc/postfix/tls_policy: example.edu encrypt
Versucht nun mein MX eine eMail bei mx01.example.edu abzuliefern, macht er das nur, wenn eine trusted TLS-Connection zu mx01.example.edu zu Stande kommt. Kann keine TLS-Verbindung hergestellt werden, wir die eMail gequeuet mit all den Folgen. Also entweder wird solange versucht die Mail zuzustellen, bis auch eine TLS-Verbindung zu Stande kam, oder sie wird gebounced. Also hier stimmt dier Erwartung mit dem Ergebnis 100% überein.
Fall2:
Die Domäne example.com hat nicht nur einen MX-Record sondern 2! example.com. 86400 IN MX 10 mx01.example.com. example.com. 86400 IN MX 20 mx01.example.net.
Die Domäne hat also eine Haupt MX und als Backup-MX fungiert der Mailserver mx01.example.com.
Auf meinem Mailserver habe ich nur definiert: /etc/postfix/main.cf: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy_maps
/etc/postfix/tls_policy: example.com encrypt example.net encrypt
Dann versuchen wir doch mal ein paar eMails zu verschicken:
Test1: Klappt das mit der TLS-Verschlüsselung, wird die eMail brav zugestellt, im Idealfall an den Server mit der niedrigeren Priiorität, in dem Beispiel also mx01.example.com
Test2: Beim Server mx01.example.com klappt die TLS-Verbindung warum auch immer nicht. Was erwarten wir? Na, die Nachricht soll auf dem zweiten MX mx01.example.net mit der Priorität 20 zugestellt werden. Das macht der Server auch und schickt die Nachricht dann via TLS (mx01.example.net hat als Standard smtpd_tls_security_level = may gesetzt) an mx01.example.net
Test3: Unser eigener Server (Client) soll laut Definition mit den Zielservern von example.com und example.net nur über eine verschlüsselte Verbindung kommunizieren und versucht nun eine eMail an ceo@example.com zu senden. Laut MX-Record im DNS weiss mein Server, dass er als erstes sein Glück beim Server mx01.example.com versuchen soll. Leider klappt die TLS-Verbindung nicht, also wir mein Serveres wo versuchen? Genau beim Backup-MX. Leider klappt dort der TLS-Handshake auch nicht.
Tja was erwarten wir? Die Nachricht wird zurückbehalten und an einem der beiden zuständigen MXe zugestellt, sobald der TLS-Kanal zu stande kommt- dauerts zu lange wird gebounced. Was passiert? <trommelwirbel> die Nachricht wird von meinem MX beim backup-MX mx01.example.net *ohne* TLS-Verbindung zugestellt! *möp*
Also passiert genau das, was wir nicht wollten, die Nachricht wird unverschlüsselt übertragen, genau das, was wir mit der Konfiguration von smtp_tls_policy_maps eigentlich verhindern wollten. :/
So und nun ist der große Meister dran. Wie kann ich meinem Postfix-Client zwingen, bei gesetzter zwingenden TLS-Verschlüsselung auch wirklich nur zu senden, wenn der TLS-Channel auch wirklich zur Verfügung gestellt und das gleichgültig auf welchen MXer ich rauskomme?
Any idea? Ich für meinen Teil, steh erst mal etwas arg ratlos da!
Servus Django
(1) http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps