Technical guide

Understanding DMARC Aggregate and Failure Reports

Read DMARC XML with a worked example: distinguish authentication from alignment, investigate sending sources and choose the next action.

Published by The Vigilance Initiative GroupUpdated

Technical guidance only. Confirm changes against the current standards and your providers’ documentation before editing production DNS.

DMARC reports provide evidence about how participating receiving systems evaluated messages associated with a domain. They are most useful when combined with a verified sender inventory and samples from the organisation’s own mail systems.

There are two report types:

The formats and receiver behaviour are described in RFC 9990 and RFC 9991. The current DMARC protocol is RFC 9989.

Aggregate reports

An aggregate report summarises authentication observations over a reporting period. It is usually machine-readable XML, delivered to an authorised destination listed in rua.

A report can include:

It generally does not contain the message subject or body. Even so, source addresses, domain names, and operational patterns can be sensitive and should be handled under an appropriate access and retention policy.

Illustrative XML shape

<record>
  <row>
    <source_ip>192.0.2.10</source_ip>
    <count>12</count>
    <policy_evaluated>
      <disposition>pass</disposition>
      <dkim>pass</dkim>
      <spf>fail</spf>
    </policy_evaluated>
  </row>
  <identifiers>
    <header_from>example.com</header_from>
  </identifiers>
  <auth_results>
    <dkim>
      <domain>example.com</domain>
      <result>pass</result>
      <selector>billing</selector>
    </dkim>
    <spf>
      <domain>mailer.example.net</domain>
      <result>pass</result>
    </spf>
  </auth_results>
</record>

This is a synthetic record fragment, not a complete report or customer evidence. The domains and IP address are reserved for examples. It uses RFC 9990’s pass disposition; older-format reports may use none for a passing message. Neither value proves inbox placement.

Work from the fields to the next action

In this example, the visible From domain is example.com. Under auth_results, SPF passed for mailer.example.net, but that domain does not align with example.com. The row’s policy_evaluated/spf therefore says fail. DKIM passed with d=example.com, giving aligned DKIM and an overall DMARC pass. Raw authentication and DMARC alignment answer different questions. See RFC 9990’s report-field definitions and RFC 9989’s alignment rules.

Suppose your internal inventory lists an invoicing service. The next action is to ask its administrator whether the billing selector and sending path belong to that service, then compare an authorised sample’s headers. The XML alone does not identify the business system or its owner.

Observed pattern Next investigation Avoid this shortcut
Aligned DKIM passes; SPF does not align, as above Confirm the service owner and that normal messages follow the same signing path Adding the source IP to SPF merely because the alignment field says fail
SPF and DKIM authenticate only for unrelated provider domains Check that service’s supported customer-domain signing or return-path setup Assuming two raw authentication passes mean DMARC passes
An unrecognised source fails both alignment checks Compare customer inventory, provider configuration and controlled samples; leave it unresolved while evidence is missing Authorising the IP because it sends a large volume
A previously working path starts failing after a change Compare old/new headers and the exact DNS or provider change; assign a remediation owner Moving policy backwards or forwards solely from one row

The count of 12 belongs to this receiver, source and reporting period. It is not the customer’s total mail volume. Keep the report ID and period with the investigation so that a later report is not mistaken for evidence collected before the change.

Failure reports

Failure reports can provide message-specific information when a receiver detects a DMARC failure and chooses to generate a report. A domain requests them with ruf, but support and redaction vary by receiver.

Because a failure report can contain message or header details, it can carry greater privacy and data-handling risk than aggregate feedback. Do not assume it will be available, complete, or suitable for unrestricted storage.

An empty ruf mailbox does not mean that there are no failures. Many investigations should start with aggregate reports and controlled message samples.

Report destination authorisation

If the report address uses a different organisational domain from the domain publishing DMARC, the destination domain can be required to authorise the reporting relationship through DNS. This protects an unrelated domain from being made the target of unwanted report traffic.

Before relying on an external destination:

  1. confirm the exact mailto: address;
  2. complete the required external-destination authorisation;
  3. ensure the mailbox or ingestion service accepts the report format and volume;
  4. validate the public DNS result; and
  5. define access, retention, and deletion responsibilities.

Reading a report without jumping to conclusions

Start with the policy domain and date range

Confirm that the report applies to the expected domain and period. A report can reflect a policy observed before a recent DNS change.

Group by authentication pattern

Useful initial groups include:

DMARC passes when at least one supported mechanism both authenticates and aligns. A message does not need aligned SPF and aligned DKIM at the same time.

Map sources to known services

Reverse DNS, network ownership, and provider ranges can help generate a hypothesis, but they do not prove which business system sent the mail. Confirm the source with provider configuration, return-path data, DKIM signing domains, and internal service owners.

For a repeatable evidence path from an unfamiliar IP to an approved classification, use How to Identify Unknown Senders in DMARC Reports.

Examine the volume in context

Counts are observations from one receiver for one period. They are not a complete measure of all mail sent, all recipients reached, or all fraud attempted.

A low-volume source can still be business-critical. A high-volume source can be unauthorised, misaligned, or the result of receiver aggregation. Prioritise using business ownership and risk, not volume alone.

Distinguish policy request from receiver action

The policy-evaluated fields describe the receiver’s DMARC processing, including local-policy overrides where reported. DMARC policy is a request by the domain owner; a receiver can make a different final delivery decision.

Common patterns

SPF passes but DMARC fails

The SPF-authenticated envelope domain may not align with the visible From domain. Ask whether the provider supports a custom aligned return path, and check whether aligned DKIM is available.

DKIM passes but DMARC fails

The signature’s d= domain may not align with the visible From domain. A provider can validly sign with its own domain without satisfying DMARC for the customer’s From domain.

Both SPF and DKIM fail after forwarding

Forwarding commonly changes the connecting IP, which can break SPF. Message modification can also invalidate DKIM. ARC information may help a receiver apply local policy, but it does not convert the reported DMARC result into a pass.

A familiar provider appears from an unexpected range

Confirm the tenant and sending path. Shared infrastructure, a new supported range, or an unauthorised use are different cases and require different responses.

The record requests enforcement but disposition is none

Check whether the report shows a local-policy reason, a different effective policy, or a historical policy snapshot. Receiver discretion remains relevant.

Turning reports into changes

A practical review loop is:

  1. ingest and validate the report;
  2. group observations by source and authentication pattern;
  3. map each potential legitimate source to a service owner;
  4. confirm SPF, DKIM, and alignment using provider configuration and samples;
  5. create a controlled remediation or removal task;
  6. validate after the change using DNS, samples, and later reports; and
  7. record exceptions and unresolved sources before any policy progression.

Reports support decisions; they do not make the decision automatically. Avoid blocking a source merely because its IP is unfamiliar, and avoid authorising it merely because it sends a large volume.

Limitations to document

Frequently asked questions

How soon should reports arrive?

Allow for DNS publication, actual mail reaching participating receivers, and their reporting cycles. There is no universal arrival guarantee.

Can a report identify an individual sender?

An aggregate report normally groups technical observations. It should not be used to identify a person without appropriate, independent evidence and governance.

Does count equal messages sent by the source?

It is the reporting receiver’s aggregate count for that record and period. It is not necessarily the source’s complete sending total.

Should every failure be blocked before moving policy?

No. Investigate whether it is authorised, misconfigured, forwarded, or unauthorised. The policy decision should be based on domain-specific evidence and delivery risk.

Next step

If a domain has a valid DMARC reporting address but no data is arriving, work through why DMARC reports may be empty. For help reviewing public records and planning the next investigation, contact Vigil.