OpenDMARC Probleme und Konfiguration
Jochen Fahrner
jf at fahrner.name
Sa Sep 20 17:58:54 CEST 2014
Hallo,
in letzter Zeit habe ich die Liste mit OpenDMARC Problemen genervt,
danke für eure Geduld, dafür kommt jetzt hier die Lösung:
Zum Verständnis erkläre ich die Funktionsweise und die Voraussetzungen
für OpenDMARC (vereinfacht, nur so weit für's Verständnis nötig).
OpenDMARC ist kein eigenständiger Filter, sondern er verlässt sich auf
die "Authentication-Results" Header (im folgenden kurz "authres"
genannt) der SPF und/oder DKIM Filter, die zwingend *vorher* laufen
müssen. Er scannt dabei die authres Header die der eigene Mailserver mit
Typ "pass" erzeugt hat. Alle darin enthaltenen header.d Domains werden
gegen die Domain aus dem From-Header verglichen. Wird eine
Übereinstimmung gefunden gibts ein "pass", andernfalls wird gemäß der
Policy der Domain verfahren (none,quarantine,reject). Es genügt wenn
entweder SPF oder DKIM ein "pass" erzeugen.
Hat man für seine Domain die Policy "reject" eingestellt, läuft man in
ein paar Probleme:
1. Postfix hat einen Bug (angeblich aus Kompatibilitätsgründen zu
Sendmail): der erste eingefügte Header eines Postfix Policy Daemons wird
verschluckt. Der vom SPF-Daemon kommt also nicht beim OpenDMARC an. Das
ist nicht so tragisch, denn OpenDMARC kann die SPF-Prüfung auch selber
machen. Wichtig ist jedoch dass OpenDMARC mit der libspf2 compiliert
wurde, denn die eigenen SPF-Funktionen sind fehlerhaft. Um OpenDMARC
prüfen zu lassen gibt es die Option:
"SPFSelfValidate true"
am besten in Verbindung mit
"SPFIgnoreResults true"
Alternativ könnte man auch einen SPF-milter versuchen, dazu hatte ich
aber keine Lust, denn libspf2 ist sehr ausgereift und kommt auch mit
ipv6 und vielen SPF-includes klar.
2. OpenDMARC benötigt die Domains aus *allen* DKIM-Signaturen. OpenDKIM
liefert in der Default Konfiguration aber nur die erste gültige
Signatur. Bei dieser Liste ist das z.B. de.postfix.org. Die passt aber
nicht zu eurem From, und somit schlägt die Prüfung fehlt. Da bei Listen
auch euer SPF nicht gültig ist, wird die Mail ggf. rejected. Mit der
OpenDKIM(!) Option
"AddAllSignatureResults true"
Werden alle Signaturen geprüft und die Domains landen alle im authres
Header. Damit kann OpenDMARC dann die richtige Domain finden und ein
"pass" erzeugen.
3. Sendet ihr Mails mit einem Client von eurem DSL-Anschluss, so stimmt
die IP nicht mit eurem SPF überein. Da auch (noch) keine Signatur drin
ist, gibts wieder ein "fail". Um hier die Prüfung zu umgehen gibts die
Option
"IgnoreAuthenticatedClients true"
Leider hat die Version 1.3.0 einen Bug den ich hier berichtet habe:
http://sourceforge.net/p/opendmarc/tickets/103/
Wenn ihr OpenDMARC selber compiliert (z.B. wegen dem libspf2), dann
könnt ihr den leicht selbst beheben.
Hoffe etwas geholfen zu haben.
Gruss
Jochen
Mehr Informationen über die Mailingliste postfix-users