Outreach
LinkedIn Outreach Email Outreach WhatsApp Automation Dialer Unified Inbox CRM / Pipeline
Data
Signals Lead Finder Email Finder Phone Finder Company Follower
Deliverability
Deliverability Center Mailboundry Email Infrastructure (Google, Microsoft & Azure) Email Warmup Inbox Placement Test
AI & Automation
AI Personalization AI Reply Agent ICP Score
Built For
Founders Agencies Sales Teams B2B SaaS
Use Cases
LinkedIn Outreach Cold Email Outreach Multichannel Outreach Signal-Based Outreach Outbound Sales Lead Generation Account-Based Outreach Appointment Setting Recruiting Outreach Link Building & PR Outreach
Resources
Free Tools Help Center Mobile App API & Webhooks Roadmap Blog Cold Email Guides Deliverability Guides LinkedIn Guides Lead Generation Guides Affiliate Pricing Log in Book a demo Start free trial
BlogDeliverabilityEngage · Deliverability

Reading DMARC Reports Without a Tool

Most teams publish DMARC, point the reports at an inbox, and never open one. Here is what is in them.

RA
← All articles

Publishing a DMARC record with a reporting address means inbox providers start sending you daily XML reports about every source sending mail as your domain.

Almost nobody reads them. The file is machine-formatted, it arrives zipped, and the first time you open one it is not obvious what you are looking at.

That is a shame, because these reports answer a question nothing else does: who is sending mail claiming to be you, and is it passing authentication?

You do not need a paid tool to read one. You need to understand six fields.

Getting the reports

Your DMARC record includes a rua tag with an address:

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com

Reports arrive daily from each provider (Google, Microsoft, Yahoo and others) as zipped XML attachments. One per provider per day per domain.

Send them to a dedicated mailbox. At thirty sending domains this is a lot of mail, and it will bury a real inbox.

The structure

Every aggregate report has two parts.

The metadata block names the reporting provider, the date range, and the DMARC policy they saw published.

The record blocks are the useful part. One per sending source, each containing:

Field What it means
source_ip The IP that sent the mail
count How many messages from that IP in this period
disposition What the provider did: none, quarantine or reject
dkim DKIM result: pass or fail
spf SPF result: pass or fail
header_from The domain in the visible From address

That is genuinely it. Six fields per source, and everything you need is in them.

Reading one by hand

Open the XML in any text editor. For each record block, ask three questions in order.

1. Do I recognise this IP?

Look it up. If it is your sending platform, your mailbox provider or your own infrastructure, fine. If it is not, and the count is meaningful, someone is sending mail as your domain.

2. Did it pass?

You want pass on DKIM, SPF, or both. DMARC passes if either passes and aligns with the From domain.

3. What happened to the mail?

disposition: none means it was delivered despite any failure, because your policy is p=none. Under quarantine or reject it would have been filtered or bounced.

The three failures worth acting on

Your own mail failing

Your sending IP shows spf: fail or dkim: fail on a meaningful count.

Usual causes: SPF record exceeding the ten-lookup limit, which fails silently and is by far the most common. A DKIM key not published for that sending source. Or a configuration change that broke one without anyone noticing.

Why it matters: this is mail you are paying to send, arriving with a visible authentication failure. Fix it before anything else.

Alignment failures

Both SPF and DKIM show pass, and DMARC still fails.

This is the subtle one. DMARC requires the authenticated domain to align with the domain in the visible From address. You can pass SPF for sendgrid.net while your From header says yourdomain.com, and that is a DMARC failure despite the pass.

The fix is usually a custom return-path or signing domain configured at your sending platform so the authenticated domain matches what recipients see.

Unknown senders

An IP you do not recognise, sending as your domain, in volume.

Possibilities, in order of likelihood: a forgotten tool somebody connected years ago; a legitimate service you forgot authorises itself as you; a forwarding service; or actual spoofing.

Most of the time it is the first two and the answer is to authorise or remove it. Occasionally it is the fourth, which is exactly what DMARC exists to surface.

What the reports will not tell you

Which folder mail landed in. DMARC reports cover authentication, not placement. A fully-passing message can sit in spam. For that you need an inbox placement test.

Message content or recipients. Aggregate reports contain no personal data, that is the design.

Why reputation dropped. Authentication is one input among several.

Anything about providers who do not report. Not every receiver sends DMARC reports. Your view is partial.

A workable routine

You do not need to read these daily.

Weekly, five minutes: scan for any source failing in volume, and any IP you do not recognise.

After any change: new sending domain, new platform, added infrastructure. Check reports for the following week specifically.

Monthly: review the whole sending source list. Anything still there that should not be?

If you run many domains, a parsing tool earns its place. For under ten, reading the XML by hand once a week is entirely manageable and gives you a better feel for your own estate than a dashboard does.

Moving past p=none

Most cold senders publish p=none and stop, which satisfies the requirement and does nothing protective. p=none means “report but take no action.”

The progression:

p=none, monitoring only. Start here, stay for at least a few weeks of clean reports.

p=quarantine, failing mail goes to spam. Move here once reports show all your legitimate sources passing and aligning.

p=reject, failing mail is bounced. The strongest signal to providers, and the riskiest if you have a source you forgot about.

Do not skip to reject without reading reports first. That is precisely what the monitoring phase is for, and skipping it means discovering a forgotten legitimate sender by having its mail bounced.

A reasonable pace: a month at none, a month at quarantine, then reject if nothing broke.

The short version

DMARC aggregate reports answer a question nothing else does: who is sending as your domain, and does it pass. Six fields per source, readable in a text editor.

Look for three things, your own mail failing authentication, passes that fail alignment anyway, and IPs you do not recognise. The first is usually an SPF lookup limit, the second usually a return-path configuration, the third usually a forgotten tool.

Send reports to a dedicated mailbox, scan weekly, and use the monitoring period for what it is for: moving from p=none to quarantine to reject once you know every legitimate sender passes.

Engage · Free tool

Check your DMARC record in seconds

The free DMARC checker reads your published policy and tells you what to fix before you move to quarantine or reject.

Run the check

Next: SPF, DKIM and DMARC explained, or the bulk sender requirements.

Frequently asked questions

How do you read a DMARC report?

Open the XML and look at each record block for six fields: source IP, message count, disposition, DKIM result, SPF result and the From domain. Check whether you recognise the IP, whether it passed, and what the provider did with the mail.

Why does DMARC fail when SPF and DKIM pass?

Alignment. DMARC requires the authenticated domain to match the domain in the visible From address. Passing SPF for your sending platform’s domain while your From header shows your own domain is a DMARC failure.

Do I need a tool to read DMARC reports?

Not under about ten domains. The XML is readable in any text editor and contains six relevant fields. Parsing tools earn their place at larger estates.

Should cold email senders use p=reject?

Eventually, but not immediately. Start at p=none, read reports until every legitimate source passes and aligns, move to quarantine, then reject. Skipping to reject risks bouncing mail from a sender you forgot about.

Ready to run outbound on autopilot?

Start free trial