1. What are DMARC XML Reports? Your Email Program's Black Box Recorder
DMARC (Domain-based Message Authentication, Reporting, and Conformance) does two critical things. First, it tells receiving mail servers what to do when emails from your domain fail authentication (do nothing, quarantine, or reject). Second—and equally importantly—it instructs those receiving servers to send you detailed reports about who's sending email using your domain.
These reports, delivered as XML files, are your window into the global email ecosystem that uses your domain name. Every time a receiving server processes an email claiming to come from your domain, it sends you data about that message: the sending IP address, whether SPF and DKIM passed or failed, and what action the server took based on your DMARC policy.
For email professionals, DMARC reports are invaluable. They reveal unauthorized senders (spoofers), compromised servers, misconfigured email systems, and emerging blacklist risks before those risks impact your deliverability.
2. Aggregate (RUA) vs. Forensic (RUF) Reports – Understanding the Difference
DMARC defines two types of reports, but in practice, you'll primarily work with aggregate reports.
Aggregate Reports (RUA - Reporting URI for Aggregate)
What they contain: High-level statistical data about messages claiming to come from your domain, including source IPs, authentication results, counts, and policy actions taken.
Format: XML files, typically sent daily or weekly in compressed (gzip) format.
Privacy implications: Low. Aggregate reports contain no message content or recipient identifiers—just metadata about authentication outcomes.
Availability: Most mailbox providers send aggregate reports reliably. Google, Microsoft, Yahoo, and others all support RUA reporting.
Forensic Reports (RUF - Reporting URI for Forensic)
What they contain: Copies of individual messages that failed DMARC authentication, including headers and portions of the body.
Format: Email messages with attachments containing the offending email.
Privacy implications: High. Forensic reports may contain personally identifiable information (PII) from the original message, raising GDPR and privacy law concerns.
Availability: Declining. Due to privacy concerns, most major providers (including Google and Microsoft) no longer send forensic reports. Even those that do send them require you to verify your identity and agree to privacy terms.
Practical Recommendation
Configure RUA reporting for all your domains. RUF reporting is increasingly impractical—most providers won't send them, and even if they do, the privacy risks often outweigh the benefits. Focus your efforts on analyzing aggregate reports, which provide 95% of the value with none of the privacy headaches.
3. Anatomy of a DMARC Aggregate XML File – Reading the Raw Data
Raw DMARC XML reports can be intimidating, but they follow a predictable structure. Here's a real example annotated to show what each section means:
<feedback>
<report_metadata>
<org_name>google.com</org_name>
<email>noreply-dmarc-support@google.com</email>
<report_id>1234567890</report_id>
<date_range>
<begin>1672531200</begin> <!-- Unix timestamp -->
<end>1672617600</end>
</date_range>
</report_metadata>
<policy_published>
<domain>yourdomain.com</domain>
<adkim>r</adkim> <!-- DKIM alignment mode: r=relaxed, s=strict -->
<aspf>r</aspf> <!-- SPF alignment mode -->
<p>reject</p> <!-- DMARC policy: none, quarantine, or reject -->
<sp>none</sp> <!-- Subdomain policy -->
<pct>100</pct> <!-- Percentage of messages subject to policy -->
</policy_published>
<record>
<row>
<source_ip>203.0.113.45</source_ip>
<count>1523</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>pass</dkim>
<spf>fail</spf>
</policy_evaluated>
</row>
<identifiers>
<header_from>yourdomain.com</header_from>
</identifiers>
<auth_results>
<spf>
<domain>yourdomain.com</domain>
<result>pass</result>
</spf>
<dkim>
<domain>yourdomain.com</domain>
<result>fail</result>
</dkim>
</auth_results>
</record>
</feedback>
Key Elements to Understand
- source_ip: The IP address that sent the email. This is your most critical data point.
- count: How many messages from this IP during the reporting period.
- policy_evaluated: The overall authentication result based on SPF + DKIM + alignment.
- disposition: What the receiving server did with the message (none, quarantine, reject).
The most valuable insight comes from comparing source_ip against your known authorized senders. Any IP sending significant volume that isn't in your SPF record or doesn't have DKIM signing is a potential problem.
5. Finding SPF and DKIM Alignment Mismatches – The Authentication Gaps
Even when SPF or DKIM passes individually, DMARC requires "alignment." The domain in the From header must match the domain in the SPF return-path AND/OR the DKIM signature domain.
What Alignment Failures Look Like
In your DMARC reports, look for records where:
- SPF passes, but policy_evaluated shows SPF fail (due to alignment mismatch)
- DKIM passes, but policy_evaluated shows DKIM fail (due to alignment mismatch)
- Both SPF and DKIM pass individually, but policy_evaluated shows overall fail (if both fail alignment)
Common Causes of Alignment Failures
- Third-party senders: A marketing platform sends email on your behalf using their own sending domain for SPF, failing alignment.
- Subdomain sending: Email is sent from a subdomain (newsletter.yourdomain.com) but the From header uses your main domain.
- Email forwarding: Forwarded emails break alignment because the forwarding server changes the return-path.
Fixing Alignment Issues
For each alignment failure from a legitimate sender:
- Add the sender's IPs or domains to your SPF record
- Configure DKIM signing for the sender (most ESPs support this)
- If neither is possible, consider using a subdomain for that sender's emails
Alignment failures don't directly cause blacklisting, but they increase the likelihood that your legitimate emails will be marked as spam, damaging your sender reputation over time.
6. Using DMARC to Detect Internal Server Infections – The Early Warning System
One of the most powerful uses of DMARC reports is detecting compromised internal systems before they cause widespread damage.
The Compromise Pattern
When an internal server or employee workstation is compromised by malware that sends spam, the attack pattern in DMARC reports is distinctive:
- A sudden spike in email volume from a specific internal IP address
- Messages failing authentication (the malware doesn't have valid DKIM keys)
- Volume that's wildly inconsistent with normal sending patterns
- Often occurring during off-hours (when the compromised system is unattended)
Real-World Example
A medium-sized company noticed in their DMARC reports that an internal IP (192.168.1.105) was suddenly sending 50,000 emails per day, when it previously sent zero. All messages failed DKIM. Investigation revealed that an employee's laptop had been infected with malware that was using the company's email server as an open relay. The company cleaned the infection within hours, preventing blacklisting and potential data theft.
Setting Up Compromise Detection
To catch compromises early:
- Establish baseline sending volumes for each internal IP
- Alert on any new IP appearing in DMARC reports
- Alert on significant volume increases from existing IPs
- Pay attention to off-hour sending from office IPs
7. Choosing the Right DMARC Parser or Analyzer Tool – From XML to Insights
Raw DMARC XML reports are difficult to read manually. A 1MB XML file might contain data about hundreds of thousands of messages—impossible to analyze by hand. DMARC parsers and analyzers convert this raw data into readable dashboards and reports.
Free Options
- Google Postmaster Tools: Free, but only shows data for Gmail and requires verification
- Microsoft SNDS: Free, but only for Microsoft domains
- dmarcian Free Tier: Limited to 10k messages/day, good for small senders
Paid Options
- Valimail: Enterprise-focused with excellent visualization and enforcement capabilities
- DMARC Analyzer: Comprehensive reporting with historical trends
- OnDMARC: Good for mid-sized organizations with managed services available
- URIports: Open-source friendly, good API access
What to Look For in a Parser
- Source IP identification: Shows you all IPs sending as your domain
- Trend analysis: Tracks volume and authentication success over time
- Alerting: Notifies you when new senders appear or authentication rates drop
- SPF/DKIM suggestions: Helps you construct proper authentication records
- Historical data retention: At least 90 days for trend analysis
8. Reaching p=reject Safely Without Blocking Valid Mail – The Safe Migration Path
The ultimate goal of DMARC is to reach a policy of p=reject, where any email failing authentication is rejected outright—completely blocking spoofing attempts. However, moving too quickly to reject will also block legitimate but misconfigured senders.
Phase 1: Monitor (p=none)
Start with p=none and pct=100. Collect DMARC reports for at least 2-4 weeks to understand your email ecosystem.
v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; pct=100
Phase 2: Identify All Senders
From your DMARC reports, compile a complete list of all IPs sending email as your domain. For each IP, determine:
- Is it legitimate? (Your servers, email service providers, marketing platforms)
- Does it pass authentication? (SPF, DKIM, or both)
- What's the sending volume?
Phase 3: Fix Legitimate Failures
For each legitimate sender failing authentication, fix the configuration:
- Add their IPs to your SPF record (if sending from fixed IPs)
- Configure DKIM signing (if the sender supports it)
- If neither is possible, consider moving that sender to a subdomain
Repeat this phase until 99%+ of your legitimate traffic passes DMARC alignment.
Phase 4: Quarantine (p=quarantine)
Once alignment is high, move to p=quarantine. This sends failing messages to spam instead of rejecting them outright.
v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; pct=100
Run in quarantine for another 2-4 weeks. Monitor for any legitimate traffic ending up in spam.
Phase 5: Reject (p=reject)
After proving that no legitimate email fails authentication, move to p=reject.
v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com; pct=100
Congratulations—you've completely blocked spoofing for your domain and established a strong authentication posture.
9. Correlating DMARC Data with Blacklist Status – Connecting the Dots
DMARC reports don't directly tell you if you're on a blacklist, but they provide powerful leading indicators of blacklist risk.
Warning Signs in DMARC Reports
- New, unknown IPs sending high volume: Could be spoofers whose activity will eventually cause SURBL listings
- Increased sending from IPs with poor authentication: Shadow IT or compromised systems
- Spikes in volume from any source: Sudden volume changes trigger spam filters
- Messages to non-existent domains: Indicates poor list hygiene or dictionary attacks
Building a Risk Score
Create a simple risk scoring system from your DMARC data:
- +1 point for each new IP appearing in reports (especially if from residential or dynamic ranges)
- +2 points for IPs with high volume but failing authentication
- +3 points for IPs sending to known spam trap domains
- +5 points for any IP that also appears on a DNSBL
When risk scores exceed thresholds, investigate immediately—before blacklisting occurs.
10. Turning DMARC Data into Actionable Insights – Your Monthly DMARC Review Process
Collecting DMARC reports is useless without regular analysis and action. Implement this monthly review process to extract maximum value from your DMARC data.
Weekly Quick Check (15 minutes)
- Review any alerts from your DMARC analyzer about new senders
- Check overall authentication pass rate (should be >99%)
- Investigate any sudden volume spikes
Monthly Deep Dive (1-2 hours)
- Export all source IPs from the past 30 days
- Compare against your authorized sender list—investigate any discrepancies
- Run blacklist checks on any new or high-volume IPs
- Review top failing IPs (by count) and address each
- Update your SPF record to include any newly authorized senders
Quarterly Audit (2-4 hours)
- Review 90-day trends in authentication pass rates
- Analyze geographic distribution of sending IPs (unexpected regions may indicate compromise)
- Audit SPF record for unnecessary includes or outdated entries
- Rotate DKIM keys if using custom implementation
- Consider moving to next DMARC policy phase (e.g., none → quarantine → reject)
Documentation and Communication
Share key findings with relevant teams:
- IT/Security: Compromised systems, spoofing attempts, new unauthorized senders
- Marketing: Shadow IT sending, ESP configuration issues
- Management: Authentication trends, spoofing protection progress, risk metrics
