Blog/ Deliverability & authentication

Are DMARC Forensic Reports (ruf) Worth Enabling?

Nafiul HasanNafiul Hasan· 11 min read
Comparison of DMARC rua aggregate reports versus ruf forensic failure reports, showing which major receivers send failure reports and the privacy tradeoff of enabling ruf

The short answer

Usually no — start with rua (aggregate) reports only. Major receivers including Gmail and Microsoft 365 do not send forensic (ruf) reports, so a ruf address often collects little while creating a privacy risk: failure reports can carry message headers, subjects and recipient data. Add ruf only for short, targeted debugging.

Are DMARC forensic reports worth enabling? Usually not: Gmail and Microsoft 365 don't send ruf reports, and a ruf address can leak message data.

On this page
  1. 01Before you decide: rua vs ruf
  2. 02How to add a ruf tag, if you have a reason to
  3. 03Which providers actually send failure reports?
  4. 04Why am I not receiving DMARC forensic reports?
  5. 05A faster way to handle the reports that do arrive

Short answer: for most domains, DMARC forensic reports are not worth enabling. Start with aggregate (rua) reports and leave the ruf tag off. Whether DMARC forensic reports are worth enabling turns on two facts most setup guides skip — the largest mailbox providers do not send them, and the ones that do can hand you copies of message content you may not be allowed to keep.

A forensic report — the standard calls it a failure report — is a near-real-time copy of a single message that failed DMARC, delivered to the address in your ruf tag. In a narrow debugging window that can help. But Gmail and Microsoft 365 do not generate them, so on a typical domain a ruf address collects little beyond the occasional report from a smaller receiver, plus a standing privacy liability.

The ruf mechanism has been part of DMARC since the original specification (RFC 7489, 2015). It was designed for a narrow diagnostic window: a team actively chasing an alignment failure who needs the exact headers of the failing message, not just counts in a daily XML file. That original use case still exists — but it has always depended on receiver support that the largest providers have never provided, which is the central problem with treating ruf as a routine reporting channel.

This guide covers what a failure report contains, why the major receivers withhold them, how to add a ruf tag if you have a specific reason to, and what to check when the reports never arrive. The recommendation sits at the top and does not change: rua first, ruf only for a reason.

Before you decide: rua vs ruf#

DMARC has two reporting channels, set by two separate tags, and they do very different jobs. Mixing them up is the root of most bad ruf decisions.

The rua tag collects aggregate reports — a daily XML summary of counts and pass/fail results, grouped by sending IP, with no message content. The ruf tag collects failure reports — an individual copy of a failing message, sent within moments of the failure, that can include the message's headers and, depending on the receiver, its subject, recipients and body.

That difference is the whole decision. One channel tells you which sources fail and how often; the other hands you the failing messages themselves. The first is safe to run indefinitely. The second is not.

Dimensionrua (aggregate)ruf (failure / forensic)
Tag in your recordrua=mailto:ruf=mailto:
What it containsCounts and pass/fail results by source IP, no message contentA copy of one failing message: headers, and possibly subject, recipients and body
TimingBatched, usually one report per receiver per dayNear real-time, one report per failure
VolumePredictable, a handful of files a dayUnbounded, a spoofing run can flood the mailbox
Receiver supportWidely sent by Gmail, Microsoft 365, Yahoo and othersRarely sent, and neither Gmail nor Microsoft 365 sends any
Privacy exposureLow, IP addresses and counts onlyHigh, can carry personal data from real messages
FormatAggregate XML schema (email attachment)ARF message/feedback-report, RFC 5965 with the RFC 6591 auth-failure extension

Failure reports can carry personal data

A failure report is a copy of a real message that failed DMARC. When that message is a spoof of your domain, its content is the attacker's. But when it is legitimate mail that failed on a misconfiguration, the report can contain your users' or customers' subjects, recipients and body text. Sending that to a ruf mailbox, and especially to a third-party service, moves personal data outside your control. Under regimes such as the GDPR that is a processing decision you have to be able to justify, and it is a large part of why most receivers stopped sending failure reports.

