DMARC Aggregate Reports (RFC 9990)
The XML aggregate feedback format — report structure, transport, filename and subject conventions, external-destination verification, and policy-override reasons.
Reference4 min read
Who it is for ESP operators, Senders
Applies to senders on any platform
ContentsOn this page — 6 sections
When your domain's DMARC record lists a rua= address, receivers send that address regular XML summaries of the mail that uses your domain. These aggregate reports are the main evidence for deciding when a domain is ready to move to Enforcement (see DMARC).
RFC 9990 defines the report format. It is a Standards Track specification published in May 2026, and one of the three DMARCbis documents that together obsolete RFC 7489, with RFC 9989 and RFC 9991.
What a report contains
A report is an XML document with the root element feedback and the namespace urn:ietf:params:xml:ns:dmarc-2.0. It has three parts:
| Section | Contents |
|---|---|
| Report metadata | The reporting organization's name, a contact email address, a unique report ID, and the start and end of the reporting period, in Unix seconds. |
| Policy published | The DMARC record the receiver found: the domain, p, sp and np, adkim and aspf, and how the record was discovered (exact match or Tree Walk). |
| Records (one or more) | The results for each source IP address: the row, the identifiers, and the raw authentication results described below. |
Per-record elements
| Element | Fields |
|---|---|
row |
The source IP address (IPv4 or IPv6); the message count for that combination of IP address and disposition; the disposition applied (none, pass, quarantine, reject); and the DKIM and SPF alignment results, pass or fail, as DMARC evaluates them. |
identifiers |
header_from, the RFC5322.From domain (required); envelope_from, the RFC5321.MailFrom domain (optional); and the envelope_to domain (optional). |
auth_results |
The raw result for each mechanism. DKIM entries give the domain, the selector (reporting it is mandatory in 9990), the result, and an optional note for people to read. SPF entries give the domain, the scope (mfrom) and the result. |
When a message carries many DKIM signatures, the receiver reports them in this order of priority: a strict aligned pass, then a relaxed aligned pass, then other passing signatures, then failing signatures. The specification recommends reporting at most about 100 signatures per row.
Policy-override reasons
When the disposition the receiver applied differs from the published policy, the record gives the reason:
| Reason | Meaning |
|---|---|
local_policy |
A local exemption at the receiver, often based on ARC (see ARC) |
mailing_list |
The receiver's heuristics detected a mailing list |
policy_test_mode |
The record's t=y test mode was in effect |
trusted_forwarder |
An exemption for a known forwarder |
other |
Any other reason, with an optional comment |
Timing and transport
- The reporting period is typically one UTC day, starting at 00:00 UTC. Periods SHOULD NOT overlap.
- Reports are delivered by email to each
rua=mailto URI. The receiver first discards any malformed URI, and must then attempt delivery to every URI that remains. - The payload SHOULD be GZIP-compressed XML (
application/gzip). Otherwise it is sent astext/xml. - The attachment filename follows the pattern
receiver!policy-domain!begin-timestamp!end-timestamp[!unique-id].extension, for examplemail.receiver.example!example.com!1013662812!1013749130.xml.gz. - The subject line follows the pattern
Report Domain: <policy-domain> Submitter: <reporter-domain> Report-ID: <id>. - The mail stream that carries the reports must itself pass DMARC with an aligned pass. Secure transport (STARTTLS or TLS) is recommended.
External report destinations
If a rua= address is outside the Organizational Domain of the policy domain, the receiver first confirms that the destination has agreed to receive the reports. It queries this record:
<policy-domain>._report._dmarc.<destination-host> (TXT)
The record must contain v=DMARC1, and it may override the report URI. If the record is missing, the receiver does not send reports to the external address. This is why third-party DMARC monitoring vendors either ask you to publish this "external destination verification" record on their domain's behalf, or already publish it on their own domain.
Changes from RFC 7489
- The XML schema (XSD) is tightened and clarified, and report identifiers are structured more rigorously.
- Reporting the DKIM selector is mandatory. Reporters under 7489 often left it out. With the selector, it is far easier to identify which system produced a failing signature.
- Awareness of Public Suffix Domains is built in, and an extension mechanism is added.
- The single RFC 7489 document was split into three: 9989 (core), 9990 (aggregate) and 9991 (failure).
Working with aggregate reports
- Reports are machine-readable XML and arrive daily from every major receiver. Nobody reads them by hand at scale, so route
rua=to a dedicated mailbox or to a DMARC analytics service. - Use them to answer one question: which sources send mail as my domain, and does that mail produce an aligned pass? Rows that fail both mechanisms from IP addresses you recognize point to a legitimate source that is misconfigured; fix SPF, DKIM or alignment. Rows from IP addresses you do not recognize point to spoofing or to shadow IT.
- When every legitimate source shows aligned passes for a sustained period, the domain is ready for
p=quarantineorp=reject.
Related articles
- DMARC
- DMARC standard reference
- DMARC failure reports
- Authentication-Results header, the same data for a single message
Check your own record
The free check reads what your domain publishes in DNS.
In this topic
All 13 in Authentication →