Skip to Main Content
Back to ResourcesEmail News

How do I read and understand DMARC reports?

Samuel ChenardBy Samuel ChenardAugust 9, 2023Updated September 21, 202612 min read

In brief

Learn how to read DMARC aggregate reports, interpret SPF and DKIM alignment, investigate unknown senders, and prepare safely for enforcement.

How do I read and understand DMARC reports?

DMARC aggregate reports show which IP addresses participating receivers observed sending mail with your domain in the visible From: address, along with SPF, DKIM, alignment, and policy results. Use those rows to find sender candidates and authentication problems, but do not treat a familiar provider name, passing result, or quiet reporting period as proof that a sender is approved or that the inventory is complete.

DMARC (Domain-based Message Authentication, Reporting, and Conformance) is an email authentication protocol that builds on SPF and DKIM. Its reporting channel is what turns authentication from a guess into a measurable process.

That visibility is often missing: the State of DMARC 2026 research found that 21.0% of domains with a valid DMARC record published no aggregate-reporting address at all.

The two DMARC report types

DMARC reports come in two forms, and they answer different questions.

Side-by-side comparison of DMARC aggregate reports and failure (forensic) reports. The two DMARC report types and what each tells you about your domain's email.
  • Aggregate reports (RUA) are XML summaries that participating receivers can send daily or more often. They group messages into rows by source IP, evaluated identities, authentication results, alignment, and policy disposition. Aggregate reports are the main evidence for discovering sender candidates such as a billing platform, helpdesk, marketing tool, or forged source before enforcement. RFC 9990 defines the fields and reporting behavior.
  • Failure reports (RUF), sometimes called forensic reports, concern individual authentication failures and can expose message-level data. Availability depends on the receiver, and privacy concerns limit their usefulness as a dependable inventory source. Build the operating process around aggregate reports; treat any failure report as sensitive supplemental evidence.
The takeaway: build your process around aggregate reports, and only enable ruf= if you have a dedicated, privacy-aware processor ready to receive the occasional sample.

If you want to keep aggregate-report processing in infrastructure you control, compare open-source DMARC analyzer operating models before choosing a parser.

Understanding the DMARC tags behind reporting

Your DMARC record (a TXT record at _dmarc.yourdomain.com) controls both policy and where reports go. Three tags matter most when you are reading reports:

  • p requests the assessment policy for mail that fails DMARC: none, quarantine, or reject. The receiving system retains discretion, so a published policy is not a guarantee that every receiver will handle a message identically. This is the value you will see echoed in the report's policy published section.
  • rua names the address that should receive aggregate reports, written as a mailto: URI (for example, rua=mailto:dmarc@yourdomain.com). This is the tag that actually produces the data you will read day to day.
  • ruf names the address for failure reports. Because those reports can expose message-level data, only request them when a dedicated, privacy-aware processor is ready to receive and protect them.
To build or correct a record, the DMARC record generator walks you through valid tag syntax, and how to set up DMARC covers the safe rollout order.

Reading a DMARC aggregate report

Aggregate reports arrive as XML, which is meant for a machine, not your eyes. The fastest path is to feed the file to a report reader that renders it as a sender table. But it helps to know what the underlying sections mean so the rendered view makes sense.

Six steps for reading a DMARC XML report, from opening the file to investigating failures. Follow these steps each time you review a DMARC XML report.
  1. Open the report. It usually arrives as an XML attachment (often gzipped) or through a monitoring dashboard.
  2. Read the report metadata. The header names the reporting organization, the date range covered, and your domain. Context that tells you which report you are looking at.
  3. Check the policy published. This section shows the DMARC policy the receiver saw for your domain (none, quarantine, or reject) and any subdomain policy, confirming your record was read as you intended.
  4. Work through the record rows. Each row is a sending source: its IP address, the message count, the SPF and DKIM results, whether each aligned with your From: domain, and the disposition (what the receiver did).
  5. Identify sender candidates. Correlate the source IP and authentication domains with a possible sending service, then find the accountable business owner. A recognizable network or vendor name is a lead, not an authorization decision.
  6. Investigate the evidence. For each material source, preserve the report period and inspect a newly delivered message from the claimed production path. Confirm the visible From: domain, SPF identity, DKIM d= domain, alignment, business purpose, and owner before authorizing, remediating, retiring, or escalating it.
