buildOne report1 publisher Fewer than half of the 1,000 most popular websites reject spoofed email
Just 474 of the 1,000 most popular websites set DMARC to reject spoofed mail, a dev.to survey of their DNS found. Thirty-two months after Google and Yahoo began requiring DMARC from bulk senders, 84.5% of the sites publish a record, but only 69.4% apply an enforcing policy to all their mail.
Reality
- Evidence62
- Adoption68
- Hype gap0
- Incentives
- Not scored
- Confidence60
iCloud Mail header-smuggling flaws let users forge any @icloud.com sender past DMARC
SEC Consult's Timo Longin found two iCloud Mail flaws letting any signed-in user send SPF-, DKIM- and DMARC-passing mail as any @icloud.com address. A filter that read only those verdicts could not tell the forgeries from mail the real address owner sent.
Reality
- Evidence40
- Adoption
- Not scored
- Hype gap+5
- Incentives
- Not scored
- Confidence45
buildOne report1 publisher DMARC fails mail that passes SPF and DKIM under the wrong domain
Transactional mail can pass SPF and DKIM and still fail DMARC when neither aligns with the visible From domain, a dev.to Node.js guide shows. Because forwarding breaks SPF, the author treats aligned DKIM as the path to protect.
Reality
- Evidence45
- Adoption
- Not scored
- Hype gap+15
- Incentives35
- Confidence50
buildOne report1 publisher Nested includes push GitHub's SPF record to exactly 10 of its 10 allowed DNS lookups
GitHub's SPF record uses all 10 DNS lookups RFC 7208 allows once the includes inside its vendors' records are counted. One more mail vendor would make SPF return PermError and leave GitHub's mail to pass DMARC on DKIM alone.
Reality
- Evidence60
- Adoption
- Not scored
- Hype gap+5
- Incentives45
- Confidence55
buildOne report1 publisher Per-tenant SPF, DKIM and DMARC checks give each publisher domain its own rollback point
Publishers onboarding custom domains should confine wildcard DNS to routing and verify three mail records per tenant, a dev.to guide argues. That costs extra writes and waiting, and it gives every customer its own rollback boundary and audit trail.
Reality
- Evidence45
- Adoption
- Not scored
- Hype gap0
- Incentives
- Not scored
- Confidence50
The request came from an unauthorized account on a real government domain, and Revolut acted on it. The company calls the number of affected customers limited, and it declined to say how many or name the agency.
Perspective Coverage
5 publishers
- Builder
- Builder 23%
- Operator
- Operator 55%
- Investor
- Investor 22%
Reality
- Evidence68
- Adoption
- Not scored
- Hype gap+10
- Incentives55
- Confidence66
buildOne report1 publisher Five fields in the aggregate XML decide when DMARC can leave p=none
Publishing p=none starts an XML report feed and enforces nothing. A practitioner sequence for getting a domain to p=reject turns on an owned sender inventory, aligned DKIM and a written condition for each step.
Reality
- Evidence62
- Adoption
- Not scored
- Hype gap+10
- Incentives20
- Confidence55
buildOne report1 publisher Three identities per zone keep a delete-and-recreate from becoming an identity failure
A dev.to walkthrough stores the provider's DNS zone ID as replaceable cache and checks the returned domain before every mutation. The cutover only closes when an independent DNS read matches the approved MX set.
Reality
- Evidence30
- Adoption
- Not scored
- Hype gap+10
- Incentives20
- Confidence38
buildOne report1 publisher Storing each domain and mailbox proof as a timestamped event lets an auditor replay a disputed join
A dev.to post on healthtech workspace joining argues that DNS TXT challenges and mailbox confirmations prove different things, and the Go example it ships bounds DNS freshness at 24 hours while leaving the mailbox proof undated.
Reality
- Evidence45
- Adoption
- Not scored
- Hype gap+10
- Incentives20
- Confidence50
buildOne report1 publisher Splitting a tenant DNS cutover into lower, switch and restore gives each step its own deadline
A dev.to walkthrough of per-tenant subdomains on a gaming platform gives the TTL drop, the target change and the TTL restore separate deadlines, preconditions and audit evidence, so a worker that restarts can prove what it already applied.
Reality
- Evidence32
- Adoption
- Not scored
- Hype gap0
- Incentives18
- Confidence45
buildOne report1 publisher Deleting pct=25 from a DMARC record quadruples the mail your policy touches
RFC 9989 removed the pct tag on 19 May 2026, and a record still carrying pct=25 describes a staged rollout that conforming receivers no longer honour. The replacement, t=y, gives one testing step and no percentages.
Reality
- Evidence64
- Adoption
- Not scored
- Hype gap+18
- Incentives22
- Confidence58
buildOne report1 publisher Suppressing on the three-digit code converts a policy refusal into a dead address
In four codebases a dev.to author found bounce handlers that read 5.x.x and stopped, so a receiver's verdict on the sending domain got written down as a dead mailbox. The RFC 3463 subject digit separates the two.
Reality
- Evidence55
- Adoption
- Not scored
- Hype gap+12
- Incentives40
- Confidence57
buildOne report1 publisher Counting the full SPF include tree nightly catches the vendor include that breaks your record
The DNS and header half of deliverability is a pure function of your own configuration, so a scheduled job can assert it; inbox placement is a measurement you put on a dashboard with a date on it.
Reality
- Evidence52
- Adoption
- Not scored
- Hype gap+10
- Incentives55
- Confidence55
buildOne report1 publisher Receivers blend marketing and password reset mail into one history for the From: domain
A dev.to walkthrough splits outbound mail by risk profile. Whether that split changes anything for receivers comes down to one tag: sp= on the organizational domain. Subdomains still need their own SPF and DKIM either way.
Reality
- Evidence58
- Adoption
- Not scored
- Hype gap+12
- Incentives60
- Confidence55
buildOne report1 publisher Property offboarding waits out the old 3,600-second TTL before it deletes one leasing record
A dev.to runbook for property-management DNS ties every record to a property ID, plans each delete against an expected current value, and calls the job done only once resolver checks agree.
Reality
- Evidence48
- Adoption
- Not scored
- Hype gap−5
- Incentives18
- Confidence55
buildOne report1 publisher A shared alias that outlived an offboarding passes the mailbox check onboarding treats as ownership
A dev.to walkthrough of FastAPI onboarding separates two proofs that codebases keep merging, one testing whether a person can read mail at a domain and the other whether anyone can write to its zone. Negative caching explains why the first check fails.
Reality
- Evidence58
- Adoption
- Not scored
- Hype gap+8
- Incentives22
- Confidence55
buildOne report1 publisher Two authentication passes on unrelated domains still fail DMARC alignment
A dev.to walkthrough traces a newsletter whose SPF and DKIM both pass for example.net while the visible From reads editorial.example. The evidence that settles it sits in the receiver's Authentication-Results header.
Reality
- Evidence58
- Adoption
- Not scored
- Hype gap+8
- Incentives25
- Confidence55
buildOne report1 publisher A stable key per notice and channel lets a restarted worker resend only the pending SMS
A dev.to design post writes an attempt row before every provider call and keeps accepted apart from delivered across six states, paying extra latency where the API publishes no idempotent-send contract.
Reality
- Evidence42
- Adoption
- Not scored
- Hype gap−5
- Incentives18
- Confidence58
Revolut handed identity files and Bitcoin histories to an email that passed SPF, DKIM and DMARC
The request arrived from what looked like a government agency's domain, cleared all three email authentication checks, and Revolut's compliance team processed it. Notifications to affected customers began on September 11.
Reality
- Evidence35
- Adoption30
- Hype gap+25
- Incentives60
- Confidence45
buildOne report1 publisher Two records for one DNS entry turn a verified badge into a drift check
A dev.to onboarding design keeps the SPF, DKIM and DMARC values you generated in one row and the answers a resolver returned in another. Its comparator is a single stripped string match, so an SPF value the customer appended to lands in drifted.
Reality
- Evidence45
- Adoption
- Not scored
- Hype gap+15
- Incentives20
- Confidence60