Quick Answer

DMARC aggregate reports (RUA) are XML files mailbox providers send daily, listing how many messages claiming to be from your domain passed or failed SPF and DKIM. Read them by parsing the source IP, DKIM signing domain, SPF return-path, alignment results, and disposition. Use them to identify legitimate senders to authorize and shadow senders to block before moving DMARC to quarantine or reject.

Reading DMARC Aggregate Reports Like a Pro

By Braedon·Mailflow Authority·Email Authentication·Updated 2026-05-16

DMARC aggregate reports are how you find out who is actually sending mail on behalf of your domain. They arrive as daily XML files from every major mailbox provider, listing each sending IP that claimed your From domain, what authentication results it produced, and what action the receiver took. Read correctly, they let you move from p=none to p=reject without breaking legitimate mail.

This guide covers the XML format, what each DMARC tag controls, how to interpret common patterns, and the workflow I use to take clients from monitoring to enforcement.

What's in a DMARC aggregate report

A DMARC aggregate report XML has three main sections:

<feedback>
  <report_metadata>
    <org_name>google.com</org_name>
    <date_range>...</date_range>
  </report_metadata>
  <policy_published>
    <domain>yourdomain.com</domain>
    <adkim>r</adkim>
    <aspf>r</aspf>
    <p>none</p>
    <pct>100</pct>
  </policy_published>
  <record>
    <row>
      <source_ip>192.0.2.1</source_ip>
      <count>1247</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>fail</dkim>
        <spf>pass</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>yourdomain.com</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>mailer.example.com</domain>
        <result>pass</result>
      </dkim>
      <spf>
        <domain>yourdomain.com</domain>
        <result>pass</result>
      </spf>
    </auth_results>
  </record>
</feedback>

The key fields per record:

  • source_ip — IP that sent the mail
  • count — number of messages from that IP in the period
  • header_from — From: header domain
  • dkim/spf auth_results — did each check pass on its own
  • policy_evaluated.dkim/spf — did each check produce DMARC alignment
  • disposition — what the receiver did (none / quarantine / reject)

DMARC tags reference

TagPurposeCommon value
vVersion (required)DMARC1
pPolicy for primary domainnone / quarantine / reject
spSubdomain policyinherits from p if absent
ruaAggregate report destinationmailto:dmarc@...
rufForensic report destination (rarely supported)mailto:dmarc-forensic@...
adkimDKIM alignmentr (relaxed) / s (strict)
aspfSPF alignmentr (relaxed) / s (strict)
pctPercent of mail to apply policy0-100
foForensic options0 / 1 / d / s
riReporting interval (seconds)86400 (24hr)
rfReport formatafrf (default)

For setup basics, see the DMARC setup guide.

What aggregate reports tell you

Once you start receiving reports, three things matter most:

  1. Which sources are sending as you? Group by source IP and authentication domain. You should recognize every high-volume source.
  2. Are legitimate sources aligning? A source can SPF-pass but DKIM-fail (or vice versa) and still produce DMARC alignment on one of the two. Look at policy_evaluated.
  3. Where is shadow IT happening? Surprise sources — a marketing team using a tool you didn't authorize, an old vendor still sending — show up clearly.

Practitioner note: I always find at least two unauthorized senders in the first month of DMARC reporting for any company over 50 employees. Marketing tools, recruiting platforms, HR systems, third-party survey vendors — they all send "from" your domain without anyone in IT knowing. Aggregate reports are the only way to see them.

Reading reports without parsing XML

The raw XML is unreadable at scale. Use a parser. The major options:

ToolFree tierNotes
dmarcian14-day trialMost mature, strong UI
Postmark DMARCFree, basicExcellent free option
EasyDMARCLimited freeSolid, agency-friendly
Valimail MonitorFree for small sendersAcquired by Proofpoint
MXToolbox DMARCPaidCombines with their other tools

For most senders, Postmark's free DMARC monitoring is the right starting point. Upgrade to dmarcian or Valimail if you need agency features.