The single most important field is alignment. DMARC needs only one of SPF or DKIM to pass and align with the visible From: domain, not both. A source showing SPF fail but an aligned DKIM pass can still pass DMARC. Authentication success still does not prove that the business approved the sender.

What a DMARC report row proves and what it does not

DMARC aggregate evidence is deliberately narrow. Keep the technical result separate from the organization's authorization decision.

Evidence in the reportWhat it supportsWhat it does not prove
Source IP and message countA participating receiver observed that source using the author domain during the report periodWhich application or team owns it, or whether every receiver saw the same traffic
SPF result and evaluated domainHow the reported SPF identity authenticatedThat SPF aligned with the visible From: domain, or that the business approved the service
DKIM result, d= domain, and selectorHow a reported signature validatedThat the signed domain aligned, or that every production path uses the same signature
DMARC-aligned SPF or DKIM passThe messages in that row satisfied DMARC through at least one aligned mechanismThat the sender is legitimate, still needed, or safe to add to another authentication record
none, quarantine, or reject dispositionThe receiver's reported DMARC disposition for that rowA universal delivery outcome; local policy and other filtering can change handling

RFC 9990 separates raw authentication results from the DMARC alignment results and reported disposition. That separation is why an IP lookup or SPF pass alone is insufficient for a sender decision.

What the disposition and policy values tell you

Every report echoes the policy the receiver discovered, and each row includes the DMARC disposition it reported after evaluation. none, quarantine, and reject express progressively stronger requested handling, while receiver overrides and other filtering can produce a different final outcome. The common rollout path is none → quarantine → reject, tightening only after the organization has identified material senders, resolved alignment gaps, recorded exceptions, and prepared a rollback. For choosing between the last two stages, see DMARC reject vs quarantine.

Common issues when reading DMARC reports

Most of the trouble people hit with reports comes from a handful of predictable causes. Here is how to recognize and fix them.

I'm not receiving any reports

Three things cause silence. First, check rua syntax: the address must be a full mailto: URI, and a typo means no delivery. Second, if reports go to an address on a different domain than the one being reported on, that receiving domain must publish an authorization record (a TXT record at yourdomain._report._dmarc.receiver.com with v=DMARC1) or receivers will refuse to send. Third, give it time. Many participating receivers send reports daily, while RFC 9990 permits more frequent reporting; a brand-new record or a domain that simply sends very little may take a day or two to produce anything. Confirm your record is live and correct with the DMARC checker.

The XML is unreadable

That is expected. Aggregate reports are structured for a parser, not a person, so raw XML full of and tags will always look dense. Do not try to read it by hand, load the file into a DMARC report reader or monitoring service, which turns the XML into a plain sender-by-sender table with pass/fail counts.

A legitimate sender shows SPF fail but DKIM pass. Is that a problem?

The affected messages can pass DMARC through an aligned DKIM signature even when SPF fails. Investigate an unexpected SPF failure anyway: it can reveal a changed or misconfigured production path, and maintaining aligned SPF and DKIM gives the sender more resilience if one mechanism later breaks.

Forwarded mail shows as failing

Forwarding often breaks the original SPF path because the forwarding server is evaluated instead of the original sender. DKIM can survive simple forwarding, but a forwarder or mailing list that modifies signed content can also invalidate the signature. Inspect the message's trusted receiver-added Authentication-Results, the aligned DKIM signature, and any ARC evidence before choosing a fix; RFC 8601 explains why authentication results are only trustworthy inside a defined receiving boundary.

Reports show a source I don't recognize

Treat an unknown source as unresolved until evidence and an accountable owner support a decision. Start with a DNS lookup and provider correlation, but do not classify the source from the hostname, country, or network owner alone. Ask the teams responsible for billing, HR, marketing, support, and transactional applications whether they use the service, and request a newly delivered message from the claimed production path.

