All articles

Technical

SPF, DKIM and DMARC alignment decoded, with the exact records to publish

8 January 2026 · 11 min read

A brass padlock resting on printed technical drawings on a dark desk

Most authentication failures are not failures of SPF or DKIM. They are failures of alignment — the rule in RFC 7489 that says the domain a recipient sees must be the domain that authentication proved.

This article explains the three records, what each one actually verifies, and how alignment ties them together.

What each record verifies

MechanismRecord typeWhat it provesSurvives forwarding?
SPFTXT on the domainThe sending server is authorised for the envelope senderNo — the envelope changes
DKIMTXT at selector._domainkeyThe message content and headers were signed by the domainUsually yes
DMARCTXT at _dmarcAn aligned SPF or DKIM identifier matched the From domainDepends on DKIM surviving
The three authentication mechanisms compared

Strict versus relaxed alignment

DMARC has two alignment modes, set independently for SPF (aspf) and DKIM (adkim). Relaxed, the default, accepts an organisational-domain match: mail.example.com aligns with example.com. Strict requires an exact match.

Relaxed alignment is the right default for almost every marketing programme, because it lets you send from a dedicated subdomain while keeping the brand domain in the From address.

The records, in order of deployment

  • SPF: a single TXT record on the sending domain, containing one include for your sending platform and ending in ~all. Never publish two SPF records — that is a permanent error.
  • DKIM: the CNAME or TXT records your platform issues, published at the selector host it specifies. Each key gets its own host.
  • DMARC: a TXT record at _dmarc.yourdomain.com. Start with v=DMARC1; p=none; rua=mailto:reports@yourdomain.com; pct=100.

Moving from p=none to enforcement

p=none publishes a policy and collects reports without affecting delivery. Read four to six weeks of aggregate reports first, until every legitimate sending source appears as aligned and passing. Then move to p=quarantine with pct=25, raise the percentage in steps, and only then consider p=reject.

Rushing to p=reject before the reports are clean is how organisations discover their invoicing system, their help desk and their recruiting tool were all sending as the brand domain.

The host-name mistake that breaks half of all setups

Most DNS control panels append the domain to whatever you type in the Host field. Pasting the full hostname there produces selector._domainkey.example.com.example.com, which resolves to nothing. Enter only the prefix — selector._domainkey or _dmarc — and leave the value exactly as issued.

Key takeaways

  • DMARC tests alignment, so authentication that passes in isolation can still fail.
  • Relaxed alignment lets a subdomain send on behalf of the brand domain; strict does not.
  • Publish exactly one SPF record, one DKIM host per key, and one _dmarc record.
  • Spend four to six weeks at p=none reading reports before enforcing anything.

Sources

Put this into practice with HTsend

Everything in this guide is built into the platform: authenticate a sending domain, clean your list before you send, and watch inbox placement in real time.

Continue reading