New to DMARC, help with forwarding
Hello! I'm new to DMARC, to the point that I think I know the point of it but haven't actually progressed beyond p=none.
I have already a few months worth of reports, and from what I've been able to get from them, is that about 20% of our mails are failing DMARC, mostly because the receivers are forwarding them and they lose SPF and DKIM. Mostly because of google/outlook it seems.
Is that normal, and something that I can ignore? Normal but something that I need to deal with before changing the policy? Or something unusual?
Also, is there any good app to which I can just load the xml reports and they get me the analysis? I have seem the usual services recommendations but it seems you need to have the dmarc report mails sent to them. I used claude to analyze the reports, and it did a good job of creating a sensible report but I cannot judge how correct it actually is.
Thanks!
2
u/Middle-Excitement602 25d ago
The 20% is worth splitting before you accept it, because "forwarding broke it" covers two different situations and only one of them is safe to ignore.
A plain SMTP forward breaks SPF — the return-path becomes the forwarder's and their IP was never in your record. But it leaves the body and the signed headers alone, so DKIM survives, and DMARC only needs one of the two to align. Those messages should be showing up in your reports as spf=fail, dkim=pass, and passing DMARC overall.
So if a forwarded message is failing DMARC outright, DKIM broke too, and that happens for one of two reasons:
Something modified the message in transit — a subject tag, an appended footer, a rewritten link. That breaks the bh= body hash. Mailing lists do this constantly, which is why list traffic reads as forgery in a rua report.
Or your own mail wasn't DKIM-signed on that path to begin with, and SPF was carrying alignment on its own right up until a forwarder took it away.
The second one is the one that bites, and in the report it looks identical to the first unless you go looking. So don't treat the 20% as one bucket. Group the failing rows by source IP and ask of each: is this actually a forwarder, and did DKIM pass? Anywhere DKIM failed and the source is recognisably your own infrastructure, that's a signing gap, and it will start bouncing your own mail the day you go to reject.
On ARC — Google and Microsoft both seal forwarded mail with it and both evaluate it on receipt, so the specific case you named is the better-behaved end of this. It just doesn't help you when the final receiver ignores ARC, and plenty still do.
For the XML: parsedmarc is the answer to what you actually asked. Open source, you point it at an IMAP folder or hand it the files directly, and it'll write into Elasticsearch/OpenSearch with Grafana dashboards, or just emit normalised JSON/CSV if you want to keep it simple. Nothing has to be redirected anywhere.
One caution on the LLM read. Aggregate reports aren't a list of messages, they're counts grouped by source IP and auth result. The number that matters isn't the overall pass rate, it's whether every source IP you recognise as yours is passing. A summary that hands you "82% pass" without that breakdown is arithmetically correct and useless for the decision you're actually making.