Guides

DMARC alignment, explained

Last updated 2026-08-28

Every DMARC question that starts "but SPF passes" has the same answer. SPF passing tells you a domain was authenticated. It does not tell you which domain.

Three domains per message

A single message carries at least three domain names, and people conflate them constantly.

Alignment is the requirement that a domain something authenticated matches the domain the reader sees. Without it, SPF and DKIM are checks on identities nobody looks at, which is the state email was in before DMARC existed.

The rule

DMARC passes when at least one of these holds:

One is enough. A message with SPF failing and aligned DKIM passing gets a DMARC pass, and that is the normal state of every forwarded message you send.

Relaxed against strict

Two tags control it: aspf for SPF and adkim for DKIM. Both default to r, relaxed.

From domain Authenticated domain Relaxed Strict
example.com example.com Aligned Aligned
example.com mail.example.com Aligned Not aligned
news.example.com example.com Aligned Not aligned
example.com bounces.vendor.net Not aligned Not aligned
example.com example.co.uk Not aligned Not aligned

Relaxed matches on the organisational domain, which is the registrable name plus its public suffix. That is why news.example.com and example.com are the same organisation, and why example.com and example.co.uk are not, however obviously related they look to you.

Set strict alignment and every subdomain sender you have stops aligning. There are legitimate reasons to want it, mostly at organisations that have locked down exactly which hosts may sign. If you cannot name yours, leave both tags alone.

Worked example: the vendor

From: billing@example.com Return-Path: bounces+1729@mail.vendorapp.net DKIM-Signature: v=1; a=rsa-sha256; d=vendorapp.net; s=s1; ...

SPF passes, for mail.vendorapp.net. DKIM verifies, for vendorapp.net. Neither is example.com. DMARC fails, the disposition follows your policy, and the vendor's support team will tell you their authentication is configured correctly, which is true and irrelevant.

The fix is domain authentication at the vendor, which changes d= to your domain, and a custom return-path, which moves the envelope sender onto a subdomain of yours. The provider pages have the records for each of the common ones.

Worked example: forwarding

From: you@example.com Return-Path: you@example.com DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1; ...

A recipient forwards this to another mailbox. The forwarding server connects from its own IP, which is not in your SPF record, so SPF fails. The signature is untouched, so DKIM verifies for example.com and aligns. DMARC passes.

Nothing you can publish makes plain forwarding pass SPF, and you should stop trying. This is the practical reason DKIM matters more than a perfect SPF record: it is the identifier that survives the path.

Where that breaks is a forwarder that edits the message, typically by appending a footer, which invalidates the body hash. That failure has its own page. ARC exists to let a trusted forwarder vouch for the original result, and receivers that honour it will let such mail through, but it is their decision and not something you can rely on from the sending side.

Reading it in a header

One line tells you everything. Send a message to a Gmail address you control and open Show original:

dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=example.com

Compare header.from against the domains in the spf and dkim parts of the same line. If neither matches, dmarc=fail follows, whatever else passed. The field-by-field walkthrough covers the rest of that header, including Microsoft's compauth.

Alignment across your own domains

Two things surprise people who run more than one domain.

What to check when something fails

  1. Get the Authentication-Results line from a real message.
  2. Write down the three domains: header.from, smtp.mailfrom, and the signature's d=.
  3. Check your aspf and adkim with the DMARC checker. If either is s, ask whether you meant it.
  4. Confirm the selector resolves with the DKIM checker, using the s= and d= you just wrote down. A selector that still resolves can be a leftover from a rotation; on a paid plan, the signing keys check gives each one a keep, review or remove verdict from 90 days of reports.
  5. If you cannot get a header, the aggregate reports have the same information for every sender at once. Reading one takes about five minutes.

Alignment is the only conceptual part of DMARC. Everything else is DNS records and patience. Once you can look at a header and name which of the three domains failed to match, the rest of this stops being a protocol you are fighting and becomes a checklist you are working through.

Point your rua= tag at a mailbox someone reads. We parse that XML and mail you the senders that used your domain and whether each one passed. Paid plans add an alert the day a report first names a new sender failing. One free domain, no card.

Run the ramp on real reports

Every step in this guide depends on a few weeks of aggregate reports. We parse them and mail you a weekly summary: the senders that used your domain, what failed, and when tightening the policy is safe. Paid plans email you the day a new source first fails. Your first domain is free.

Get the weekly digest

No card · 12+ months of history · The free plan does not expire

Questions

What is the difference between relaxed and strict alignment?

Relaxed, the default, accepts any subdomain of your organisational domain, so mail.example.com aligns with example.com. Strict requires an exact match. Relaxed is right for almost everyone.

Which identifier does DMARC actually protect?

The domain in the visible From header, the one the recipient sees. Everything else in the authentication stack exists to prove something about a domain that may or may not be that one.

Does DMARC need both SPF and DKIM to align?

No. One is enough. In practice you want both, because SPF breaks on forwarding and DKIM breaks when something edits the message body.

DomainCanary is a DMARC monitoring service that turns your domain's aggregate reports into one weekly email.