XiaTools

Understanding Forensic Reports (ruf) in DMARC Configurations

Updated 11 Oct 2026

DMARC forensic reports, designated by the ruf tag in your DMARC DNS record, provide near real-time copies of individual emails that fail SPF or DKIM authentication checks. While aggregate reports (rua) give you a broad statistical overview of your domain's email traffic, forensic reports zoom in on specific failure events, revealing the exact headers, subjects, and sometimes bodies of failing messages. This granular visibility helps security teams identify compromised sending infrastructure, trace sophisticated phishing campaigns impersonating your domain, and debug misconfigured legitimate services.

To ensure your overall policy syntax is correct before diving into individual failure logs, you can use the DMARC Checker tool to instantly validate your DNS records and catch formatting errors.

How DMARC Forensic Reports (ruf) Work

When a receiving mail transfer agent (MTA) encounters an email that fails DMARC evaluation, it has the option to generate a forensic failure report. This report is formatted as an Abuse Reporting Format (ARF) email or an XML payload, depending on the receiving provider's implementation. The MTA then attempts to deliver this report to the URI specified in the ruf tag of your domain's _dmarc TXT record.

Unlike aggregate reports, which are typically bundled and sent once per day, forensic reports are usually dispatched almost immediately after the failing message is processed. This immediacy makes them attractive for threat hunting, but it also creates significant volume and privacy hurdles.

The Anatomy of a ruf DNS Tag

To enable forensic reports, you must append the ruf tag to your existing DMARC record, pointing to a mailto address or an HTTPS endpoint that accepts ARF payloads. Here is an example of a standard DMARC record utilizing forensic reporting:

v=DMARC1; p=none; rua=mailto:dmarc-rua@example.com; ruf=mailto:dmarc-ruf@example.com; rf=afrf; fo=1;

In this configuration:

  • ruf=mailto:dmarc-ruf@example.com tells receiving servers where to send the forensic failure reports.
  • rf=afrf specifies the report format, with afrf (Abuse Feedback Reporting Format) being the standard.
  • fo=1 instructs the receiver to generate a forensic report if either SPF or DKIM fails, rather than requiring both to fail.

Setting Up DMARC Forensic Reporting

Deploying forensic reports requires careful planning because the volume of incoming emails can quickly overwhelm a standard mailbox. Follow these steps to configure your domain correctly.

Step 1: Dedicate a Secure Mailbox or Ingestion Service

Never point your ruf tag to your personal inbox or a primary corporate email address. Forensic reports often contain sensitive user data, and the high message volume can cause mailboxes to reach their storage quotas rapidly. Create a dedicated address such as dmarc-forensic@example.com or utilize a dedicated third-party DMARC analytics platform designed to parse ARF data.

Step 2: Update Your DNS Record

Access your DNS provider's management console. Navigate to your zone file editor and locate your DMARC TXT record, usually hosted at _dmarc.example.com. Update the record to include the ruf tag with your designated reporting URI.

Tag Description Example Value
v Protocol Version (Mandatory) DMARC1
p Policy for domain none, quarantine, reject
rua Aggregate report destination mailto:reports@example.com
ruf Forensic report destination mailto:forensic@example.com
fo Failure reporting options 0, 1, d, s

Step 3: Verify DNS Propagation

Use command-line utilities to confirm that your updated DMARC record is publicly visible across the internet. Open your terminal and run a query using dig or nslookup:

dig +noall +answer TXT _dmarc.example.com

Sample output:

_dmarc.example.com.  300  IN  TXT  "v=DMARC1; p=none; rua=mailto:reports@example.com; ruf=mailto:forensic@example.com; fo=1;"

If you are on Windows, you can use PowerShell to achieve the same result:

Resolve-DnsName -Name _dmarc.example.com -Type TXT

Reading and Parsing Forensic Reports

Reading raw forensic reports can be challenging because they arrive as raw MIME messages containing multiple parts. A typical forensic report includes:

  • Report Header Metadata: Information about the reporting mail server, original message ID, and arrival timestamp.
  • Authentication Results: Explicit details showing why the message failed SPF and DKIM.
  • Original Message Headers: The complete header set of the forged or failing email, allowing you to inspect the From, To, Subject, and routing paths.
  • Original Message Body (Truncated): Depending on the receiving provider and the rfmt settings, a portion or all of the email body may be included.