Then compare four things:

  1. Report evidence: source IP, volume, report period, evaluated domains, and alignment.
  2. Message evidence: visible From:, envelope domain, DKIM d= domain and selector, plus trusted receiver-added authentication results.
  3. Business evidence: named owner, purpose, expected volume, and confirmation that the service should continue sending as the domain.
  4. Configuration evidence: the sender platform's current domain-verification state and the exact SPF or DKIM change it requires.
Classify the source as authorized, pending confirmation, unauthorized, retired, or exception. Only an authorized sender with a verified authentication gap should move into remediation. A service name, SPF include, passing DKIM signature, or use by another team does not authorize it. If no owner can confirm the source, preserve the evidence and escalate it instead of expanding SPF or changing policy.

If repeated unknown-source investigations are prompting a software purchase, use the DMARC software evaluation checklist to compare how vendors handle the evidence. Once you have a shortlist, use the DMARC proof-of-concept plan to test that workflow with a representative sender.

How reports fit into email authentication

DMARC does not authenticate anything on its own. A receiver evaluates the results of SPF and DKIM against the From: domain, then chooses local handling informed by the domain owner's requested policy. Reports record, source by source, whether those checks passed and aligned, which is why fixing a failing sender always comes back to correcting its SPF or DKIM setup. You can see all three mechanisms for your domain at once with the Email Security Score, or check a single record with the SPF and DKIM tools.

Reviewed on a regular cadence, DMARC reports surface new sender candidates and authentication changes. Combined with owner confirmation and production-message evidence, they support a safer decision about remediation and enforcement.

A note on the standard: for its first decade DMARC was defined by RFC 7489. In 2026 the IETF published RFC 9989 for the core protocol, RFC 9990 for aggregate reporting, and RFC 9991 for failure reporting. Together they obsolete RFC 7489. Use the current documents when interpreting fields and policy behavior.

For sender-specific authentication failures after classification, see Why DMARC Fails and How to Fix It.

Evidence

Sources and further reading

Questions readers ask

Frequently asked questions

How often do DMARC reports arrive?

Participating receivers commonly send aggregate reports daily, and RFC 9990 also permits more frequent reporting. A domain may receive separate reports from multiple organizations, but the absence of a report does not prove the absence of mail. Plan review around the reporting organizations and periods you actually receive.

Do I need a paid tool to read DMARC reports, or can I use the raw XML?

You can technically open the XML yourself, but it does not scale past a couple of sources and is easy to misread. A report reader or monitoring service aggregates the reports actually received from participating receivers into one sender view, tracks changes over time, and flags failures. That makes ongoing review more practical, but the resulting view still needs owner confirmation and delivered-message evidence before an enforcement decision. The raw file is fine for a one-off spot check, not for ongoing management.

Should I turn on RUF (failure) reports?

Only if you have a specific reason and a privacy-aware place to send them. Because failure reports can expose message-level data, many operators restrict or disable them. Aggregate reports are the primary evidence for most enforcement work, but reconcile them with accountable owners and newly delivered production messages before changing policy.

My reports are clean but mail still lands in spam, why?

DMARC reports only tell you about reported authentication, alignment, and disposition; they say nothing about content, sending reputation, list hygiene, or blocklist status. A DMARC pass rules out DMARC failure for the affected messages, but unreported paths, other provider-specific authentication requirements, reputation, engagement, and infrastructure still need separate checks.

How long should I read reports before moving to enforcement?

Review reports for at least one full sending cycle, including known monthly, quarterly, seasonal, and exception paths. Do not assume the window discovered every sender: reconcile the observed rows with application owners and newly delivered messages, document unresolved sources and rollback conditions, then make each policy-stage decision through the organization's change process.

Turn DMARC findings into a managed fix path

Start in Palisade.

Get started

Share this article

Samuel Chenard

Written by

Samuel Chenard

CEO & Co-Founder, Palisade

Samuel Chenard is the CEO and co-founder of Palisade, agentic DMARC software for IT teams and MSPs, from one domain to thousands.

More from Samuel →

Related articles and tools