How to add a ruf tag, if you have a reason to#

If you have a specific, time-boxed reason — you are chasing a stubborn alignment failure and the aggregate reports aren't enough to pin it down — here is how to add ruf without making a mess. Treat it as temporary from the start.

  1. 1

    Create a dedicated mailbox

    Point ruf at a shared mailbox or group made only for reports, never a person's inbox. Use a separate address from your rua mailbox so failure reports don't drown the aggregate stream you actually read.

  2. 2

    Add the ruf tag alongside your existing rua

    Append the ruf value to your current record and keep rua in place. For example: v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]. Keep p=none while you diagnose so you don't reject mail you are still investigating.

  3. 3

    Plan for the content, don't rely on redaction

    The failure-reporting options (fo) tag governs what triggers a report and how much of it arrives. fo=0 (the default when the tag is absent) sends a report only when every checked authentication mechanism fails — the strictest filter and the fewest reports. fo=1 sends a report when any single mechanism fails, which is more verbose but catches more of the alignment edge cases that fo=0 would suppress. fo=d and fo=s narrow reports to DKIM-only or SPF-only failures respectively. For a focused debugging session, fo=1 is usually the most useful value: it surfaces the alignment failures that the default would miss because one mechanism happened to pass. Whatever you set, assume every report may contain live message data. Some receivers strip content, but you cannot count on it, so treat the mailbox as sensitive from day one.

  4. 4

    Set a removal date

    Put a calendar reminder to strip the ruf tag once you have found the problem. A ruf tag left on indefinitely collects almost nothing from the major providers and everything from a spoofing run — the wrong side of both trades.

A ruf tag left on is a standing liability

Because a failure report is generated per failing message, a burst of spoofed mail using your domain can turn a ruf address into an inbound flood in minutes — each message a copy you now hold. Combined with the privacy exposure, this is why leaving ruf enabled after a debugging session is a net loss, not a harmless extra data source.

Which providers actually send failure reports?#

This is the fact that settles the question for most domains. The receivers that hold the bulk of the world's mailboxes do not send failure reports, and they say so in their own documentation.

The deeper question is why — and the answer is not technical. The ARF format works perfectly well, and the infrastructure cost of generating a per-message report is not the blocker. The reason most large receivers stopped sending failure reports, or never started, is the legal and privacy arithmetic. Under the GDPR and equivalent regimes that came into force around 2018, forwarding the content of a real message to a third-party address — even the sending domain's own reporting mailbox — requires a legal basis the receiver cannot establish on the sender's behalf. If the failing message is legitimate mail that broke on a misconfiguration, the receiver is effectively routing personal data from its own users to an endpoint controlled by the sending domain, without any specific consent from those users. That is a liability major providers declined to carry. The result is that failure reporting became quietly vestigial even in standards that still include it.

Microsoft is explicit: Microsoft 365 does not send DMARC forensic reports, also known as failure reports, even when a valid ruf address exists in the sending domain's record. Google's DMARC documentation describes only aggregate (rua) reports and offers no failure reporting. So on a domain whose mail lands mostly at Gmail and Outlook, a ruf address hears from neither of the two biggest sources. The providers that do occasionally send failure reports tend to be smaller, regional mail operators or self-hosted mail servers where an administrator kept the feature on from an earlier era. Even then, what arrives is often stripped: headers only, no body, sometimes not even a complete header set. It is technically an ARF failure report, but it rarely tells you more than a careful reading of your aggregate data already would.

The table below is current as of August 2026. Providers change reporting policy, so confirm on each receiver's own postmaster or admin documentation before you rely on any single row.