Here is an example of what an ARF forensic report looks like inside your mailbox:

From: <mailer-daemon@receiving-provider.example>
To: <dmarc-ruf@example.com>
Subject: Feedback Report: id 987654321
Content-Type: multipart/report; report-type=feedback-report;

--Boundary
Content-Type: message/feedback-report

Feedback-Type: abuse
User-Agent: DMARC-Aggregator/1.0
Version: 1.0
Original-Mail-From: <spoofed-sender@example.com>
Original-Rcpt-To: <victim@receiving-provider.example>
Authentication-Results: receiving-provider.example;
       spf=fail smtp.mailfrom=spoofed-sender@example.com;
       dkim=fail header.d=example.com
Reported-Domain: example.com

--Boundary
Content-Type: text/rfc822-headers

Received: from mail.attacker.example ([192.0.2.50])
          by mx.receiving-provider.example with ESMTPS id abc123xyz;
          Mon, 25 Oct 2023 10:00:00 GMT
From: Admin <security@example.com>
To: target@receiving-provider.example
Subject: Urgent Account Verification Required
...

Privacy Concerns and Mailbox Provider Support

One of the primary reasons forensic reports (ruf) are less universally adopted than aggregate reports (rua) is user privacy. Because forensic reports can include the original subject lines and message bodies of emails, they frequently expose Personally Identifiable Information (PII) or sensitive corporate data of innocent third parties.

Due to privacy regulations like GDPR and CCPA, many major mailbox providers (such as Google and Microsoft) either heavily redact forensic reports, truncate message bodies entirely, or choose not to send ruf reports at all. Before relying on forensic reports as your sole threat intelligence feed, verify that your key email partners actually generate and transmit them.

Common Mistakes and How to Fix Them

  • Pointing ruf to an External Domain Without Authorization: If you specify an email address on a different domain (e.g., ruf=mailto:alerts@partner.com), the receiving server will check for a validating DMARC record on partner.com to prevent spam amplification attacks. Ensure your partner domain publishes a policy allowing your reports.
  • Ignoring Mailbox Storage Limits: Setting up a ruf tag on a high-volume domain without automated log rotation or parsing will fill your mailbox within hours. Always use dedicated log-processing tools or cloud storage sinks.
  • Confusing fo=0 with fo=1: If your fo tag is set to 0 (the default), providers only send forensic reports when both SPF and DKIM fail to align. If you want visibility into partial failures, explicitly set fo=1.

Quick Checklist for DMARC Forensic Reports

  1. Establish a dedicated, high-capacity mailbox or parser endpoint for forensic logs.
  2. Add the ruf tag to your _dmarc DNS TXT record with a valid mailto: or HTTPS URI.
  3. Configure the failure options tag (fo=1) to capture both SPF and DKIM single failures.
  4. Validate your overall DMARC syntax using online tools to ensure no typos break parsing.
  5. Monitor mailbox storage consumption regularly to prevent dropped failure reports.

Frequently asked questions

What is the difference between rua and ruf in DMARC?

The rua tag specifies the destination for aggregate XML reports, which provide daily statistical summaries of your email traffic. The ruf tag specifies the destination for forensic reports, which deliver near real-time, individual copies of messages that fail DMARC authentication.

Why am I not receiving any forensic reports (ruf)?

Many major email providers (such as Gmail and Microsoft) restrict or disable forensic reporting due to privacy regulations like GDPR, because `ruf` reports can expose sensitive user data in message bodies and subject lines. Additionally, ensure your DNS record syntax is correct and your receiving mailbox is not full.

Are DMARC forensic reports sent in real time?

Yes, unlike aggregate reports that are typically bundled and sent out once every 24 hours, receiving mail servers generally generate and dispatch forensic failure reports shortly after processing a message that triggers a DMARC failure.

Can forensic reports cause my reporting inbox to get blacklisted?

If your DMARC domain is heavily spoofed by spammers globally, receiving servers will flood your `ruf` address with thousands of ARF failure notifications. This high volume can easily overwhelm standard email boxes, leading to storage exhaustion or throttling by your mail host.

What does the fo=1 tag mean in a DMARC record?

The fo=1 tag instructs receiving mail servers to generate a forensic report if either SPF or DKIM fails alignment, rather than waiting for both authentication mechanisms to fail simultaneously. This provides broader visibility into intermittent configuration issues.

Related articles

Free tools