DANE ausgehend mit Postfix einrichten

Postfix unterstützt ab Version 2.11 DANE. Um DANE für den ausgehenden Mailversand zu aktivieren, wird natürlich ein validierender Resolver benötigt, dem vertraut wird, um DNSSEC-Antworten zu erhalten. Dieser muss also zuerst eingerichtet werden, und wird hier vorausgesetzt.

Der Resolver kann auf einer anderen Rechner laufen, aber dann muss sichergestellt sein, dass die Antworten nicht verfälscht werden können (z.B. über eine VPN-Verbindung), da die Validität nur über das AD Flag sicher gestellt wird. Daher ist es zu empfehlen, einen validierenden Stub-Resolver auf dem MTA einzurichten, der dann die Antworten mittels DNSSEC prüft.


Die Postfix-Version kann mit


postconf -d | grep mail_version

mail_version = 2.11.3

milter_macro_v = $mail_name $mail_version


ermittelt werden.


In der Hauptkonfiguration, /etc/postfix/main.cf, müssen DNSSEC-Validierung und DANE-Sicherheitslevel angeschaltet werden:


smtp_dns_support_level = dnssec

smtp_tls_security_level = dane

smtp_tls_loglevel = 1


Logging ermöglicht eine einfachere Fehlersuche, bei Bedarf kann das Loglevel auch höher gestellt werden, um mehr Informationen zu erhalten.


Es kann auch eine Destinationsspezifische Policy verwendet werden, für Details hierzu siehe die Postfix Dokumentation auf http://www.postfix.org/TLS_README.html .


Damit die Änderungen wirksam werden, muss natürlich die Konfiguration neu geladen


postfix reload


oder Postfix neu gestartet werden


service postfix restart


Überprüfen der DANE-Verifizierung

Ob beim Mailversand an eine Gegenstelle DANE verwendet wird oder nur auf opportunistisches TLS zurückgegriffen wird, kann in den Postfix-Logs nachvollzogen werden. Standardmäßig loggt Postfix in /var/log/mail.log.


Eindeutiger ist aber die Ausgabe von posttls-finger, die anzeigt, dass die TLS-Verbindung mittels DANE verifiziert wurde ("Verified TLS connection"):

posttls-finger <ausgehender Mailserver>


posttls-finger: dnssec-ws01.ws01.ws.dnssec.bayern[138.246.99.206]:25: depth=0 matched end entity public-key sha256 digest=C1:4E:6E:28:3B:34:3C:25:4B:33:80:ED:91:E5:71:8B:2E:60:10:A9:7C:7E:3A:30:BB:A0:1F:AE:61:5A:80:93
posttls-finger: dnssec-ws01.ws01.ws.dnssec.bayern[138.246.99.206]:25 Matched CommonName dnssec-ws01.ws01.ws.dnssec.bayern
posttls-finger: dnssec-ws01.ws01.ws.dnssec.bayern[138.246.99.206]:25: subject_CN=dnssec-ws01.ws01.ws.dnssec.bayern, issuer_CN=dnssec-ws01.ws01.ws.dnssec.bayern, fingerprint=0F:DB:31:72:9F:CA:2A:78:DE:C0:1F:55:F0:29:54:9B:DA:63:02:0E, pkey_fingerprint=E4:7F:D0:2D:C5:D9:5D:2A:41:52:29:DA:45:10:3E:0C:77:C7:92:B0
posttls-finger: Verified TLS connection established to dnssec-ws01.ws01.ws.dnssec.bayern[138.246.99.206]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)



Ein DANE-Test kann über ws.dnssec.bayern erfolgen. Dazu muss eine leere Email an die Adresse test@wsadm.ws.dnssec.bayern gesendet werden. Da Postfix nur dann eine Namensauflösung durchführt, wenn es sich nicht um unseren eigenen sendenden Mailserver handelt, müssen wir hier eine andere der Workshop-VMs als Empfänger angeben.


echo "" | mail test@wsadm.ws.dnssec.bayern


Wenn wir das Postfix-Log in /var/log/mail.log verfolgen, sehen wir, sofern der DANE-Eintrag im autoritativen Nameserver für wsadm.ws.dnsssec.bayern existiert, und mit dem Zertifikat, das uns das empfangende Postfix bereit stellt, übereinstimmt, verifiziert wird.



Feb 21 15:22:29 dnssec-ws01 postfix/smtp[44234]: dnssec-wsadm.wsadm.ws.dnssec.bayern[2001:4ca0:800:2:250:56ff:fe8f:3b68]:25: subject_CN=dnssec-wsadm.sadm.ws.dnssec.bayern, issuer_CN=dnssec-wsadm.dnssec.bayern, fingerprint=FF:66:0E:20:2F:E5:5A:57:47:B0:F2:13:CF:85:F0:4F, pkey_fingerprint=5F:8E:54:72:02:2D:BE:A5:95:48:ED:1A:BB:1D:5C:35
Feb 21 15:22:29 dnssec-ws01 postfix/smtp[44234]: Verified TLS connection established to dnssec-wsadm.wsadm.ws.dnssec.bayern[2001:4ca0:800:2:250:56ff:fe8f:3b68]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)