CYBER FORENSICS · PRIVACY & AI · LEGAL TECHNOLOGY · MANAGED ITCall us 24/7: (289) 582-9930
Guide

How to read DMARC aggregate reports

DMARC aggregate reports are XML files from Gmail, Microsoft, Yahoo and others telling you who sent mail using your domain and whether it passed. Read properly, they show you every forgotten sender and every spoofing attempt. Here is how to read one.

4 min readManaged IT

Reviewed by the ITRS security team · Last updated

What aggregate reports contain

When your DMARC record includes a rua= address, receiving mail providers send you aggregate reports, usually once a day, as compressed XML attachments. RFC 7489 defines the format. Each report covers one reporting organization, one domain and one time window. It doesn't contain message content or subject lines; it contains counts grouped by sending IP address and authentication result.

The main elements, in the order they appear:

XML elementWhat it tells you
report_metadata
Who sent the report (for example google.com), report ID and the date range covered
policy_published
Your DMARC record as the receiver saw it: domain, adkim, aspf, p, sp, pct
record > row > source_ip
The IP address that sent the mail
record > row > count
How many messages from that IP in this window
record > row > policy_evaluated
The disposition applied (none, quarantine, reject) and the DMARC-level dkim and spf results, which include alignment
record > identifiers
header_from (the visible From domain) and, from some reporters, envelope_from
record > auth_results
The raw DKIM result with the signing domain (d=) and the raw SPF result with the domain checked

Identifying legitimate senders

  1. Group by source IP and look it up

    Reverse DNS and IP ownership usually reveal the service: Microsoft's outbound protection ranges, Google's mail servers, Mailchimp, Salesforce, your payroll provider.

  2. Match against your sender inventory

    Every service on your list should appear. Anything you recognize but hadn't listed goes on the list now.

  3. Check the auth_results domains

    A legitimate service signing with its own domain (d=vendor-mail.com) rather than yours will pass DKIM but fail alignment. That sender needs custom DKIM set up with your domain.

  4. Look at volume and timing

    Regular volumes from a known provider are business as usual. A provider you recognize sending suddenly large volumes deserves a question to the department that owns it.

Spotting spoofing

Spoofing in aggregate reports usually looks like this:

  • Source IPs from residential ISPs, hosting providers or countries you don't do business in.
  • Both SPF and DKIM failing, with no DKIM signature at all or one from an unrelated domain.
  • Bursts of volume over a day or two, then nothing.
  • Your domain, or a subdomain you don't use, in header_from with no business reason.

Alignment failures and fixes

Pattern in the reportLikely causeFix
SPF pass in auth_results, spf fail in policy_evaluated
Service uses its own bounce (envelope) domain
Rely on DKIM with your domain, or set a custom return-path domain if the service supports it
DKIM pass for vendor domain, dkim fail in policy_evaluated
Service signs with its own domain
Set up custom DKIM with your domain (CNAME or TXT records the vendor provides)
SPF permerror
SPF record exceeds 10 DNS lookups (RFC 7208) or has a syntax error
Remove unused includes; move bulk senders to subdomains
Legitimate IP, both fail, small counts, varied receivers
Mail forwarded by a recipient's system or a mailing list
Usually acceptable; DKIM aligned at the original sender survives most forwarding
Microsoft 365 or Google Workspace itself failing DKIM
Custom-domain DKIM never enabled on the tenant
Enable DKIM signing for your domain in the admin centre

Tools and report processing

A small domain might get a handful of reports a day; a busy one can get dozens. Reading raw XML is fine for learning, not for routine work. Google's DMARC documentation suggests that if you receive many reports, a third-party DMARC service can collect, store and analyze them, and otherwise recommends a dedicated group or mailbox for them rather than a person's inbox.

When choosing a service, check where report data is stored (reports contain IP addresses and counts, not message content, but some services also handle failure reports, which can contain more), whether it can group sources by provider automatically, whether it alerts on new failing sources, and whether you can export data if you leave.

Point rua at an address on your own domain, or at the service's address. If the reporting address is on a different domain, RFC 7489 requires that domain to publish a record authorizing it to receive your reports.

Ongoing review

Sources: RFC 7489 (DMARC), including the aggregate report XML schema and external destination verification (section 7.1); RFC 7208 (SPF); Google Workspace 'Set up DMARC' and 'DMARC reports' help articles; M3AAWG Email Authentication Recommended Best Practices.

  • During rollout (p=none and quarantine ramp): review weekly.
  • At p=reject: review monthly, plus whenever a department adds a new email tool.
  • Track three things: legitimate sources failing (fix them), new unknown sources (investigate), and spoofing volume (proof the policy is working, useful for leadership and insurers).
  • Keep a copy of reports for at least a year. If your domain is used in fraud against a client, they help show what was sent and that your policy was in force.
Keep reading

Related reading.

Next step

Want this handled for your business?

Tell us your users, devices and sites. We are staffed 24/7 and reply with next steps. Quotes are built from your environment, not a price list. Active incident? Call (289) 582-9930, 24/7.