[ Reports & investigation ]

How to read a DMARC aggregate report and decide what needs attention

Read the reporter and period, distinguish raw authentication from aligned results, and prioritise verified business services rather than treating one pass percentage as the whole story.

By the EmailAuth research team · 7 min read

[ Key points ]

  • Read raw authentication, alignment and disposition separately.
  • State the denominator behind every percentage.
  • Prioritize critical legitimate failures over headline pass rates.
On this page

Source review dated 8 November 2026. Operational steps are proposed; only the explicitly labelled offline demonstration is executed. No live tenant, DNS or mail delivery is claimed.

Read a DMARC aggregate report in layers: who reported it and for what period, which policy was observed, which identities authenticated, whether they aligned and what disposition the receiver recorded. Those layers answer different questions.

The investigation should end with an action on a real service or a clearly recorded uncertainty. Start by establishing the report's population and field meanings, then connect material failures to the messages and workflows the organisation depends on.

Establish the report and policy context

Preserve the reporting organisation, reporting interval, report identifier, source file and processing history. Keep duplicate and overlapping observations under a documented rule so they do not silently inflate or reduce totals.

Check the policy configuration recorded by the reporter. A current DNS lookup does not reconstruct every observation made during an earlier report window. RFC 9990 §3.3 permits a reporting window to span a policy change: one report can contain dispositions from the old policy or a mixture, despite a single policy_published element, or the receiver can issue separate reports. Policy changes and differences between report formats need their own context.

RFC 9990 defines the current aggregate-reporting specification. Deployed collectors can also encounter legacy formats. Preserve schema and field meaning instead of forcing every file into an unexplained uniform interpretation.

Separate raw authentication, alignment and disposition

  • Field group: report_metadata; Investigation use: Reporter, reporting interval and report identity
  • Field group: policy_published; Investigation use: Policy configuration observed by the reporting receiver
  • Field group: row/source_ip and count; Investigation use: Connecting infrastructure and grouped message count
  • Field group: row/policy_evaluated; Investigation use: DMARC-aligned results and reported disposition
  • Field group: identifiers; Investigation use: Relevant envelope and visible From identities
  • Field group: auth_results; Investigation use: Underlying SPF and DKIM observations

In policy_evaluated, the SPF and DKIM results concern their DMARC alignment tests. The raw authentication information in auth_results can therefore contain a pass while the corresponding aligned result fails.

Disposition is another layer: it reports handling in the DMARC context. Local-policy overrides and other filtering mean it should not be used as a shortcut for either authentication success or final inbox placement.

Worked example: SPF passes for an unrelated domain

The following is a **synthetic record fragment**, not a complete report or schema-validation fixture:

<record>
  <row>
    <source_ip>192.0.2.44</source_ip>
    <count>40</count>
    <policy_evaluated>
      <disposition>none</disposition>
      <dkim>fail</dkim>
      <spf>fail</spf>
    </policy_evaluated>
  </row>
  <identifiers>
    <header_from>example.com</header_from>
  </identifiers>
  <auth_results>
    <spf>
      <domain>bounce.example.net</domain>
      <result>pass</result>
    </spf>
  </auth_results>
</record>

The raw SPF pass belongs to bounce.example.net. It does not align with the visible From domain example.com. With no aligned passing DKIM path in this illustrated row, the aligned results fail. The reported disposition of none does not repair that failure or prove inbox delivery.

To investigate, obtain a representative original message and the service configuration. Identify the application and its business owner. The IP alone does not establish which customer-specific service generated the mail.

Compare pass rates with business impact

This second synthetic example assumes that investigation has already identified the first two services:

  • Investigated stream: Employee mail; Observed messages: 29,500; DMARC result: Pass
  • Investigated stream: Password resets; Observed messages: 40; DMARC result: Fail
  • Investigated stream: Unknown traffic; Observed messages: 460; DMARC result: Fail

The observed overall pass rate is about **98.33%** (29,500 / 30,000). Among the two identified legitimate streams, it is about **99.86%** (29,500 / 29,540). Yet the password-reset stream fails completely in this example.

Neither percentage is a reason to ignore it. Prioritise the critical legitimate failure, continue attribution of the unknown traffic and state exactly which population each percentage describes. Do not rename the 460 unknown observations as blocked attacks without supporting investigation.

Investigate the communications that matter

Start with the business services: customer access, billing, employee communication and outsourced notifications. Ask which are represented in the evidence, which fail and who owns the correction.

Do not accept a single percentage without its denominator. A low-volume password-reset service can be completely broken while employee mail dominates a healthy-looking total. Unknown traffic should also be distinguished from confirmed abuse.

The operating question is whether the team can move from a finding to a verified resolution, not how many rows its dashboard displays.

Understand coverage and protect report inputs

