DNSVerdictAll toolsGuidesHow it works

Guides

These guides turn a failed check into a fix. Each one cites the relevant RFC, shows example records and links the tool that verifies the change. New to email authentication? Start with how to create an SPF record, then set up DKIM and DMARC. If a message was rejected, look up the error in the bounce code reference.

DKIM key length: 1024 vs 2048 bits (and Ed25519)

Which DKIM RSA key size to publish, why 512 and 768-bit keys fail, why a 2048-bit key is split into several TXT strings, how to rotate to 2048, and where Ed25519 fits.

DMARC fails even though SPF and DKIM pass: fixing alignment

SPF pass and DKIM pass do not satisfy DMARC unless one of them uses your From domain. How identifier alignment works and how to fix it in Google Workspace, Microsoft 365, Mailchimp, SendGrid and Amazon SES.

Multiple DMARC records: why none applies and how to merge

Two TXT records at _dmarc make receivers discard both, so your domain has no DMARC policy. How to find the duplicates, merge them into one record and check the result.

DMARC p=none to quarantine to reject: a safe rollout

How to move a DMARC policy from none to quarantine to reject without losing legitimate mail: read reports first, use sp and np, and replace pct ramp-up with t=y under RFC 9989.

DMARC reports explained: rua, ruf and external addresses

How to read DMARC aggregate (rua) XML reports, what ruf failure reports contain and why few receivers send them, and how _report._dmarc authorizes third-party addresses.

DMARC record syntax errors and how to fix them

What the DMARC checker's errors mean: v=DMARC1 not first, missing p, wrong separators, invalid rua or ruf URIs, multiple records, and common typos, with corrected examples.

DNS propagation explained: it's cache expiry, not 48 hours

DNS changes do not spread; resolvers keep old answers until the TTL runs out. Learn why checks disagree, how negative caching delays new records, why '48 hours' is a myth, and how to check.

DNS record types explained: A, MX, TXT, CNAME and more

What each common DNS record type does, with an example for A, AAAA, CNAME, MX, NS, TXT, SOA, CAA, SRV, PTR, DS and DNSKEY, plus the CNAME-at-apex restriction and how to look each one up.

How to read email headers: Received, SPF, DKIM, DMARC

Get the full headers in Gmail, Outlook, Apple Mail, Yahoo or Thunderbird, then read them bottom-up: delays, SPF/DKIM/DMARC results, ARC, and which header lines you can trust.

MX record points to a CNAME: why it breaks and the fix

An MX record must point to a hostname with A or AAAA records, not to a CNAME alias. See the symptoms, why RFC 2181 and RFC 5321 forbid it, and how to replace the alias.

MX host does not resolve: causes and how to fix it

Your MX record points to a name with no A or AAAA record. Learn the usual causes (typo, missing trailing dot, deleted host), how mail fails under RFC 5321, and how to repair it.

Null MX (RFC 7505): publish it for domains with no mail

A null MX record, 'MX 0 .', tells senders a domain accepts no email so they fail at once. When to use it, the 556 5.1.10 and 5.7.27 bounces, and pairing with SPF -all and DMARC reject.

Reverse DNS (PTR) for mail servers: how to set it

Mail servers need a PTR record whose hostname resolves back to the same IP (FCrDNS). Who can set it, what Google and Microsoft say, and how to fix 550 5.7.25 and 451 4.7.23 errors.

How DKIM works and how to publish a DKIM record

Publish a DKIM public key at selector._domainkey, choose TXT or CNAME, size the key, split long values, rotate and revoke keys, and find your selector in message headers.

How to set up a DMARC record, from p=none to p=reject

Publish a DMARC TXT record at _dmarc, understand p, sp, rua, ruf, pct, adkim, aspf and fo, roll out none, quarantine, reject safely, and authorize external report addresses.

How to set up MX records (priorities, null MX, migration)

Create MX records that deliver mail: hostname targets, priorities, why a CNAME or IP breaks them, apex versus subdomain, null MX for domains that receive no mail, and migrating with TTL.

Set up SPF, DKIM and DMARC for Google Workspace

Exact DNS records for Google Workspace email: MX smtp.google.com, SPF include:_spf.google.com, a DKIM key generated in the Admin console, and a DMARC rollout from p=none to p=reject.

Set up SPF, DKIM and DMARC for Microsoft 365

DNS records for Microsoft 365 email: tenant MX from the admin center, SPF include:spf.protection.outlook.com, two DKIM CNAMEs (selector1, selector2) and a staged DMARC rollout. GCC High and 21Vianet variants included.

Set up SPF, DKIM and DMARC for Zoho Mail

DNS records for Zoho Mail: MX from your Admin Console, SPF include:zohomail.com, a DKIM TXT with a selector you choose, and a DMARC rollout from p=none to p=reject.

How to create an SPF record (syntax and examples)

Publish one SPF TXT record per domain: syntax, qualifiers, combining several senders, ~all versus -all, and the 10-lookup and void-lookup limits from RFC 7208.

Two SPF records on one domain: permerror and how to merge

More than one v=spf1 TXT record makes SPF return permerror. How to find the extra record, merge the includes of every provider into one, and stay under 10 lookups.

SPF ~all vs -all vs ?all: softfail, fail and neutral

What ~all, -all, ?all and +all tell receivers, what they actually do with each result, and which to publish given DMARC. RFC 7208 results explained.

SPF syntax errors: every checker message explained

Fix SPF permerror caused by typos: unknown mechanisms, include without a domain, bad ip4 values, +all, terms after all, and includes that point at a domain with no SPF.

SPF “too many DNS lookups”: why it happens and how to fix it

RFC 7208 allows 10 DNS-querying terms. Here is how the count works, which terms cost a lookup, and four ways to get back under the limit.

Lower your DNS TTL before a migration: how and when

Cut the TTL ahead of a DNS change, wait at least the old TTL, switch, then raise it again. Includes timing, the NS and DS exceptions set at the parent zone, and a checklist.