How to Read a DMARC Report (With Real Examples)

You published a DMARC record, pointed the rua tag at your inbox, and now you're receiving compressed XML files from Google, Microsoft, Yahoo, and others. You open one and see hundreds of lines of angle brackets, IP addresses, and cryptic status codes.
These are DMARC aggregate reports, and they're the most valuable tool you have for understanding who's sending email as your domain. But only if you can read them. Here's a practical guide.
What's in an aggregate report?
A DMARC aggregate report is an XML file covering a specific time period (usually 24 hours) from a single reporting organization. It contains two main sections:
- Report metadata: who sent the report, for which domain, and the time period it covers
- Records: one entry per unique combination of sending IP, authentication result, and disposition. Each record includes the IP address, message count, SPF result, DKIM result, and what the receiver did with the messages
The key fields to focus on
You don't need to read every XML tag. Focus on these fields in each record:
- source_ip: the IP address that sent the email. Look this up to identify the sending service (Google, SendGrid, your own server, etc.)
- count: how many messages came from this IP during the reporting period
- disposition: what the receiver did: none (delivered), quarantine (sent to spam), or reject (blocked)
- dkim: pass or fail, plus the domain that was checked (the d= value)
- spf: pass or fail, plus the domain that was checked (the envelope sender)
- alignment: whether the authenticated domain matches the From header domain. This is what DMARC actually cares about
What to look for
When analyzing your reports, ask these four questions for each record:
- Do I recognize this IP? If not, someone unknown is sending email as your domain. Look up the IP to determine if it's a forgotten service or an unauthorized sender.
- Is authentication passing? If a known sender fails SPF or DKIM, they need to be configured correctly. This is the most common issue.
- Is alignment working? Even if SPF/DKIM pass, the authenticated domain must align with your From domain. Many third-party senders break alignment by default.
- What's the disposition? If your policy is p=none but you see quarantine or reject actions, the receiving server is applying its own stricter policy.
A real-world example
Here's what a typical record looks like in a DMARC report (simplified):
This is what you want to see: a known sender (Google), passing both DKIM and SPF with alignment, and all messages delivered normally.
Now contrast that with a problematic record:
This IP is sending email as your domain, failing all checks, and still being delivered (because your policy is p=none). This could be a phishing attempt, or a legitimate service you forgot to authorize. Either way, it needs investigation.
The problem with manual analysis
A small domain receives dozens of reports per week. A busy domain can receive hundreds. Each report contains multiple records. The reports arrive compressed (ZIP or GZIP), and you need to decompress, parse the XML, resolve IP addresses, and aggregate data over time to spot trends.
This is exactly the kind of work that should be automated.
How MailShield automates this
MailShield receives your DMARC reports automatically, parses every record, resolves IP addresses to known services, and presents everything in a clear dashboard. You see who's sending email as your domain, whether they're authorized, and what needs to be fixed.
No more XML. No more IP lookups. No more guessing. Add your domain to MailShield and start seeing your DMARC data clearly. Free for up to 2 domains.