Aggregate reports represent observations from participating reporting receivers. They are not an exact ledger of all email the organisation sent. Reconcile them with sending and provider data cautiously, including time boundaries, missing reports, forwarding and retries where relevant.

Ask how the team establishes approved-service attribution, handles uncertainty and tracks remediation. A cloud ASN, reverse-DNS name or geolocation is an infrastructure clue, not a definitive business identity or attacker location.

Protect reporting data and ingestion. Aggregate metadata can reveal operational information, and report inputs can be forged or malformed. Keep resource limits on decompression and XML parsing, preserve provenance and restrict unnecessary data access. Message-specific failure reports have a different exposure profile and can include sensitive content.

Turn a finding into a verified action

For every material finding, record the service or unresolved identity, affected period, evidence, business impact, owner and next verification step. After a configuration fix, test the real route and check subsequent relevant observations rather than waiting for an unexplained percentage improvement.

Use alignment diagnosis for raw-pass failures, the selector workflow for signing identities and the monitoring guide for the policy decision. Keep the report as supporting evidence for that work, rather than treating the dashboard as the control itself.

The practical takeaway

For each material finding, retain the evidence, attribution confidence, business impact, owner and next test. After a correction, verify the affected route and review subsequent observations. This turns reporting into an operating process rather than a collection of unexplained percentages.

Primary section references: RFC 9990 §3.1.1, RFC 9990 §3.3, RFC 9990 §3.5.4, RFC 9990 §7, RFC 9990 §8, RFC 9989 §4.4, RFC 9989 §5.3.5.

[ Takeaway ]

Prioritize critical legitimate failures over headline pass rates.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Read the evidence in its separate layers.

Retain reporter, period, policy context and source provenance. Compare auth_results with aligned policy_evaluated fields, then correlate material rows with original messages and service configuration.

Next steps

  1. Handle duplicate and overlapping observations under a documented rule.
  2. Keep disposition separate from pass and inbox placement.
  3. Verify a correction on the real route and subsequent observations.

CISO / SecOps

Review coverage, confidence and data handling.

Participating receiver reports are not a complete sent-mail ledger. Require honest coverage statements, accountable remediation and protected ingestion of potentially forged or malformed input.

Next steps

  1. Ask how approved-service attribution was established.
  2. Review access, provenance and parser resource limits.
  3. Record uncertainty and the business impact of unresolved findings.

Founder / Non-technical

Ask whether the important communications work.

A high pass rate can hide a completely failing password-reset service. Ask which business workflows are represented and which have unresolved delivery or authentication issues.

Next steps

  1. Request the denominator behind each percentage.
  2. Ask who owns the critical legitimate failures.
  3. Keep unknown traffic separate from confirmed abuse.

[ FAQs ]

Frequently asked questions

Does a DMARC report list every message my organisation sent?

No. It contains grouped observations from a reporting receiver over a stated period. Reporting participation and other population differences limit coverage.

RFC 9990 RFC 9989

Why can auth_results show SPF pass while policy_evaluated shows SPF fail?

The underlying SPF check can pass for an envelope domain that does not align with the visible From domain. Read the raw and aligned layers separately.

RFC 9990 RFC 9989

Does disposition none mean the message passed DMARC?

No. Disposition and aligned authentication results are separate fields. Interpret the report format, policy context and any local handling information.

RFC 9990 RFC 9989

Can I identify an approved sending service from source_ip alone?

Not reliably. Shared infrastructure and intermediaries can obscure the responsible application. Correlate messages, customer-specific configuration and a business owner.

RFC 9990 RFC 9989

Which denominator should I use for a pass rate?

State the purpose and population explicitly, such as all observed report traffic or investigated legitimate streams. Neither should be silently presented as every message sent.

RFC 9990 RFC 9989

Are all unknown failures attacks?

No. Unknown means attribution is unresolved. Legitimate applications, indirect routes and configuration problems can appear alongside unauthorised use.

RFC 9990 RFC 9989

Why can a report describe an older policy than my DNS lookup?

It describes an earlier reporting interval and the receiver's observations. Preserve configuration history and time boundaries instead of assuming the current record was always in effect.

RFC 9990 RFC 9989

What should be in the remediation record?

Keep the affected service or unknown identity, source evidence, reporting period, confidence, business impact, accountable owner, change made and the verification that follows.

RFC 9990 RFC 9989

[ Sources ]

Sources

  1. RFC 9990

    Sections §3.1.1 · §3.3 · §3.5.4 · §7 · §8

  2. RFC 9989

    Sections §4.4 · §5.3.5

[ Glossary ]

Glossary

Aggregate report
Grouped observations from a reporting receiver for an interval, not a complete sent-mail ledger.
Alignment
The required domain relationship between the visible From and an authenticated SPF or DKIM identity.
Disposition
Reported DMARC-related handling, distinct from proof of inbox placement.
Provenance
The source and processing history retained with an observation.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base