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