DMARCify
Features

Everything you need. Nothing you don't.

DMARCify is built around three jobs: receive your reports reliably, decode them into something a human can act on, and warn you when something changes upstream.

app.dmarcify.dev/dashboard
Overview
Domains
5
4 verified · 1 pending
Reports (30d)
3,006
Records (30d)
58,844
Pass rate (30d)
98.7%
Domainsfilter · sort
DomainStatusPolicyRecordsPass rateLast
acme.comverifiedreject 100%38,42099%today
send.acme.comverifiedquarantine 50%14,00297%today
newsletters.acme.comverifiednone5,21088%1d ago
support.acme.comverifiedreject 100%1,212100%2h ago
staging.acme.compendingnone0
Ingestion

Reports arrive through a hardened email pipeline.

We generate a per-domain mailbox like r-XXX@dmarcify.dev. Receivers send aggregate XML there, Cloudflare Email Routing pipes it into a Worker, we parse and gunzip it (zip too, the standard is messy), then route the rows to the domain's Durable Object.

  • Supports .xml, .xml.gz and .zip — the three formats the RFC permits
  • Per-domain mailbox token, rotatable from the dashboard
  • Hourly DNS re-check warns you if rua= drifts out of your record
  • Self-test button sends a fake report through the real pipeline
app.dmarcify.dev/dashboard/domains/acme.com?tab=setup

DNS setup

Add this TXT record on acme.com's DNS.

TypeTXT
Name_dmarc.acme.com
Valuev=DMARC1; p=none; rua=mailto:r-01h8zk7tg9@dmarcify.dev
Verified — first report arrived 4 minutes ago
Attribution

Every source IP enriched with provider, ASN, country.

DMARC gives you an IP and a verdict. We give you a name.

  • Reverse-DNS resolution per source — hostname surfaced inline
  • ASN + ASN org + country code for every IP, cached and de-duplicated
  • Match against a curated list of ~80 mail providers (Google, Microsoft 365, Mailgun, Postmark, SendGrid, AWS SES, Klaviyo, …)
  • Flag emojis next to every sender — it's silly, it works
app.dmarcify.dev/dashboard/domains/acme.com
acme.com
Status: verifiedDomain:reject 100%Subdomain:quarantine
Send test reportoverviewsetup
Reports (30d)
1,842
Records (30d)
38,420
Pass rate 99.4%
Last seen
14:08 today
Volume by day
05641.1k
aligned (pass) unaligned (fail)

Authorized senders

3 sources

Recognised services sending mail aligned with your domain. Working as intended.

SourceFrom:Provider / ASNCountryTotalPassFailSPFDKIM
google-public-mail.l.google.com
209.85.220.41
Google Workspace
AS15169
🇺🇸US18,42018,40218100%100%
mail-relay.postmarkapp.com
50.31.156.6
support.acme.com
Postmark
AS22606
🇺🇸US7,2117,2110100%100%
o1.eu.mailhostbox.com
104.47.7.34
Microsoft 365
AS8075
🇮🇪IE4,0124,005799%100%

Forwarded mail

1 source

DKIM-aligned but SPF-broken — the classic signature of a recipient mailbox forwarding your mail elsewhere.

SourceFrom:Provider / ASNCountryTotalPassFailSPFDKIM
mx.fastmail.com
66.111.4.230
Fastmail
AS11403
🇺🇸US61261200%100%

Unknown / unaligned sources

1 source

Senders we don't recognise or that aren't aligning. Investigate before raising your DMARC policy.

SourceFrom:Provider / ASNCountryTotalPassFailSPFDKIM
185.220.101.47
ceo.acme.com
AS396982
🇳🇱NL840840%0%
Categorisation

Failures aren't all created equal.

We split your senders into three semantically distinct buckets so the failures that actually matter — not the ones every DMARC deployment ignores — rise to the top.

Authorized

Recognised sender, aligned outcome. The healthy state — these are the senders you want to see, doing what they should.

google.com · 18,420 records · 100% SPF · 100% DKIM
Forwarded

DKIM aligns but SPF doesn't. The fingerprint of a recipient mailbox forwarding mail elsewhere. Looks scary until you know what it is.

mx.fastmail.com · 612 records · 0% SPF · 100% DKIM
Unknown / unaligned

The bucket you actually need to read every week. Senders we can't attribute or that aren't aligning — investigate before tightening DMARC.

185.220.101.47 · 84 records · 0% pass
Operations

Built for teams, not just individuals.

Organisations & roles

Owner / admin / viewer roles. Invite by email — we handle the invitation flow. Switch orgs from the sidebar; one user can belong to many.

Weekly digest

Plain-text Monday email per user. Pass rate, top senders, anything new. Designed to be read on a phone in the elevator on the way in.

Drift alerts

If your rua= disappears from DNS — usually because someone hit 'reset to default' on the registrar — we surface a rua-mismatch warning on the domain and overview.

Email OTP & OAuth

Sign in with a 6-digit code, GitHub, or Google. No passwords to leak, no sessions that outlive the laptop they were issued on.

Edge-native

Workers + D1 + Durable Objects. Your dashboard loads in <100ms from anywhere — there's no region to pick, no instance size to choose.

Roadmap

What's coming next

We ship in public, and we don't list things we haven't started. Every item below is in flight or queued.

Stop guessing who sends mail as you.

Add one DNS record. Reports start arriving within 24 hours. €3 per domain per month, 14-day free trial, no card to start.

No credit card · One DNS record · 60 seconds to set up