Common patterns and what to do

Pattern 1: Single source, 100% pass, recognized sender → Healthy. Nothing to do.

Pattern 2: New source, 100% fail, unknown IP → Investigate. Could be shadow IT, could be a spoof attempt.

Pattern 3: Recognized sender, 60% pass / 40% fail → Misconfigured. Usually a sub-account or new domain not properly added to SPF/DKIM.

Pattern 4: Forwarded mail (university, association mailing lists) → SPF will fail because the forwarder rewrites the path. DKIM should still align if the original sender signed. This is normal and unavoidable.

Pattern 5: Sudden spike from unknown IP, very high volume, all DMARC-fail → Active spoofing campaign. Your DMARC policy is protecting you; verify recipients aren't being hit.

Practitioner note: The biggest mistake at the start of a DMARC rollout is reacting to forwarder fails as if they were spoofs. Mailing list forwarders break SPF by design. DKIM should still align because the body signature survives forwarding. Don't tighten policy until you've separated forwarders from real spoofs.

Moving from p=none to enforcement

The standard staged rollout:

  1. p=none for 4-8 weeks. Collect reports. Identify and authorize all legitimate senders.
  2. p=quarantine; pct=10 for 2 weeks. Sample-test.
  3. p=quarantine; pct=100 for 2-4 weeks. Monitor for issues.
  4. p=reject; pct=10 for 2 weeks.
  5. p=reject; pct=100. Done.

For the full path, see DMARC at 100% reject and DMARC none to reject.

When DMARC reports tell you nothing

If you're not receiving aggregate reports after 7+ days at p=none, check:

  1. The rua= mailbox actually exists and accepts external mail
  2. DNS for the rua mailbox's domain resolves
  3. If the rua mailbox is on a different domain than your DMARC record, you need an authorization record (_report._dmarc.yourdomain.com TXT "v=DMARC1" on the destination domain)
  4. The DMARC record itself is syntactically valid (validate with dmarcian or MXToolbox)

If you need help interpreting reports or planning a DMARC rollout, book a consultation. I do DMARC deployments from initial monitoring through enforcement for companies that need to clean up shadow senders and lock down their domain.

Sources


v1.0 · May 2026

Frequently Asked Questions

What are DMARC tags?

DMARC tags are the parameters in a DMARC TXT record that control policy and reporting. Required: v=DMARC1 (version), p= (policy: none/quarantine/reject). Common optional: rua= (aggregate report destination), ruf= (forensic report destination), sp= (subdomain policy), adkim= (DKIM alignment mode: relaxed/strict), aspf= (SPF alignment), pct= (percentage to apply policy).

What does the DMARC aspf tag do?

aspf controls SPF alignment mode. aspf=r (relaxed, default) lets SPF pass if the return-path domain shares an organizational domain with the From header (e.g., bounce.acme.com aligns with acme.com). aspf=s (strict) requires exact match. Most senders use relaxed; strict is for high-security setups like banks.

What does the DMARC adkim tag do?

adkim controls DKIM alignment mode. adkim=r (relaxed, default) lets DKIM pass if the d= signing domain shares an organizational domain with the From header. adkim=s (strict) requires the d= domain to exactly match the From header domain. Use relaxed unless you have a specific reason.

How often are DMARC aggregate reports sent?

Mailbox providers send aggregate reports once per 24 hours. The DMARC spec allows requesting a different interval (ri= tag), but most providers ignore non-default values. Expect daily reports from Google, Yahoo, Microsoft, and dozens of smaller receivers.

Where do DMARC aggregate reports get sent?

To the mailbox specified in the rua= tag of your DMARC record. Example: `rua=mailto:[email protected]`. Most senders use a parsing service (dmarcian, Postmark, EasyDMARC, Valimail) and point rua at their service-provided mailbox so the XML gets parsed into a readable dashboard.

Want this handled for you?

Free 30-minute strategy call. Walk away with a plan either way.