DMARC strict vs relaxed alignment under RFC 9989

Written by · Published 2026-11-05

Short answer

Relaxed alignment passes when the domain in your DKIM signature or your bounce address shares the same Organizational Domain as your From address. Strict alignment passes only when they are identical. Relaxed is the default and the right choice for most senders that use sending tools on subdomains. Strict is for a domain where you control every sending subdomain exactly and want no room at all.

What alignment checks

DMARC does not check your From address directly. It checks whether one of two other identifiers lines up with the From domain:

If either one is aligned, DMARC passes. If neither is, the policy in your record applies. This is why a cold email tool that signs mail as its own domain, or bounces to its own domain, can show "DKIM pass" and "SPF pass" and still fail DMARC for you.

Relaxed vs strict, with an example

Your From address is sales@example.com.

Identifier the receiver sawRelaxedStrict
DKIM d=example.comalignedaligned
DKIM d=mail.example.comaligned (same Organizational Domain)not aligned
Bounce address at bounce.example.comalignednot aligned
DKIM d=yourtool.comnot alignednot aligned

RFC 9989 describes the two modes in Section 4.10.2: identifiers are compared to see whether they are "identical (strict alignment)" or share "the same Organizational Domain (relaxed alignment)". The mode is set per identifier in your record: adkim= for DKIM and aspf= for SPF, each r (relaxed, the default) or s (strict). Both are defined in Section 4.7.

Which one to use

Three things that changed with RFC 9989

  1. RFC 7489 is no longer the current DMARC specification. RFC 9989's header reads "Obsoletes: 7489, 9091". Pages and checkers that still cite RFC 7489 as current are out of date.
  2. The pct tag is historic. Table 5 in Section 9.3 lists pct, rf and ri as historic. The tag list in Section 4.7 no longer includes pct, and the same section says "unknown tags MUST be ignored". Do not build a ramp on pct=50. Ramp with the policy itself: p=none with reports, then p=quarantine, then p=reject, and read the reports between steps.
  3. The Organizational Domain comes from a DNS Tree Walk (Section 4.10), which the RFC introduces with the words "Rather than just using a PSL". A new t= tag (values y or n, default n) marks a policy as being in test mode.

One more rule worth knowing

If a domain publishes more than one DMARC record at the same name, Section 4.10 says that when multiple records are returned for a single target they are all discarded. Two records is the same as no record. Check for this before anything else.

Check your own domain in one command

dig +short TXT _dmarc.example.com

Read the adkim= and aspf= tags. If they are absent, both are relaxed. If you see two answers, you have two records. If you see pct=, the tag is historic.

The free audit at audit.humerly.com reads the same record and explains each finding in plain words. No signup.

What this page does not claim

This page describes what RFC 9989 says a validator does. It does not predict how any particular mailbox provider applies the specification today, and it does not promise inbox placement.

Reviewed by Venkat Nookala. Last reviewed: 5 November 2026. Sources: RFC 9989 (Sections 3.2.10, 4.4, 4.7, 4.10, 9.3).