A balance weighing rua-only reporting against rua-plus-ruf: on one side, aggregate reports with low privacy risk and wide receiver support; on the other, failure reports with high privacy exposure and almost no support from Gmail or Microsoft 365.
For a domain whose mail lands mostly at Gmail and Outlook, adding ruf changes almost nothing you receive — and adds a standing privacy liability.
ReceiverSends aggregate (rua)?Sends failure (ruf)?Source
Gmail / Google WorkspaceYesNot offered — its docs describe rua onlyGoogle Workspace Help
Microsoft 365 / Outlook.comYes, when the MX points directly to Microsoft 365No — stated explicitlyMicrosoft Learn
Most other large providersCommonly yesRarely — most do notVerify on each postmaster page
Some smaller / regional receiversVariesOccasionally — this is where ruf reports come fromVerify per receiver

Why am I not receiving DMARC forensic reports?#

If you added a ruf tag and nothing arrives, the usual cause is not a broken record — it's that the receivers you send to don't send failure reports. Before you assume a DNS problem, rule out the ordinary explanations.

  • Your mail lands mostly at Gmail and Microsoft 365. Neither sends failure reports, so the two biggest sources are silent by design. This is the most common reason, and there is nothing to fix.
  • Your rua works but your ruf does not. That is expected: aggregate support is near-universal, failure support is rare. Seeing daily aggregate reports but no failure reports is normal, not a misconfiguration.
  • Your report address is in a different domain and isn't authorized. If your ruf mailbox is at a domain other than the one being monitored — for example, your sending domain is company.com but your ruf address is [email protected] — then example.net must publish a TXT record at _report._dmarc.company.com within the example.net zone, containing v=DMARC1. Without it, compliant receivers silently drop the forensic report rather than deliver it, and no error is surfaced anywhere. The same mechanism applies to rua aggregate reports: if your aggregate reports are arriving from the same cross-domain mailbox, the authorization record is in place and the absence of forensic reports is purely a receiver-support issue, not an authorization gap.
  • A syntax error in the tag. A malformed ruf value is silently ignored. Recheck the full record with a DMARC lookup and confirm there is only one _dmarc TXT record.
  • The receiver redacts or rate-limits. Some receivers that technically support failure reports send them sparingly or strip content down to near-uselessness — so even a working setup can look empty.

No failure reports is usually the correct outcome

For most domains the right number of failure reports is close to zero. If your aggregate (rua) reports are arriving, your DMARC reporting is working. The absence of ruf reports reflects receiver policy, not a fault in your record, and it is not a gap you need to close.

A faster way to handle the reports that do arrive#

Whether or not you enable ruf, the reports you do get — aggregate XML every day, plus the rare failure report — land as attachments in a mailbox, and left alone they bury the mail you actually read. The manual fix is a dedicated mailbox and a set of filters. That works, and the steps above still stand.

Doing it continuously is where a mail client helps. AI Emaily is an AI email client, not a DMARC monitor — it does not parse these reports into dashboards, and if you want per-source trend charts you should use a dedicated DMARC reporting service. What it does own is the inbox the reports arrive in: its rules and Context Brain can file every DMARC report out of your main view, keep failure reports — which may carry live message data — in a locked-down folder, and run the same phishing defense across them as the rest of your mail. We build AI Emaily; you can see what it does in one page at aiemaily.com.

Frequently asked

Nafiul Hasan

Written by

Nafiul Hasan

Nafiul Hasan is an entrepreneur and AI automation system builder with 10+ years of experience turning messy, manual workflows into reliable automated systems. He designs and ships AI enterprise solutions end-to-end — the agent logic, the data plumbing, and the product people actually use — and founded AI Emaily to give busy professionals their attention back. He writes here from the builder's seat: what works, what breaks, and how to put AI to work without giving up control.

EntrepreneurAI Automation System BuilderAI EnthusiastBuilds AI Enterprise Solutions10+ years experience
More from Nafiul
Ready when you are

Keep DMARC reports out of the mail you actually read

AI Emaily files the daily report stream aside and triages the inbox that matters — approval-first, with undo and audit. Start a 7-day free trial; see plans at aiemaily.com/pricing.

  • 7-day free trial
  • Cancel anytime
  • Every provider