Skip to content

DMARC enforcement

For an email to pass DMARC, it must satisfy two conditions:

  1. Authentication: Either SPF or DKIM passes.
  2. Identifier Alignment: The domain in the visible From: header must match (or align with) the domain evaluated by SPF (Return-Path) or DKIM (d= parameter).
  • Relaxed (r) (Default): Subdomains match parent domains (e.g., mail.example.com aligns with example.com).
  • Strict (s): Exact hostname match is required.

Never jump directly to p=reject without monitoring. Legitimate transactional services, CRM integrations, or edge applications may be misconfigured. Follow this 3-phase rollout:

  1. Phase 1: Discovery & Monitoring (p=none) Deploy aggregate reporting to observe all sending streams without affecting deliverability.

    v=DMARC1; p=none; rua=mailto:dmarc-rua@example.com; sp=none; fo=1;

    Duration: 2 to 4 weeks. Analyze aggregate XML reports for unauthenticated legitimate services.

  2. Phase 2: Gradual Quarantine (p=quarantine) Route suspicious emails to the spam/quarantine folder. Start with a percentage ramp-up:

    v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-rua@example.com; ruf=mailto:dmarc-ruf@example.com;

    Ramp Schedule: Increment pct= from 25% to 50%, 75%, and 100% over several weeks while confirming zero drop in legitimate message metrics.

  3. Phase 3: Strict Enforcement (p=reject) Instruct recipient gateways to drop unauthenticated messages outright:

    v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-rua@example.com; ruf=mailto:dmarc-ruf@example.com; aspf=r; adkim=r;

A standard production DMARC record published at _dmarc.example.com:

v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensics@example.com; fo=1; aspf=r; adkim=r;
TagPurposeRecommended Value
vProtocol versionDMARC1
pPolicy for organizational domainnone → quarantine → reject
spSubdomain policyreject (protects all inactive subdomains)
pctPercentage of messages subject to policy100
ruaURI for aggregate feedback reportsmailto:...
rufURI for forensic failure reportsmailto:...
foForensic reporting options1 (report if any mechanism fails)
aspfSPF alignment moder (relaxed) or s (strict)
adkimDKIM alignment moder (relaxed) or s (strict)

If sending aggregate reports (rua) to a destination outside the sending domain (e.g. sending reports for example.com to monitoring-service.net), the recipient domain must verify authorization:

example.com._report._dmarc.monitoring-service.net
v=DMARC1;
Terminal window
dig +short TXT _dmarc.example.com