DMARC Explained: Complete Guide to Email Authentication and Aggregate Reports
Everything a domain owner needs to understand, deploy, monitor, and enforce DMARC — from the first TXT record to reading the XML aggregate reports that receivers send back.
This reference is provided in English. DMARC is specified in English-language RFCs; we keep the body in the source language so technical terms are consistent with the specifications.
1. Introduction — what DMARC is and why it exists
Email was designed in the 1980s on the assumption that mail servers
trusted each other. Anyone could send a message with any
From: address they wanted. That simple design has
become the foundation of modern phishing, business-email
compromise, and brand impersonation.
Three complementary standards tightened this up:
- SPF (RFC 7208) — lists the IP addresses allowed to send mail for a domain.
- DKIM (RFC 6376) — cryptographically signs each message so receivers can prove it was produced by an authorised server and has not been modified in transit.
- DMARC (RFC 7489)
— ties SPF and DKIM to the visible
From:address, publishes a policy ("what to do with non-aligned mail"), and provides a feedback loop via aggregate reports.
DMARC is now mandatory for bulk senders targeting Gmail or
Yahoo (announced February 2024) and is strongly recommended
for every domain that ever sends email — even
non-sending domains benefit from p=reject
because attackers can no longer spoof them to third parties.
2. DMARC in 60 seconds
You publish a DNS TXT record at
_dmarc.yourdomain.tld. It tells every
receiving mail server three things:
- What to do if a message from your domain fails
authentication:
p=none(just report),p=quarantine(send to spam), orp=reject(bounce outright). - Where to send a daily XML report summarising every
authentication outcome:
rua=mailto:…. - Optionally, where to send per-message failure reports:
ruf=mailto:….
A minimal monitoring-only record looks like this:
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; adkim=r; aspf=r"
Within 24 hours of publishing this record you will start receiving aggregate reports from Google, Microsoft, Yahoo, and every other major receiver. This dashboard imports those reports and turns them into actionable data: which IPs send mail for you, which are aligned, which are failing, and which are forgeries.
3. How DMARC works, step by step
3.1 Identifier alignment
SPF and DKIM each produce a pass/fail result against
their own identifier — SPF authenticates the
SMTP envelope (MAIL FROM / bounce address)
and DKIM authenticates the signing domain (d=
tag). Before DMARC, an attacker could pass SPF against
their own bounce.attacker.example bounce
address while still showing billing@yourbank.com
in the From: header — a successful SPF "pass" that is
useless to the recipient.
DMARC closes this gap with identifier
alignment: SPF (or DKIM) must pass
and its authenticated domain must align with
the domain in the From: header. Alignment
can be strict (adkim=s /
aspf=s, exact domain match) or
relaxed (adkim=r /
aspf=r, organizational-domain match).
DMARC passes when at least one of SPF-aligned or DKIM-aligned passes. Because legitimate forwarding routinely breaks SPF (forwarder changes the envelope but not the message body), DKIM alignment is what typically survives — which is why you want DKIM signing on every sending source, not just SPF.
3.2 Policy application
The receiver consults the p= policy only
after computing the DMARC result. On failure it applies
one of three outcomes — but crucially the receiver is
not required to honour the policy exactly:
Google, for example, honours p=reject but
may still deliver a tiny sample for its own learning.
3.3 Reporting
Once a day (some receivers more often) the receiver
compiles every DMARC result for your domain, produces an
XML aggregate report, gzip-compresses it, and emails it
to the rua= address. DMARC Analyzer ingests
these messages over IMAP or Microsoft Graph, decodes the
XML, and turns the raw data into dashboards.
4. What's inside a DMARC aggregate report XML
Every aggregate report conforms to the schema published
alongside RFC 7489. The root element <feedback>
contains three top-level blocks:
<report_metadata>— who sent it and when.<policy_published>— the DMARC record the receiver observed for your domain at report time.- One or more
<record>elements — each is an aggregation of messages grouped by source IP, header-from, and policy outcome.
Here is the full annotated schema:
<feedback>
<report_metadata>
<org_name /> <!-- Reporting organisation (e.g. Google, Microsoft) -->
<email /> <!-- Reporter contact email -->
<report_id /> <!-- Unique report ID -->
<date_range>
<begin /> <!-- UNIX timestamp -->
<end /> <!-- UNIX timestamp -->
</date_range>
</report_metadata>
<policy_published>
<domain /> <!-- Your domain -->
<adkim /> <!-- DKIM alignment: r (relaxed) | s (strict) -->
<aspf /> <!-- SPF alignment: r (relaxed) | s (strict) -->
<p /> <!-- Policy: none | quarantine | reject -->
<sp /> <!-- Subdomain policy -->
<pct /> <!-- Percentage of mail subject to policy -->
<fo /> <!-- Failure reporting options -->
</policy_published>
<record>
<row>
<source_ip /> <!-- Sending IP (v4 or v6) -->
<count /> <!-- Message count -->
<policy_evaluated>
<disposition /> <!-- none | quarantine | reject -->
<dkim /> <!-- pass | fail -->
<spf /> <!-- pass | fail -->
<reason>
<type /> <!-- forwarded | sampled_out |
trusted_forwarder |
mailing_list | local_policy |
other -->
<comment />
</reason>
</policy_evaluated>
</row>
<identifiers>
<header_from /> <!-- From: header domain -->
<envelope_from /> <!-- MAIL FROM / bounce address domain -->
<envelope_to /> <!-- Recipient domain (sometimes present) -->
</identifiers>
<auth_results>
<dkim>
<domain /> <!-- Signing domain -->
<selector /> <!-- DKIM selector used -->
<result /> <!-- none | pass | fail | policy |
neutral | temperror | permerror -->
<human_result /> <!-- Optional human-readable detail -->
</dkim>
<spf>
<domain /> <!-- SPF-checked domain -->
<scope /> <!-- mfrom | helo -->
<result /> <!-- none | neutral | pass | fail |
softfail | temperror | permerror -->
</spf>
</auth_results>
</record>
</feedback>
Reports arrive as gzip-compressed XML (.xml.gz)
or inside a ZIP archive. DMARC Analyzer's parser
(includes/DmarcParser.php) accepts raw
.xml, .gz, .zip, or
.tar.gz uploads, extracts every contained
report, stores the rows in MariaDB, and caches
per-dashboard aggregations for fast display.
5. Policy levels and rollout strategy
p=none (monitor)
p=none asks receivers to report on outcomes
but take no enforcement action. Use this for 4–8
weeks while you discover and align every legitimate
sender (marketing platforms, transactional providers,
help desk, CI/CD systems, forwarded mailboxes).
p=quarantine (soft enforcement)
Move to p=quarantine; pct=10 once you see
your known-good traffic reach ~95 % alignment.
Gradually raise pct to 100, watching
aggregate reports for any remaining legitimate sender
that has slipped through.
p=reject (full enforcement)
p=reject is the only policy that actually
stops spoofing. Move here once quarantine at
pct=100 has been stable for two weeks. A
domain that never sends mail should publish
p=reject immediately — there is no
legitimate traffic to misclassify.
Subdomain policy (sp=)
sp=reject on an organisational domain
inherits protection to every subdomain that has no
DMARC record of its own. This is the single most
valuable setting to deploy on a corporate root domain.
6. Common issues and troubleshooting
- My SaaS provider fails alignment
-
Most SaaS platforms (SendGrid, Mailgun, Intercom,
etc.) offer custom-domain DKIM setup. Enabling it
lets messages DKIM-align with your
From:domain even though the envelope sender remains the provider's bounce address. - Mailing lists break DMARC
-
Lists typically rewrite the Subject and sometimes
the body, breaking DKIM. Well-behaved lists rewrite
From:to their own domain (ARC orfrom:munging) so DMARC does not trigger on your domain at all. - Forwarded mail shows SPF fail
- Expected. Forwarders change the envelope sender. DKIM usually survives forwarding, which is why DKIM-signing every outbound source is the real protection.
- Aggregate reports are not arriving
-
Check three things: (1) the
rua=address in your DMARC record is reachable, (2) the mailbox accepts messages up to ~10 MB, (3) if the reporting domain differs from your DMARC domain you must publish an authorisation record atyourdomain._report._dmarc.reporter.tld TXT "v=DMARC1"(see RFC 7489 §7.1).
7. Frequently Asked Questions
- What is DMARC?
- Domain-based Message Authentication, Reporting and
Conformance — RFC 7489. A DNS-published policy +
reporting standard that ties SPF and DKIM to the
visible
From:header. - What is the difference between SPF, DKIM and DMARC?
- SPF authorises sending IPs. DKIM signs messages.
DMARC ties both to the
From:header, publishes a policy, and closes the feedback loop with aggregate reports. - What do
p=none,p=quarantineandp=rejectmean? - Monitor-only, send failing mail to spam, or bounce failing mail outright — respectively.
- What is a DMARC aggregate report?
- A daily XML summary of every authentication outcome
observed for your domain, sent by major receivers
to the
rua=address. - Do I need to log in to read DMARC aggregate reports?
- Technically no — but they are gzip-compressed XML. DMARC Analyzer parses them automatically and presents them as dashboards.
8. Related guides
Deeper guides on the standards that DMARC sits on top of:
- SPF explained — Sender Policy Framework (RFC 7208): DNS syntax, mechanisms, qualifiers, the 10-lookup limit, and worked deployment examples for Google Workspace, Microsoft 365, and transactional senders.
- SPF 10 DNS lookup limit and SPF flattening
— focused deep dive on RFC 7208 section 4.6.4:
per-mechanism lookup cost, recursive include
resolution, the 2-void-lookup secondary cap, a
per-provider lookup-cost reference, the
permerrorsymptoms and the DMARC-fail cascade, and the four canonical remediation paths including SPF flattening with a monitored pipeline. - SPF permerror vs temperror — diagnostic deep dive
— focused diagnostic reference on the two SPF
error result codes (
permerrorandtemperror) defined in RFC 7208 sections 2.6.6 and 2.6.7 with receiver-side processing rules in sections 6.7 and 6.8. Documents what each result means semantically (permanent vs transient evaluation failure), the seven canonical permerror causes (record- not-found, syntax-error, multiple-records, too-many-lookups, void-lookup-cap, recursive- include, deprecated-mechanism), the three canonical temperror causes (DNS timeout, SERVFAIL, transient resolver failure), how DMARC at RFC 7489 section 5.6.2 handles each (permerror means SPF authentication FAILED; temperror means evaluation was inconclusive and the receiver MAY defer or treat as none), receiver behavior at the major mailbox providers (Gmail, Microsoft 365, Yahoo, Apple, ProtonMail), the Authentication-Results forensic detection workflow per RFC 8601, the cause-specific resolution playbook with all 10 failure modes mapped to a fix, and a per-symptom decision matrix. For SOC analysts triaging deliverability incidents, DMARC operators debugging aggregate-report anomalies, and DNS administrators investigating SPF infrastructure failures. - Forwarding issues with SPF
— focused operational deep dive on the #1
reason SPF breaks in production: forwarding.
SPF authenticates the FIRST SMTP hop only
(RFC 7208 section 1.1.3) and every forwarding
scenario introduces a SECOND SMTP hop that the
original senders SPF record cannot authorise.
Documents the four canonical forwarding
scenarios (transparent SMTP-level forwarding
via
.forward//etc/aliases, user-level forwarding via sieve / Outlook rules / Gmail filter forwarding, mailing list expansion via Mailman 3 / Discourse / Google Groups / Sympa / GitLab, third-party forwarding services including iCloud Mail Drop / Hide My Email / SimpleLogin / DuckDuckGo Email Protection), the Sender Rewriting Scheme (SRS) forwarder- side fix with the SRS0 and SRS1 address formats and Postfix / Exim / Sendmail / Exchange implementations, the Authenticated Received Chain (ARC, RFC 8617) receiver-side answer with the three ARC headers and the major mailbox provider validator + sealer matrix, mailing-list mitigations (From-header munging, message wrapping, ARC sealing) and per-list-software configuration, the detection workflow in DMARC aggregate (RUA) reports and Authentication-Results headers (RFC 8601), the four canonical operational fixes ranked by deployment scope, a 10-row per-symptom troubleshooting decision matrix, and three composite real-world examples. For operators debugging why a perfectly valid SPF record still producesspf=failon forwarded mail, mailing-list administrators configuring DMARC-aware operation, and SOC analysts triaging forwarded-mail deliverability incidents. - SPF mechanisms explained
— focused mechanism-vocabulary deep dive
for SPF record authors and operators
(RFC 7208). Each of the eight RFC 7208
mechanisms (
a,mx,ptr,ip4,ip6,exists,include,all) gets its own labelled subsection with the canonical Definition / Syntax / DNS lookup cost / When to use / Pitfalls structure; each of the four qualifiers (+,-,~,?) and the two modifiers (redirect=,exp=) gets the same treatment. Also covers the left-to-right first-match evaluation order (RFC 7208 §4.6.2), the cumulative lookup-cost accounting against the 10-DNS-lookup cap (RFC 7208 §4.6.4), five worked deployment examples (single on-prem mail server, Microsoft 365, Google Workspace, hybrid M365 + transactional ESP, parked domain), and the seven most common mechanism-level pitfalls operators hit in production. Differentiation from sibling pages: the SPF pillar (help_spf_explained.php) surveys the whole protocol while this page is the focused mechanism-reference deep dive search engines and LLMs cite when asked "what does the SPF include mechanism do" or "is SPF ptr deprecated". - include vs ip4 vs a vs mx
— focused 4-way decision view on the four
IP-providing SPF mechanisms operators
actually pick between when authoring or
modifying an SPF record (RFC 7208 §5). Each
of the four mechanisms (
include§5.2,ip4§5.6,a§5.3,mx§5.4) gets a labelled Definition / Syntax / Lookup cost / When to use / When NOT to use / Common pitfalls subsection. Includes a side-by-side comparison table, a five-question decision matrix, three worked deployment examples (single on-prem Postfix, Microsoft 365 + Mailchimp, Google Workspace hybrid), and the seven most common mechanism-choice mistakes (usingmxfor cloud mail, hardcoding cloud-provider IPs withip4, stale includes for ex-vendors, bareaon a domain whose apex points at a website, hitting the 10-lookup cap,ip4:0.0.0.0/0, forgetting IPv6). Complementary to help_spf_mechanisms_explained.php (the COMPLETE 8-mechanism + 4-qualifier + 2-modifier reference) — THIS page is the focused decision view for the IP-providing subset. - SPF qualifiers explained
— focused per-qualifier dimensional analysis of
the four SPF qualifiers defined by RFC 7208
section 4.6.2:
+(Pass, the default producingspf=pass),-(Fail, producingspf=failwith optional SMTP rejection per §4.7),~(SoftFail, producingspf=softfailas a weak unauthorised signal), and?(Neutral, producingspf=neutralequivalent to no SPF record). Each qualifier gets a labelled Definition / Syntax / Receiver behaviour / When to use / When NOT to use / Common pitfalls subsection. Includes a side-by-side comparison table, a receiver-side interpretation matrix for Gmail / Microsoft 365 / Yahoo / Apple iCloud, four worked deployment examples (production-all, deployment~allwith DMARC rua, null-sender domainv=spf1 -all, per-mechanism SoftFail vendor deprecation), and the seven most common qualifier-choice mistakes (+allin production, indefinite~all,?allfor soft enforcement, omitted terminal qualifier, incoherent~all+ DMARC reject, premature flip to-all, per-mechanism-on uncontrolled include). The canonical answer to "-allvs~all" and the SPF enforcement-ramp playbook for migrating from monitoring to strict rejection. - SPF DNS record syntax explained
— focused DNS-record-level SYNTAX reference for
SPF (RFC 7208 section 3). Documents the
mandatory
v=spf1version tag (§4.5, case-insensitive but conventionally lowercase), the TXT record type (§3.1; the legacy SPF type 99 was deprecated by §14.1), the 255-octet character-string limit and multi-string concatenation rule (RFC 1035 §3.3, RFC 7208 §3.3), whitespace separators and case-sensitivity rules (§4.6.1 and the ABNF in §12), the "exactly one SPF record per domain" rule (§3.2 — multiple records producepermerror), publication at the apex vs subdomain with no inheritance (§3.4), wildcard DNS records, comment syntax (there are none), six worked syntactic examples (minimum well-formed record, apex with on-prem + SaaS senders, multi-string chunking, per-subdomain records with null backstops, IDN A-label encoding,redirect=delegation), and the seven most common syntax mistakes (missingv=spf1, multiple SPF records, 255-character overflow without chunking, tab characters and leading whitespace, U-label domains, apex CNAME, wrong publication name). Differentiation: help_spf_mechanisms_explained.php is the semantic vocabulary reference; THIS page is the focused DNS-record-level syntactic reference. - Why SPF alone is insufficient — focused EEAT-authority synthesis answering the canonical operator question "Do I need DMARC if I have SPF?". Enumerates ALL SIX structural limitations of SPF (no header-From alignment, no body integrity, the first-hop- only model, the 10-DNS-lookup ceiling, no policy advertisement, no failure reporting), names exactly which limitations DKIM closes (limitations 2 and 3 via cryptographic body signing) and which only DMARC closes (limitations 1, 4, 5, and 6 via alignment, policy advertisement, and aggregate reporting), and presents the SPF + DKIM + DMARC minimum viable posture as the operational answer. Includes a six-month migration playbook, a decision matrix mapping eight common organisational profiles (small business, SaaS sender, marketing-only domain, parked domain, hybrid Microsoft 365, Google Workspace, legacy on-prem Exchange, regulated industry) to the appropriate posture, and real-world examples drawn from public DMARC-failure incidents.
- SPF for Microsoft 365 (Exchange Online)
— focused operator-implementation walkthrough
for SPF on Microsoft 365 / Exchange Online
tenants. Documents the canonical M365 SPF
record (
v=spf1 include:spf.protection.outlook.com -all), thespf.protection.outlook.cominclude chain in depth (flatip4/ip6enumeration, single realised lookup), the third-party- sender SPF addition pattern with canonical includes for eight major services (Mailchimp, SendGrid, Mailgun, Salesforce, Marketo, Amazon SES, Zendesk, HubSpot), hybrid Microsoft 365 + on-prem Exchange Server SPF for Centralized Mail Transport (CMT) and Direct-Delivery topologies, the 10-lookup cap of RFC 7208 section 4.6.4 with three canonical mitigations (flattening, relay consolidation, subdomain partitioning), the<tenant>.onmicrosoft.comSPF gotcha that produces the symptom "SPF passes but DMARC fails for my custom domain", a four-step verification workflow (dig, PowerShellResolve-DnsName, Defender portal message trace, Email Header Analyzer), seven common Microsoft 365 SPF mistakes, a per- symptom troubleshooting decision matrix, and four real-world examples (startup, SaaS, enterprise hybrid, on-prem-to-cloud migration). For Microsoft 365 operators debugging SPF, DMARC alignment, or third- party sender authorisation on Exchange Online tenants. - SPF for Google Workspace (Gmail)
— focused operator-implementation walkthrough
for SPF on Google Workspace / Gmail tenants.
Documents the canonical Workspace SPF record
(
v=spf1 include:_spf.google.com -all), the_spf.google.comnested-include chain in depth (three_netblocks{,2,3}.google.comrecords consuming 4 lookups out of the box), the third-party-sender SPF addition pattern with canonical includes for eight major services (Mailchimp, SendGrid, Mailgun, Salesforce, HubSpot, Amazon SES, Marketo, Zendesk), the Google Workspace SMTP relay service (smtp-relay.gmail.com) gotcha and its subdomain-SPF fix, the 10-lookup cap of RFC 7208 section 4.6.4 with three canonical mitigations (sender consolidation, subdomain delegation, SPF flattening), a six-surface verification workflow (dig, include-chaindig, Admin console Authenticate email screen, Google Postmaster Tools, Authentication-Results header, Domain Security Checker), seven common Workspace SPF mistakes, a per-symptom troubleshooting decision matrix, and four real-world examples (startup, SaaS at the 10-lookup cap, enterprise subdomain delegation, M365-to-Workspace migration). Includes the Feb 2024 Google bulk sender requirements context (-allmandate and high SPF pass-rate target for senders over 5000 messages/day togmail.com). For Google Workspace operators debugging SPF, DMARC alignment, or third-party sender authorisation on Gmail tenants. - DKIM explained
— DomainKeys Identified Mail (RFC 6376): how the
cryptographic signature works, DNS record syntax,
selectors, simple vs relaxed canonicalization, the
zero-downtime key-rotation procedure, RFC 8301
crypto requirements (2048-bit RSA, SHA-256), and
troubleshooting
dkim=fail/permerrorresults. - DKIM canonicalization: simple vs relaxed, the c= tag, and the seven body-hash mismatch causes
— byte-level deep dive on the
RFC 6376 §3.4
canonicalization algorithms. Covers the two
header algorithms (
simpleper §3.4.1,relaxedper §3.4.2), the two body algorithms (simpleper §3.4.3,relaxedper §3.4.4), the fourc=tag combinations declared in theDKIM-Signatureheader, the optionall=partial-body-length tag with its security trade-off, the seven most common body-hash mismatch causes (forwarder whitespace folding, mailing-list footer injection, content-transform middleware, transfer-encoding changes, MIME re-encoding, trailing CRLF normalisation, Subject-prefix rewriting), the receiver-side forensic detection workflow via the Authentication- Results header (RFC 8601), four worked byte-level examples covering each algorithm, and the per-provider canonicalization defaults for Microsoft 365, Google Workspace, Amazon SES, SendGrid, Mailgun, Mailchimp, Postmark, SparkPost, OpenDKIM, Postfix dkim-milter, and Exim DKIM. The canonical answer to DKIM body-hash mismatch debugging. - DKIM selectors explained: the s= tag, the _domainkey DNS label tree, and the multi-selector pattern
— the selector vocabulary deep dive on
RFC 6376 §3.1
and
§3.6.1.
Covers the selector identifier in the
s=tag of the DKIM-Signature header, the<selector>._domainkey.<domain>DNS label tree where the public key is published, the every-tag reference for the published selector record (v=DKIM1,k=rsaork=ed25519per RFC 8463,p=,t=,h=,s=,n=), the eight selector-naming patterns operators encounter (numbered-pairselector1/selector2, date-based20240301, provider-namedgoogle/mailgun, short-letters1/k1, opaque-identifier, purpose-based, Microsoft-365 hyphenated, hosted-service prefix), the provider selector catalogue for Microsoft 365 / Google Workspace / Amazon SES / SendGrid / Mailgun / Mailchimp / Postmark / SparkPost / Klaviyo / HubSpot / Brevo, the multi-selector / multi-vendor deployment model, the dual-selector zero-downtime rotation pattern, and the seven most common selector-related failures (NXDOMAIN, wrong selector, stale selector, 255-byte TXT split, CNAME-vs-TXT confusion, wildcard interference, DNS propagation lag) with symptom / diagnosis / fix for each. - DKIM key rotation: procedure, cadence, and best practices — operational deep dive on DKIM key rotation (RFC 6376 + RFC 8301): why rotate (cryptographic strength erosion, key compromise, replay attacks), when to rotate (scheduled cadence and trigger events), the canonical dual-selector zero-downtime procedure, the single-selector emergency hot-swap, per-provider automation for Google Workspace, Microsoft 365, Amazon SES, Mailgun, Postmark, and SendGrid, the 1024-bit deprecation and the 2048-bit RSA / Ed25519 (RFC 8463) migration path, and the 255-byte TXT-record pitfall that silently corrupts large public keys at some DNS provider UIs.
- DKIM replay attacks: mechanics, detection and defences — focused security-research deep dive on the DKIM replay attack class (RFC 6376 §3.5 explicitly leaves replay-defence to the receiver): the canonical four-step attack mechanics (capture a legitimately signed message, preserve the signed bytes verbatim, construct a new SMTP envelope, fan out to the victim list), why DMARC by design does not stop replay (the replayed message still passes DKIM and is still aligned), the 2024 gmail / yahoo bulk-sender response, the four attack-vector taxonomy, detection signals at the original sender (DMARC RUA aggregate-report volume disparity is the strongest), the seven canonical defences, and the in-progress RFC 6376bis body-length-restricted- replay drafts.
- DKIM cryptography basics: RSA, Ed25519, SHA-256, canonicalization
— the foundational cryptographic reference under
the DKIM pillar
(RFC 6376
+
RFC 8301
+
RFC 8463):
asymmetric (public-key) cryptography in plain
language, RSA signing (
rsa-sha256) and the 1024-bit deprecation under RFC 8301 + NIST SP 800-57 part 3, Ed25519 (RFC 8463) and the canonical dual-algorithm deployment pattern, the SHA-256 hash function and whyrsa-sha1was deprecated by RFC 8301 following the 2017 SHAttered collision demonstration, the five-step signing operation (canonicalize body, compute body hash, build signed-headers blob, sign with private key, base64 encode), the five-step verification operation at the receiver, the cryptographic role of canonicalization (relaxed/relaxed default), and the 255-byte DNS TXT character-string limit (RFC 1035 §3.3.14) that forces 2048-bit RSA keys to be split across multiple strings. - DNS propagation: TTL mechanics, resolver caching, and verification
— cross-cutting operational deep dive on DNS
propagation
(RFC 1035
+
RFC 2181
+
RFC 2308):
what propagation actually IS (resolver-cache
aging, not a server-side wave), TTL mechanics,
the role of authoritative nameservers versus
recursive resolvers versus stub clients, the
canonical propagation timeline, the
multi-resolver verification workflow
(
dig +trace, 8.8.8.8 / 1.1.1.1 / 9.9.9.9 cross-checks), recommended TTLs for each email-authentication record type (300 seconds for DKIM keys being rotated, 3600 for stable SPF and DMARC, 86400 for static BIMI and MX), DNS provider quirks (Cloudflare proxied records carry a forced 5-minute TTL), and the common misconception that "DNS not propagated yet" is the right diagnosis (wrong 95 percent of the time). - MX records explained: syntax, priority, null MX, mail-delivery sequence — cross-cutting DNS-foundation spoke (RFC 1035 §3.3.9 record syntax + RFC 5321 §5.1 SMTP delivery rules + RFC 7505 null MX): what an MX record IS, MX priority semantics (lower number = higher preference), the canonical sender → MX lookup → A/AAAA → SMTP delivery sequence, the implicit MX rule (RFC 5321 §5.1 falls back to the A/AAAA record only if no MX records exist), the backup-MX anti- pattern, how MX records interact with SPF and DMARC (they do not directly — MX governs inbound, SPF and DMARC govern outbound), per- provider MX patterns (Google Workspace, Microsoft 365, Amazon SES, self-hosted Postfix or Exim), null MX for parked domains, MX and MTA-STS / DANE transport security, TTL recommendations, and the no-CNAME rule (RFC 1034 §3.6.2 + RFC 2181 §10.3 prohibit MX targets from being CNAME aliases).
- Reverse DNS and PTR records explained: FCrDNS, in-addr.arpa, ip6.arpa, per-provider PTR setup — cross-cutting DNS-foundation spoke (RFC 1035 §3.3.12 PTR record syntax + RFC 1912 §2.1 PTR operational requirement + RFC 5321 §4.1.1.4 + §5.1 receiver-side trust-baseline + RFC 7208 §5.5 SPF "ptr" mechanism deprecation + RFC 8499 DNS terminology): what a PTR record IS, the in-addr.arpa zone encoding for IPv4 (octets reversed) and the ip6.arpa nibble-reversed encoding for IPv6, the forward-confirmed reverse DNS (FCrDNS) check that mail receivers run against every connecting SMTP client (PTR → A/AAAA → compare), why receivers REJECT IPs without matching PTR (550 5.7.1 series errors), per-provider PTR setup (Amazon EC2 / Google Cloud Compute / Azure VM / Hetzner / DigitalOcean / Linode / self-hosted BIND), the explicitly-deprecated SPF "ptr" mechanism (RFC 7208 §5.5 SHOULD NOT BE PUBLISHED), shared-IP and cloud-load-balancer considerations, the IPv6-PTR mandate from Gmail and Microsoft 365 for IPv6-enabled senders, TTL recommendations, common PTR mistakes, and the diagnostic funnel for "mail is bouncing because reverse DNS is missing".
- BIMI explained
— Brand Indicators for Message Identification:
the DNS record syntax (
default._bimi,v=BIMI1; l=; a=), SVG Tiny PS logo requirements, Verified Mark Certificates (VMC) from DigiCert and Entrust, mailbox-provider compatibility (Gmail, Apple Mail, Yahoo, AOL, Outlook), and why BIMI requires DMARC atp=quarantineorp=reject. - BIMI SVG Tiny PS logo requirements (deep-dive spoke off the BIMI pillar)
— the byte-by-byte file-format reference for the
SVG Tiny PS profile every BIMI logo must conform
to. Covers the four required root
<svg>attributes (version="1.2",baseProfile="tiny-ps",xmlns, squareviewBox), the<title>first-child requirement (accessibility + validator compliance), the categorical forbidden-element list (<script>,<a>,<animate>, embedded<image>raster,<foreignObject>), the forbidden-attribute list (on*event handlers, externalhref/xlink:href,javascript:URIs,@font-face), the 32KB file-size cap, the 1:1 (square) aspect ratio rule, the solid-background requirement (light + dark mode), the UTF-8 encoding rule, the HTTPS +image/svg+xmlContent-Type serving contract, 7 worked examples (1 minimal compliant + 6 common rejection cases), the BIMI Group converter / SVGO / validator toolchain, and 11 common Tiny PS mistakes (Illustrator-export-as-is, missingbaseProfile, non-squareviewBox, transparent background, embedded raster, external font, event handlers, over-32KB files, plain HTTP serving, SVG-edit-without-VMC-reissue). - BIMI Verified Mark Certificates: VMC and CMC (deep-dive spoke off the BIMI pillar)
— the certificate-acquisition workflow operators
need when they have a valid SVG and need to
acquire a Verified Mark Certificate. Covers the
VMC vs CMC distinction (registered trademark vs
common-law mark; SVG-display vs blue-checkmark
coverage), the two authorised CAs (DigiCert and
Entrust under the CA/Browser Forum Mark
Certificate profile with
id-pe-logotypeOID1.3.6.1.5.5.7.1.12), the six accepted trademark registries (USPTO, EUIPO, UKIPO, JPO, IP Australia, CIPO), the 3-6 week end-to-end acquisition workflow with registry-coordination as the long pole, the RFC 3709 LogotypeExtn SHA-256 SVG-hash binding mechanism, the HTTPS +application/pem-certificate-chainserving rules, the annual renewal calendar with 90 / 60 / 30-day reminders, the SVG-edit-breaks-binding re-issuance trigger, ten common rejection causes with diagnostic funnel (DMARC atp=none, alignment fail, SVG-hash drift, expiry, revocation, plain HTTP, wrong Content-Type, missing intermediates, wrong root, receiver reputation gating), six workedopenssl x509+curlexamples, and the USD 1,000-3,000 typical cost range. - MTA-STS explained
— SMTP MTA Strict Transport Security (RFC 8461):
the DNS record (
_mta-sts,v=STSv1; id=), the HTTPS-served policy file at/.well-known/mta-sts.txt, thenone/testing/enforcemigration path, and an MTA-STS vs DANE comparison. Pairs with TLS-RPT (RFC 8460) for monitoring. - MTA-STS vs DANE for SMTP — the comparison deep-dive sibling spoke off the MTA-STS pillar: trust-anchor difference (public web PKI vs DNSSEC), the canonical DANE-EE / SubjectPublicKeyInfo / SHA-256 TLSA deployment shape (Usage 3 / Selector 1 / MatchingType 1), provider support reference (Google, Microsoft 365, Yahoo, ProtonMail, Posteo, Comcast), the RFC 7672 §1.3 coexistence rule, a decision matrix for which to deploy first, and migration paths between the two. Pairs with TLS-RPT (RFC 8460) for unified observability across both standards.
- MTA-STS policy file syntax
— the focused policy-file-level reference
for the MTA-STS policy served at
https://mta-sts.<domain>/.well-known/mta-sts.txtper RFC 8461 §3.2. Documents the four canonical keys (version: STSv1,mode: enforce|testing|none,mx:with single-label wildcard semantics,max_age:with the 31557600-second one-year hard maximum), the HTTPS-only public-PKI fetch contract, thetext/plainContent-Type requirement, the no-BOM and no-comments rules (UTF-8 BOM at file head causes the version line to fail matching; any unrecognised line including# commentcauses the entire policy to be rejected), CRLF/LF line endings, the coordinated coupling with the_mta-sts.<domain>TXT record carrying theid=<token>tag that signals when senders should re-fetch (every policy edit MUST be paired with anidbump), the canonical testing-mode burn-in workflow (publish withmode: testing+ shortmax_age: 86400, deploy TLS-RPT for visibility, wait 7-14 days, review reports for sts-policy-fetch-error / sts-policy-invalid / sts-webpki-invalid / certificate-host-mismatch, fix issues, promote tomode: enforce), six canonical examples (minimal enforce / testing-mode burn-in / multi-MX enumeration / single-label wildcard / emergency rollback with mode: none / combined deployment with TLS-RPT sibling record), and ten common operator mistakes (UTF-8 BOM, comments in file, HTTP not HTTPS, self-signed cert on mta-sts.<domain>, wrong Content-Type, capital-letter mode value, lowercase version value, multi-label mx: wildcard, missingidbump after policy edit, excessivemax_age). Pairs with TLS-RPT for monitoring and with the MTA-STS protocol pillar + MTA-STS-vs-DANE comparison spoke. - MTA-STS for Microsoft 365 (deployment guide)
— the first MTA-STS provider-deployment
spoke off the MTA-STS pillar. Focused
operator-implementation walkthrough for
Microsoft 365 / Exchange Online tenants
covering the four-step deployment
(publish
_mta-sts.<your-domain>TXT record withv=STSv1; id=<token>, stand up external HTTPS hosting atmta-sts.<your-domain>— M365 does NOT host the policy file natively; typical hosts are Azure Static Web Apps, Azure Front Door, Cloudflare Pages, AWS S3 + CloudFront, GitHub Pages, Netlify, Vercel, or any commodity LAMP/NGINX host with a publicly-trusted certificate matchingmta-sts.<your-domain>— serve the policy file athttps://mta-sts.<your-domain>/.well-known/mta-sts.txtwith Content-Typetext/plaincontaining the four canonical RFC 8461 §3.2 keys (version: STSv1,mode: testing|enforce|none,mx:,max_age:), publish the TLS-RPT companion record at_smtp._tls.<your-domain>withv=TLSRPTv1; rua=mailto:tls-reports@<your-domain>), the MX enumeration for standard M365 tenants (<tenant>-com.mail.protection.outlook.comwith dashed-domain transformation), hybrid Exchange tenants (both on-prem Edge MX and M365 MX), multi-domain tenants (each domain needs its own policy), and third-party security gateway setups (Mimecast, Proofpoint, Barracuda, FortiMail — gateway MX replaces protection.outlook.com), the absence of any Defender-portal MTA-STS panel (noSet-MtaStsConfigcmdlet, no Exchange admin centre pane — all configuration is operator-driven at DNS and external HTTPS layers), the testing-mode burn-in workflow (publish withmode: testing+max_age: 86400for 7-14 days while TLS-RPT reports populate, reviewsts-policy-fetch-error,sts-policy-invalid,sts-webpki-invalid,certificate-host-mismatchinfailure-details[], promote tomode: enforceonce stable for 7+ consecutive days), the id-token bump discipline (every policy edit MUST coincide with a freshid=value in the_mta-stsTXT record), and Exchange Online's dual role as both a recipient (with M365 inbound MX) and an MTA-STS-honoring sender (from 2022 onward; fetches recipient policies and refuses to deliver over plaintext whenmode: enforceis in effect). Documents ten common operator mistakes (assuming Microsoft hosts the policy file, looking for a Defender portal MTA-STS panel, publishing at the bare apex instead of the mta-sts subdomain, forgetting the leading underscore on the TXT record, promoting to enforce before the HTTPS endpoint is reachable, enumerating the wrong MX hostname, forgetting to bump the id-token after a policy edit, using a wildcard certificate that doesn't cover the mta-sts subdomain, skipping TLS-RPT, capital- letter mode value) and a five-symptom troubleshooting decision matrix mapping TLS-RPT failure types to diagnostic next steps. Pairs with the MTA-STS protocol pillar, the policy-file syntax spoke, the MTA-STS-vs-DANE comparison spoke, the TLS-RPT cluster pair (record-syntax + report-format), and the M365 sibling deployment guides for DMARC / DKIM / SPF. - MTA-STS for Google Workspace (deployment guide)
— the Workspace counterpart to the M365
MTA-STS deployment spoke above; completes
the MTA-STS provider-deployment pair off
the MTA-STS pillar. Focused
operator-implementation walkthrough for
Google Workspace / Gmail-for-business
tenants covering the four-step deployment
(publish
_mta-sts.<your-domain>TXT record withv=STSv1; id=<token>, stand up external HTTPS hosting atmta-sts.<your-domain>— Workspace does NOT host the policy file natively; Workspace-aligned hosts are Firebase Hosting, Cloud Run, Google Cloud Storage + Cloud CDN with Cloud Load Balancing for HTTPS, plus the cross-platform options Cloudflare Pages, AWS S3 + CloudFront, GitHub Pages, Netlify, Vercel, or any commodity LAMP/NGINX host with a publicly-trusted certificate matchingmta-sts.<your-domain>— serve the policy file athttps://mta-sts.<your-domain>/.well-known/mta-sts.txtwith Content-Typetext/plaincontaining the four canonical RFC 8461 §3.2 keys (version: STSv1,mode: testing|enforce|none,mx:,max_age:), publish the TLS-RPT companion record at_smtp._tls.<your-domain>withv=TLSRPTv1; rua=mailto:tls-reports@<your-domain>), the MX enumeration for Workspace tenants on the legacy five-target MX configuration (aspmx.l.google.complusalt1.aspmx.l.google.comthroughalt4.aspmx.l.google.com, with the*.l.google.comwildcard as a valid one-line alternative), the simplified single-target MX configuration (smtp.google.com) for newer tenants, and third-party security gateway setups (Mimecast, Proofpoint, Barracuda, FortiMail — gateway MX replaces aspmx.l.google.com), the absence of any Admin Console MTA-STS panel (nogcloud workspace mta-stscommand, no Postmaster Tools pane — all configuration is operator-driven at DNS and external HTTPS layers), the testing-mode burn-in workflow (publish withmode: testing+max_age: 86400for 7-14 days while TLS-RPT reports populate, reviewsts-policy-fetch-error,sts-policy-invalid,sts-webpki-invalid,certificate-host-mismatchinfailure-details[], promote tomode: enforceonce stable for 7+ consecutive days), the Gmail-as-sender 604800 max_age honoring cap (advertised values higher than one week are silently capped at 604800 by Gmail-as-sender per Google's public documentation), the id-token bump discipline (every policy edit MUST coincide with a freshid=value in the_mta-stsTXT record), and Gmail's dual role as both a recipient (with Workspace inbound MX) and an MTA-STS-honoring sender (from 2018 onward — Google was an early sender-side implementer; fetches recipient policies and refuses to deliver over plaintext whenmode: enforceis in effect). Documents ten common operator mistakes (assuming Google hosts the policy file, looking for an Admin Console MTA-STS panel, publishing at the bare apex instead of the mta-sts subdomain, forgetting the leading underscore on the TXT record, listing only aspmx.l.google.com without the alt1-4 siblings, promoting to enforce before the HTTPS endpoint is reachable, forgetting to bump the id-token after a policy edit, using a wildcard certificate that doesn't cover the mta-sts subdomain, skipping TLS-RPT, setting max_age higher than 604800 expecting Gmail to honor it) and a five-symptom troubleshooting decision matrix mapping TLS-RPT failure types to diagnostic next steps. Pairs with the MTA-STS protocol pillar, the policy-file syntax spoke, the MTA-STS-vs-DANE comparison spoke, the M365 MTA-STS counterpart, the TLS-RPT cluster pair (record-syntax + report-format), and the Workspace sibling deployment guides for DMARC / DKIM / SPF. - DANE for SMTP explained
— the DANE pillar deep-dive (RFC 7672 +
RFC 6698): TLSA record format and Usage /
Selector / MatchingType field matrix, the
canonical
3 1 1(DANE-EE / SubjectPublicKeyInfo / SHA-256) deployment shape, end-to-end deployment recipe with workedopenssl s_clientanddig +dnssecexamples, the two-record overlap pattern for key rotation, provider support reference, the DNSSEC dependency and what happens when the chain is bogus or insecure, common mistakes, and the diagnostic funnel for "DANE-validating sender bounced our mail". Pairs with the MTA-STS pillar plus the side-by-side comparison spoke. - TLS-RPT explained
— SMTP TLS Reporting (RFC 8460): the DNS
record (
_smtp._tls,v=TLSRPTv1; rua=), the JSON report format (policies[],summary,failure-details[]), the result- type catalogue (certificate-host-mismatch,sts-policy-fetch-error,starttls-not-supported, and 9 more), and integration with DMARC Analyzer's TLS-RPT ingestion pipeline. - TLS-RPT DNS record syntax
— the focused byte-level reference for the
TLS-RPT TXT record at
_smtp._tls.<domain>per RFC 8460 §3. Documents the mandatoryv=TLSRPTv1version tag (case- sensitive uppercase, MUST appear first), the mandatoryrua=reporting URI list with both themailto:scheme (MIME typeapplication/tlsrpt+jsonwith<reporter>!<policy-domain>!<unix-start>!<unix-end>.json[.gz]filename convention) and thehttps:scheme (HTTP POST withContent-Type: application/tlsrpt+json, 2xx success / 4xx permanent failure / 5xx transient failure), comma-separated multi-URI destinations, and the cross-domain authorisation record at<recipient>._report._smtp._tls.<external>that prevents abusive TLS-RPT-pointing-at-victim-mailbox attacks. Covers the three-label_smtp._tls.<domain>publishing location (RFC 8552 underscore- label convention), the no-subdomain- inheritance rule, the 255-octet character-string limit (RFC 1035 §3.3.14) and how multi-destinationrua=values that exceed it chunk into adjacent quoted strings, six canonical examples (minimalmailto:/ singlehttps:/ multi-destination / cross-domain with authorisation / subdomain coverage / combined TLS-RPT + MTA-STS deployment), and ten common operator mistakes (lowercasev=tlsrptv1, missing leading underscore on_smtpor_tls, missingrua=, tworua=tags, semicolon between URIs, missing scheme prefix, angle brackets aroundmailto:, plaintexthttp:, cross-domainrua=without authorisation, multiple records at the same_smtp._tlsname) — each producing silent record-ignoring with no operator-visible error signal. Pairs withhelp_tls_rpt_explained.php(the protocol pillar covering the JSON report format and result-type catalogue) and the SPF / DKIM / DMARC byte-syntax siblings. - Microsoft SNDS and JMRP explained — the Microsoft-consumer-network sender-reputation deep dive: what SNDS (Smart Network Data Services) reports per sending IP per day (SMTP activity, RCPT/DATA counts, the GREEN / YELLOW / RED filter verdict, complaint rates, blocked IP ranges), how the JMRP (Junk Mail Reporting Program) complaint feedback loop delivers ARF (RFC 5965) reports — redacted since June 2026, with Message-ID and custom-X-header attribution — plus the Automated Data Access key workflow with its silent 30-day expiry, the substrate.office.com portal migration, and a side-by-side SNDS-vs-DMARC comparison. The IP-centric, Microsoft-only reputation companion to the domain-centric aggregate reporting this pillar documents: DMARC tells you how every receiver authenticated your domain, SNDS tells you how the Outlook.com network filtered your IPs — operators monitoring a deliverability incident at Hotmail / Outlook.com need both feedback channels.
- TLS-RPT JSON report format
— the focused semantic-layer reference for
the on-the-wire TLS-RPT report schema per
RFC 8460 §4.
Field-by-field deep dive of every object
in the report document: top-level metadata
(
organization-name,date-rangewith ISO-8601 UTC start/end,contact-info,report-idas the receiver-side dedup key,policies[]array), thepolicyobject (policy-typeone ofsts/tlsa/no-policy-found,policy-stringas a verbatim line-array reproduction of the evaluated policy,policy-domain,mx-host), thesummaryobject withtotal-successful-session-countandtotal-failure-session-count(both per SESSION not per message), and thefailure-details[]array with the eight per-failure-shape fields (result-type,sending-mta-ip,receiving-mx-hostname,receiving-mx-helo,receiving-ip,failed-session-count,additional-information,failure-reason-code). Covers the 12 canonicalresult-typevalues (starttls-not-supported,certificate-host-mismatch,certificate-expired,certificate-not-trusted,validation-failure,sts-policy-fetch-error,sts-policy-invalid,sts-webpki-invalid,tlsa-invalid,dnssec-invalid,dane-required,certificate-error) with per-value remediation guidance, theapplication/tlsrpt+jsonvsapplication/tlsrpt+gzipMIME distinction (RFC 8460 §4) with the gzip magic-number1F 8Bbody inspection recommendation, the mailto: attachment filename convention<reporter>!<policy-domain>!<unix-start>!<unix-end>.json[.gz](RFC 8460 §5.1) with the four exclamation-mark-separated components, thereport-id-keyed redelivery / deduplication semantics (UNIQUE constraint on the column with defense-in-depth tuple dedup on(organization-name, report-id)), five worked example reports (no-policy-found-all-successes, sts-with-certificate-host-mismatch, multi-failure-sts-policy-fetch-error-and- starttls-not-supported, DANE-TLSA-failure, multi-policy-domains-in-single-document), and ten common ingestion-pipeline failure modes (counting failed-session-count as messages, not deduplicating on report-id, ignoring no-policy-found, not gunzipping application/tlsrpt+gzip, conflating sending-mta-ip with From: header domain, ignoring empty failure-details arrays, treating certificate-error as cert-trust failure, hard-failing on unknown result-type values, not validating summary-vs-failure-details sum, storing policy-string as a single string). Pairs with the TLS-RPT record-syntax sibling for the SYNTAX-layer half of the TLS-RPT two-spoke reference set. - CAA records explained
— Certification Authority Authorization
(RFC 8659): the DNS record format
(
flags/tag/value), property tags (issue,issuewild,iodef), the CA identifier registry, the tree-walking lookup algorithm, and integration with the MTA-STS / BIMI deployment chain (incompatible CAA silently blocks both). - DMARC record tags explained
— every tag in the DMARC DNS record
(
v,p,sp,np,pct,rua,ruf,adkim,aspf,fo,rf,ri) with syntax, defaults, interaction rules, and worked examples. Covers RFC 7489, thenpextension in RFC 9091, and the deprecations coming in dmarcbis. - DMARC alignment explained
— identifier alignment (RFC 7489 §3.1, §6.6.2):
the SPF d-domain, the DKIM
d=tag, the From: header,adkimandaspfstrict vs relaxed modes, the organizational domain and the Public Suffix List. The single concept that differentiates DMARC from bare SPF+DKIM — and the most common source of DMARC-fail-while-SPF-and-DKIM-pass anomalies in aggregate reports. - DMARC policy rollout
— the operational migration from
p=nonethroughp=quarantinetop=reject(RFC 7489 §6.3): the three policy states with recoverability tradeoffs, the five-phase rollout sequence, thepct=sampling tag for gradual enforcement, subdomain policy timing (sp=andnp=), and a worked Week 0 → Week 26 timeline. The page that prevents self-inflicted email outages during DMARC deployment. - DMARC deployment checklist (operator quick-reference)
— the concise per-phase action list that
complements the policy-rollout deep dive: the
prerequisites checklist (DNS edit access,
complete sender inventory, monitoring
mailbox for aggregate reports), the per-phase
action items for discovery (
p=none), triage (alignment fixing), quarantine (p=quarantine), and enforcement (p=reject), the exit criteria that determine when each phase is complete, a decision matrix for the common scenarios that arise mid-deployment (high-volume unknown source, previously-aligned sender suddenly failing, acquired company domain, non-sending subdomains), and an FAQ for the questions operators ask most often during real-world DMARC projects. The page an implementer keeps open in a second tab. - DMARC policy modes: p=none vs p=quarantine vs p=reject
— the head-to-head comparative reference for
the three policy values from RFC 7489 §6.3.
Distinct from the policy-rollout journey
(timeline) and the deployment checklist
(action items); this page is the comparative
deep dive: per-mode semantics, side-by-side
comparison table across 11 dimensions
(disposition, reports, spoofing prevention,
sender feedback, BIMI eligibility, CISA BOD
18-01 compliance, legitimate-mail risk,
defensive value, typical duration,
pct=downgrade behaviour, recovery path), receiver behaviour at the major mailbox providers (Gmail, Microsoft 365, Yahoo, Apple iCloud), thepct=sampling tag interaction (including the draft-ietf-dmarc-dmarcbis removal ofpct=), howsp=andnp=subdomain policy modes interact with the apexp=, a scenario-based decision matrix (brand-new domain, established domain never deployed DMARC, stuck-at-p=none, parked domain, acquired domain, stubbornly misaligned legacy sender, BIMI deployment), common mistakes, and an 8-question FAQ. The page operators read when stakeholders ask "what is the difference between p=quarantine and p=reject?" or "why is p=none not sufficient?". - DMARC aggregate (RUA) reports
— the daily XML stream receivers send back
(RFC 7489 §7.2, Appendix C): the schema
(
<feedback>/<report_metadata>/<policy_published>/<record>), the delivery mechanism (gz email attachments), a worked report example, operational reading patterns, and the forensic (RUF) sibling defined in §7.3 with RFC 6591 ARF. The data-format reference behind every rollout decision. - DMARC forensic (RUF) reports
— the per-message MIME sibling of
aggregate reports (RFC 7489 §7.3,
RFC 6591 AFRF): the
multipart/reportenvelope, themessage/feedback-reportkey-value schema (Feedback-Type,Reported-Domain,Auth-Failure,Source-IP,Original-Mail-From,DKIM-Domain,DKIM-Selector,Identity-Alignment,Delivery-Result), thefo=failure-reporting-options tag, a worked AFRF example, the major-receiver coverage reality (Google never, Microsoft no, Yahoo stopped), and the GDPR / CCPA privacy implications every operator should weigh before publishingruf=. - Email authentication explained — the cluster-intro pillar covering the full ecosystem (SPF + DKIM + DMARC + ARC + BIMI + MTA-STS + TLS-RPT + CAA): how the seven standards interlock, the threat model (spoofing / phishing / BEC) they exist to address, the SMTP envelope vs From: header plumbing that makes DMARC alignment possible, the canonical deployment sequence, and an operator decision tree. The top-level entry point if you are new to email authentication.
- ARC (Authenticated Received Chain) explained
— RFC 8617: the standard that preserves
the original SPF / DKIM / DMARC verdict
across forwarding hops. The three ARC
headers (AAR, AMS, AS), chain validation
states (
cv=pass/cv=fail/cv=none), receiver support, the trust model, and worked multi-hop examples. The standard that makes DMARC atp=rejectcoexist with legitimate mailing lists and forwarding. - DMARC for Google Workspace (deployment guide)
— the operator walkthrough for deploying
SPF, DKIM, and DMARC on a Google
Workspace tenant. Admin Console UI paths
("Authenticate email"), the canonical
_spf.google.comSPF include, thegoogle._domainkeyselector, Postmaster Tools integration, and the Feb 2024 Google/Yahoo bulk- sender requirements that drive enforcement urgency for any domain sending >5000 messages/day to gmail.com or yahoo.com. - DMARC for Microsoft 365 (deployment guide)
— the operator walkthrough for deploying
SPF, DKIM, and DMARC on a Microsoft 365
/ Exchange Online tenant. Microsoft 365
Defender portal UI paths
(security.microsoft.com > Email
authentication settings > DKIM), the
canonical
spf.protection.outlook.comSPF include, the dual-selector CNAME delegation model (selector1andselector2pointing at<tenant>.onmicrosoft.com), theSet-DkimSigningConfigPowerShell workflow, the onmicrosoft.com-signing failure mode (the #1 M365 DMARC issue), and the Defender for Office 365 Trusted ARC Sealers feature for security-gateway- forwarded mail. - DKIM for Microsoft 365 (deployment guide)
— the focused operator reference for
enabling DKIM on Exchange Online: the
dual-selector CNAME-delegated model
(
selector1._domainkeyandselector2._domainkeydelegating to<tenant>.onmicrosoft.com), the three-step deployment workflow (publish CNAMEs, wait for DNS propagation, enable signing via the Defender portal orSet-DkimSigningConfig), three verification gates, automatic 2048-bit key rotation, the onmicrosoft.com signing-domain gotcha (the #1 M365 DMARC failure mode), seven common mistakes, and a per-symptom troubleshooting decision matrix. - DKIM for Google Workspace (deployment guide)
— the focused operator reference for
enabling DKIM on Google Workspace /
Gmail-for-business: the single-selector
TXT-publication model
(
google._domainkeypublishing thev=DKIM1; k=rsa; p=<base64>public-key TXT per RFC 6376 §3.6.2), the four-step Admin Console workflow (Generate new record, publish TXT, wait for DNS propagation, click Start authentication), three verification gates, operator-controlled 2048-bit key generation, manual rotation cadence with new-selector overlap (the Workspace counterpart to M365 automatic rotation), the gappssmtp.com signing-identity gotcha (the #1 Workspace DMARC failure mode), seven common mistakes, and a per-symptom troubleshooting decision matrix. Completes the Workspace trinity alongsidehelp_spf_for_google_workspace.phpandhelp_dmarc_for_google_workspace.php. - DKIM failures explained (verdict catalogue)
— the receiver-side verdict reference
documenting each of the seven canonical
Authentication-Results verdicts per
RFC 6376 §3.9 + RFC 8601 §2.7.1:
none(no signature present),neutral(inconclusive),pass(cryptographically verified — but DMARC may still fail on alignment),fail(signature evaluated and crypto failed — almost always a forwarder/list problem),policy(receiver-side local-policy rejection — usually weak algorithm or 1024-bit key),temperror(transient DNS lookup failure — retryable), andpermerror(permanent evaluation failure — missing or malformed public-key TXT, broken DKIM-Signature header, unsupported algorithm). Includes the M365onmicrosoft.comand Workspacegappssmtp.comgotchas (dkim=pass + DMARC fail), the Authentication-Results anatomy reference, the DMARC rua<auth_results><dkim>block format, and a per-verdict diagnostic decision matrix that maps each verdict to the action required to resolve it. - DKIM-Signature header explained (byte-by-byte tag anatomy)
— the sender-side companion to the
verdict catalogue. Documents every
tag in the DKIM-Signature header
per RFC 6376 §3.5:
v=(version),a=(algorithm: rsa-sha256 modern default, ed25519-sha256 from RFC 8463, rsa-sha1 deprecated per RFC 8301),c=(canonicalization: relaxed/relaxed industry default vs simple/simple strict),d=(signing-domain identifier — the DMARC alignment anchor),s=(selector — locates the public-key TXT),h=(signed-header list — From required per §5.4),bh=(body hash base64),b=(signature base64 over the signed-header set),i=(AUID),q=(query method, default dns/txt),l=(body-length-limit, a documented replay-attack vector — never use),t=/x=(signing and expiration timestamps), andz=(diagnostic copied headers). Includes the two-hash design (bh=vsb=independence), the signed-header set reconstruction algorithm, malformed-header detection patterns, and tag-by-tag default values. Sender-side companion tohelp_dkim_failures_explained.php's receiver-side verdict catalogue. - DKIM alignment with DMARC (RFC 7489 §3.1.1 deep dive)
— the focused DKIM-only deep dive into
how the
d=tag in the DKIM-Signature header feeds into the DMARC alignment decision per RFC 7489 §3.1.1. Where the symmetrichelp_dmarc_alignment.phpcovers both SPF and DKIM alignment from the DMARC-engine angle, this page is the DKIM-side complement that closes the gap left by the verdict catalogue (help_dkim_failures_explained.php) and the sender-side tag anatomy (help_dkim_signatures_explained.php) — both pages reference DMARC alignment but neither does the full alignment- engine deep dive from the DKIM angle. Covers: thed=tag as the DMARC alignment anchor (RFC 7489 §3.1.1 explicitly namesd=, noti=, as the DKIM-side alignment identifier);adkim=rvsadkim=swith worked examples; the Public Suffix List organizational-domain matching algorithm for relaxed mode (including the.co.ukillustration and the multi-tenant PSL entries likes3.amazonaws.comandgappssmtp.com); the full DKIM alignment evaluation algorithm including the multiple- signature "any aligns wins" rule per §3.1.1; the M365onmicrosoft.comgotcha in full alignment-evaluation detail (tenant-default signing vs custom- domain DKIM via Defender CNAMEs); the Workspacegappssmtp.comgotcha (PSL-listed multi-tenant domain, custom-domain DKIM via Admin Console TXT publication); the SPF-vs- DKIM asymmetry under forwarding (DKIM survives becaused=is inside the signed-header set; SPF breaks because forwarders rewrite the envelope); subdomain semantics edge cases (From subdomain of d=, d= subdomain of From, deep nesting); 10 common mistakes includingdkim=pass-treated-as- DMARC-pass; and a symptom → likely-cause → next-step troubleshooting matrix. - DKIM troubleshooting (cross-symptom diagnosis guide)
— the synthesis page that ties together
the receiver-side verdict catalogue
(
help_dkim_failures_explained.php), the sender-side tag anatomy (help_dkim_signatures_explained.php), the DMARC alignment deep dive (help_dkim_alignment_with_dmarc.php), and provider-specific deployment guides into a single actionable symptom → likely-cause → next-step decision tree. Where the verdict catalogue documents WHAT each verdict means and the tag anatomy documents WHAT each tag carries, this page documents WHAT TO DO when the dashboard shows a specificdkim=Xverdict — the operator's first-response reference for any DKIM regression. Covers all eight verdict branches (dkim=none,dkim=neutral,dkim=pass+DMARC=fail alignment gotcha,dkim=failbody-hash mismatch,dkim=failsignature mismatch,dkim=temperror,dkim=permerror,dkim=policy) with per- branch most-likely-cause + next-step sub-sections; multi-signature scenarios; provider-specific quick references (M365 onmicrosoft.com, Workspace gappssmtp.com, SaaS senders, Amazon SES + transactional ESPs, self-hosted Postfix/OpenDKIM/Exim); diagnostic tools surface (Email Header Analyzer, Domain Security Checker, DMARC Analyzer dashboard); and a compact symptom → cause → next-step operator decision matrix. - DKIM DNS record syntax (RFC 6376 §3.6.2 byte-level reference)
— the focused syntactic reference for the
DKIM public-key TXT record at
<selector>._domainkey.<domain>. Mirrorshelp_spf_dns_syntax.phpfor the DKIM half of the DMARC trinity. Covers the FQDN structure (<selector>._domainkey.<domain>publishing location, no subdomain inheritance); the optionalv=DKIM1version tag (RFC 6376 §3.6.1 forward-compatibility hook, case-sensitive uppercase); the mandatoryp=public-key data tag (base64 DER, single continuous string, no PEM banner); thek=key-type tag (defaultrsa, RFC 8463 addeded25519); theh=acceptable-hash-algorithms list (rsa-sha1 deprecated by RFC 8301); thet=flags (t=ytesting mode,t=sstricti=AUID); thes=service-type list (default any); the deprecatedn=notes andg=granularity tags; the 255-octet character-string limit and chunking (RFC 1035 §3.3.14, 2048-bit RSA keys MUST be split); the empty-p=key revocation convention (vs deleting the record); six canonical examples (minimal 2048-bit RSA, testing-modet=y, ed25519 per RFC 8463, explicith=sha256+s=email, revoked empty-p=, M365 CNAME-delegated); and ten canonical operator mistakes (PEM banner inp=, embedded whitespace, truncatedp=from 255-octet overflow, stalet=y, wrong record location, multiple TXT at same selector, 1024-bit RSA, lowercasev=dkim1,v=DKIM1not first, subdomain selector record missing). - DKIM best practices (synthesis operator-discipline reference)
— the cluster-closing synthesis page that
consolidates the operator-discipline rules
scattered across the 12 sibling DKIM-cluster
pages into a single actionable
best-practices reference. Where the protocol
primer covers WHAT DKIM is and the deep-dive
pages cover one tag or topic each, this page
covers HOW to deploy and operate DKIM
correctly — the 15 rules that distinguish a
healthy DKIM posture from a fragile one:
2048-bit RSA minimum (Rule 1) with
dual-publish
k=ed25519(Rule 2); descriptive dated selector names (Rule 3); annual rotation with 7-day dual-selector overlap (Rule 4);c=relaxed/relaxedcanonicalization (Rule 5); From + Subject + Date + To + Reply-To + MIME-Version + Content-Type signing with empty-double-list oversigning of From/Subject/Date (Rule 6); emptyi=AUID by default (Rule 7); NEVER use thel=body-length tag — replay-attack vector (Rule 8);t=ytesting flag for 24-72h burn-in then REMOVE (Rule 9); single signature default with multi-signature only for documented use cases (Rule 10); monitor Authentication-Results + DMARC aggregate + DNS TXT-change (Rule 11); multi-string TXT chunking for 2048-bit RSA keys per RFC 1035 §3.3.14 (Rule 12); emergency revocation = empty-p=within minutes (Rule 13); per-selector change log (Rule 14); and a quarterly cluster audit (Rule 15). - DMARC for Hybrid Exchange (on-prem + M365)
— the operator walkthrough for the
hybrid topology where outbound mail
flows through both Exchange on-premises
and Exchange Online. Covers the hybrid
topology spectrum (Hybrid Configuration
Wizard classic / Centralized Mail
Transport / split-domain coexistence /
Edge Transport perimeter), the
outbound mail-flow decision tree, SPF
construction that includes both sides
without exceeding the 10-DNS-lookup
limit, the dual-signer DKIM problem
(when on-prem and cloud both sign and
receivers iterate non-deterministically),
ARC sealing across the on-prem-to-cloud
relay (RFC 8617 + Defender Trusted ARC
Sealers via
Set-ArcConfig), the Default Frontend Connector DKIM-strip pitfall, Send Connector relay loops (NDR 5.4.6), and the migration path from classic hybrid through CMT to fully cloud-routed mail flow. - Email authentication glossary — the canonical definitions reference for every term-of-art the help-center cluster assumes (DMARC, SPF, DKIM, BIMI, MTA-STS, TLS-RPT, ARC, CAA; alignment, organizational domain, PSL; every DMARC tag p / sp / np / adkim / aspf / pct / fo / rua / ruf / ri / rf; DKIM selectors, AUID, canonicalization, body hash; SPF qualifiers, mechanisms, 10-lookup limit, permerror; BIMI Mark Type Indicator, VMC, SVG Tiny PS; MTA-STS policy modes; TLS-RPT result types; ARC-Seal, chain validation cv=pass; aggregate vs forensic reports; cryptography RSA/Ed25519; anti-abuse BEC/look-alike/homograph). 60+ definitions with DefinedTermSet JSON-LD for LLM-citation optimisation.
- Email security glossary — the threat / defense vocabulary sibling to the email-authentication glossary. ~80 terms across 9 categories: threat actors (APT, nation-state, insider, hacktivist), phishing taxonomies (spear phishing, whaling, smishing, vishing, quishing), email-borne attacks (BEC, CEO fraud, invoice fraud, account takeover, conversation hijacking), look-alike tactics (typosquatting, homograph, cousin domain, combosquatting), OSINT (Shodan, Censys, Certificate Transparency, WHOIS), defense-in-depth (SEG, EDR, zero trust, phishing-resistant MFA, DLP), incident response (NIST SP 800-61), threat modelling (STRIDE, kill chain, MITRE ATT&CK, D3FEND, Diamond Model), and security operations (SOC, SIEM, SOAR, EDR, XDR, MDR). Paired with the auth glossary as the cluster's reference layer.
- DMARC myths and misconceptions debunked — 18 of the most common DMARC myths debunked one-by-one with RFC 7489 evidence and receiver behaviour: "p=reject blocks all phishing" (no — only direct domain spoofing), "DMARC encrypts email" (no — it authenticates), "I have SPF and DKIM so I do not need DMARC" (the alignment fallacy), "BIMI works at p=none" (no — quarantine or reject required), "pct=10 means 10% of attackers get blocked" (no — it samples your own mail not attackers), "subdomains do not inherit the parent policy" (yes they do — RFC 7489 §6.6.3), and 12 more. Companion to the failure-diagnosis pillar: troubleshooting fixes what is broken; myth-busting fixes the mental model that leads to the wrong deployment in the first place.
- How attackers bypass weak DMARC — the security-research-flavoured ATTACKER PERSPECTIVE dual to the myths page. Documents 22 concrete attacker techniques across 4 classes: direct attacks on the visible From: identity (display-name spoofing, RFC 5322 comment abuse, lookalike-domain registration, IDN homograph attacks, brand impersonation via unrelated domains); weak-configuration attacks (p=none observation gap, pct<100 sampling, sp= subdomain free-for-all, missing apex DMARC, SPF +all / oversized include, subdomain takeover via abandoned DNS); authentication-mechanism attacks (DKIM 1024-bit factoring, DKIM replay, DKIM l= length-limited body-hash abuse, ARC chain abuse via compromised sealer, SPF macro / void-lookup abuse); and infrastructure attacks DMARC cannot stop (compromised legitimate accounts / BEC, compromised ESP / SaaS sender, mail-flow rule abuse, BIMI logo abuse). Each attack maps to MITRE ATT&CK technique numbers (T1566 Phishing, T1583.001 Acquire Infrastructure: Domains, T1584 Compromise Infrastructure, T1078 Valid Accounts, T1114.003 Email Forwarding Rule). Pair with the myths page for the full threat-model picture: myths corrects what defenders mistakenly believe DMARC blocks; this page lists what attackers actually do when DMARC is weak or absent.
- Email spoofing explained (7 canonical techniques + SPF/DKIM/DMARC defense + detection) — the foundational TECHNIQUE deep dive one level above attacker-bypass and BEC. Documents what email spoofing actually IS (the protocol-level forgery of one or more sender-identity fields in an email envelope or message header), why email is inherently spoofable (RFC 5321 SMTP from 1982 + RFC 5322 IMF from 2008 were never designed with authentication — every mechanism is bolted on top decades later), the seven canonical spoofing techniques (direct domain From-forgery, envelope MAIL FROM spoofing, display-name spoofing, lookalike-domain registration, IDN homograph via Unicode confusables per UTS #39, cousin-domain registration, subdomain takeover via abandoned DNS), exactly how each of SPF / DKIM / DMARC defends against each spoofing class (and where each leaves gaps), what DMARC at p=reject does NOT prevent (lookalike, display-name, BEC after compromised accounts, VEC, out-of-band channels), the forensic detection workflow via the Authentication-Results header per RFC 8601, real- world spoofing examples (IRS / DHL / DocuSign / Microsoft 365 / executive impersonation), and six-layer defense-in-depth recommendations. Maps onto MITRE ATT&CK T1566 Phishing, T1583.001 Acquire Infrastructure: Domains, and T1036 Masquerading. The page debunks the most common DMARC misconception ("DMARC stops all spoofing") by enumerating the five spoofing variants DMARC at p=reject does NOT stop.
- Business Email Compromise (BEC) explained — the operational deep dive for the finance / treasury / fraud-team audience that ultimately pays for BEC remediation. Covers the six canonical BEC variants (CEO fraud / executive impersonation, invoice fraud / vendor wire redirection, payroll diversion / HR redirect, gift-card scam, M&A confidentiality fraud, Vendor Email Compromise VEC), the five-stage BEC kill chain (recon, weaponisation, delivery, exploitation, payout), exactly where DMARC defends (direct-domain spoofing at p=reject blocks 1 of 6 variants) vs where DMARC does NOT defend (lookalike domains, display-name spoofing, compromised accounts, VEC, out-of-band channels), the six-layer defense-in-depth control stack, employee red-flag indicators, the FBI Financial Fraud Kill Chain (FFKC) incident-response playbook with reporting-time-to-recovery-rate curves, and BEC vs ransomware cost comparison for executive sponsorship. Distinct from the attacker-bypass page (which catalogues BEC as one of 22 attacker techniques): this is the standalone playbook for CFOs, treasury operators, and security engineers justifying email-authentication investment to the board. Maps onto MITRE ATT&CK T1566.003 Spearphishing via Service, T1078 Valid Accounts, T1534 Internal Spearphishing, and T1114.003 Email Forwarding Rule.
- Phishing protection — the defender playbook against phishing as a campaign — the parent reference one level above email-spoofing (the TECHNIQUE) and business-email-compromise (the financial-fraud OUTCOME). Documents the eight-variant phishing taxonomy (mass / spear / whaling / clone / HTTPS / smishing / vishing / quishing), the six-stage phishing kill chain (recon, weaponization, delivery, exploitation, installation/persistence, actions on objective) mapped onto Lockheed Martin Cyber Kill Chain, exactly which phishing variant DMARC at p=reject blocks (ONE — direct domain spoofing) and the seven it does NOT (lookalike domain, display-name, IDN homograph, cousin domain, compromised account, third-party service, out-of-band channels), the secure email gateway anti-phishing controls (URL rewriting, attachment sandbox detonation, display-name impersonation rules, lookalike- domain detection, Vendor Email Compromise anomaly detection), phishing-resistant MFA (FIDO2 / WebAuthn / passkeys) with the Adversary-in-the-Middle defense reasoning (origin binding via Relying Party ID defeats Evilginx / Modlishka / Muraena / EvilProxy / Tycoon 2FA), the forensic detection workflow (Authentication-Results per RFC 8601 + URL hover + IDN/Punycode + Reply-To + Received chain + attachment inspection), six real-world phishing examples (Google + Facebook USD 100M BEC, Twitter 2020 vishing breach, Uber 2022 push-bombing, MGM Resorts 2023 vishing, Snowflake 2024 credential theft, ongoing AitM Microsoft 365 campaigns), the six-layer defense-in-depth stack (email auth / SEG / phishing-resistant MFA / conditional access / EDR / training), and the eight-step phishing IR checklist. Maps onto MITRE ATT&CK T1566 with three sub-techniques (T1566.001 Spearphishing Attachment, T1566.002 Spearphishing Link, T1566.003 Spearphishing via Service), T1078 Valid Accounts, T1556.006 MFA Modification, T1539 Steal Web Session Cookie. Cites NIST SP 800-63B AAL3 (phishing-resistant MFA mandate), CISA Cybersecurity Advisory AA22-279A (AitM advisory), FBI IC3, APWG, and Verizon DBIR. The parent operational reference for SOC analysts, security engineers, blue- team operators, IT helpdesks, and CISOs answering "how do we prevent phishing as a class".
- DMARC troubleshooting — the cross-cutting failure-diagnosis reference: 7 canonical DMARC failure patterns (SaaS-sender alignment / SPF 10-lookup permerror / DKIM body-hash mismatch / DKIM key not found / wrong DNS record location / forwarding ARC break / subdomain sp= inheritance) each mapped to root cause and remediation, plus per-pillar root-cause sections (SPF / DKIM / alignment / DNS / forwarding / mailbox-provider). The operational reference for diagnosing failures observed in aggregate reports or Authentication-Results headers.
- DMARC monitoring & reporting analysis — the operational discipline that follows the policy rollout: 8 core KPIs (authenticated volume, alignment pass rate, SPF / DKIM / combined pass rates, distinct sending sources, disposition distribution, reporter coverage), 5 alert thresholds with escalation paths, three-tier review cadence (daily during ramps / weekly steady state / monthly executive), 5 anomaly detection patterns, the 72-hour post-change observation protocol for regression detection, sender-inventory drift detection via weekly source-IP diff, and 6 canonical patterns mapping aggregate-report data points to operational actions.
- DMARC reporting pipeline (end-to-end RUA + RUF ingestion reference)
— the operator-implementation reference for
the six pipeline stages that turn
rua=aggregate andruf=forensic reports landing in a monitoring mailbox into queryable database records and operational alerts: ingestion via SMTP / IMAP4rev1 / Microsoft Graph; format detection of XML / gzip / zip / tar.gz via magic bytes; parsing per RFC 7489 Appendix C XML and RFC 6591 AFRF MIME; storage with UNIQUE-constraint deduplication on(org_name, report_id); retention policies driven by operational utility / compliance / GDPR / storage cost; analysis and alerting across six alert categories. Anchored against the DMARC Analyzer project reference implementation inincludes/DmarcParser.php,includes/ForensicReportParser.php,includes/ImapFetcher.php, andincludes/GraphFetcher.php. - Multi-Domain DMARC Strategy (portfolio operator reference)
— the strategy guide for operators managing
DMARC across many domains: acquired companies,
marketing subdomains, brand-defensive
registrations, parked-but-not-deleted
properties. Walks the six-category domain
taxonomy (production / marketing / parked /
acquired / brand-defensive / delegated), the
RFC 7489 §3.2 organizational domain rule plus
Public Suffix List, the
sp=subdomain inheritance tag (RFC 7489 §6.3), thenp=non-existent subdomain tag (RFC 9091), reporting consolidation under one centralrua=pipeline (including the_report._dmarcexternal-domain authorization at RFC 7489 §7.1), the 6-step acquired-company integration playbook with a mandatory 14-30 day visibility window, and the parked-domain hardening pattern (v=spf1 -all+p=reject; sp=reject; np=reject+ null MX per RFC 7505) that costs nothing and prevents the most common brand-impersonation attack vector. - DMARC for cPanel & Shared Hosting (deployment guide)
— the operator walkthrough for deploying
SPF, DKIM, and DMARC on a domain whose
mail is sent by cPanel (Bluehost,
HostGator, SiteGround, A2 Hosting,
GoDaddy cPanel, Namecheap Stellar,
Hostinger, InMotion, DreamHost cPanel,
and others). cPanel's
Email Deliverability
page auto-generates SPF and DKIM but
not DMARC; the operator must add the
DMARC TXT record manually via the
Zone Editor. Covers the
default._domainkeyDKIM selector convention, provider-specific SPF includes (Bluehost / HostGator / SiteGround / GoDaddy / Namecheap each publish their own infrastructure), manual DKIM key rotation, shared-IP reputation as the deliverability ceiling, the provider-bounce-domain alignment failure mode, and a dual- persona end-user-cPanel vs WHM- administrator content split. - DMARC for Transactional Email (SendGrid, Mailgun, Amazon SES, Postmark, SparkPost, Mailjet, Resend, MailerSend, Brevo)
— the first SENDER-TYPE deployment
guide, complementing the mailbox-provider
guides by tackling DMARC alignment from
the opposite end of the spectrum: when
a third-party ESP runs the operator's
outbound MTA for password resets,
receipts, magic links, 2FA codes, and
invitation emails. Covers why SPF
alignment is unreliable for ESPs (they
rewrite envelope MAIL FROM to bounce-
handling domains under their control),
why CNAME-delegated custom-domain DKIM
is the load-bearing alignment mechanism,
per-ESP selector conventions
(
s1/s2._domainkeySendGrid,mailo/mta._domainkeyMailgun, three-token CNAMEs Amazon SES Easy DKIM,scph0316._domainkeySparkPost,mailjet._domainkey,resend._domainkey,mlsend/mlsend2._domainkeyMailerSend), Return-Path bounce-domain CNAME configuration, dedicated-subdomain segmentation (transactional.example.com), multi-ESP authentication, dedicated vs shared IP implications, and the Feb 2024 Google / Yahoo bulk-sender requirements anchor. - DMARC for SaaS Senders (Salesforce Marketing Cloud, HubSpot, Marketo, Mailchimp, ActiveCampaign, Klaviyo, Constant Contact, Brevo, Pardot, Kit)
— the second SENDER-TYPE deployment guide,
sibling to the Transactional Email guide,
covering marketing-automation SaaS platforms
where the marketer builds bulk campaigns
through a graphical UI rather than a
programmatic API. Differentiates from
transactional ESPs by anchoring against the
Feb 2024 Gmail / Yahoo bulk-sender
requirements: RFC 8058
List-Unsubscribe-Post mandatory
(the one-click unsubscribe header pair),
engagement-based reputation thresholds
(open / click / complaint / hard-bounce
rate bands), dedicated-IP-pool warm-up
cadence (30-50 day exponential ramp), list
hygiene as a DMARC prerequisite (complaint
rate < 0.3 percent, hard-bounce rate
< 5 percent, sunset policy, double
opt-in), and mandatory marketing-
subdomain segmentation
(
marketing.example.com/news.example.com/em.example.comisolation from corporate / transactional reputation). Per-platform DKIM selector conventions cover SFMC<bu-selector>per-Business-Unit SAP, HubSpoths1/hs2-<portal-id>._domainkey, Marketo + Mailchimp + Constant Contactk1/k2._domainkey(different CNAME targets per platform), ActiveCampaigndk._domainkey, Klaviyoklaviyo._domainkey+ bounce CNAME, Brevomail._domainkey, Pardot<org-alias>._domainkey(rotates with Salesforce org rename), Kit per-account random selectors. - Email deliverability fundamentals (authentication, sender reputation, engagement signals, list hygiene, postmaster tools, inbox placement) — the cross-cutting business-outcome reference that ties authentication + reputation + engagement + list hygiene + observability into one cluster-spanning narrative. Documents what deliverability actually IS (the chain of receiver-side acceptance, placement, and engagement outcomes that determines whether a sent message reaches the recipient inbox — distinct from and downstream of SMTP-level message delivery), the four-stage delivery funnel from sender to inbox (MX resolution + TCP connect, SMTP envelope acceptance, receiver content-classifier placement, recipient action and engagement feedback), the four-layer authentication stack (SPF + DKIM + DMARC + ARC + BIMI) and how each authentication outcome shifts the receiver placement decision, sender reputation as a weighted composite of four sub-reputations (IP + domain + tenant + engagement — where engagement is universally weighted heavily), the recipient engagement-signal feedback loop (opens, clicks, replies, marks-as-spam, deletes-without-open), list-hygiene discipline (hard-bounce removal, soft-bounce escalation per RFC 5321 §4.5.4, double opt-in, address validation, spam-trap avoidance), the postmaster-tools observability triad (Google Postmaster Tools, Microsoft SNDS + JMRP, Yahoo Sender Hub), the SMTP bounce taxonomy (RFC 3463 enhanced status codes 5.7.1 / 5.7.26 / 5.7.509 / 5.7.605), the per-receiver inbox-vs-spam-vs-Promotions placement model (Gmail tabs, Outlook Focused vs Other, Yahoo Bulk vs Inbox, Apple iCloud), common misconceptions ("good content equals good deliverability" is folk wisdom, "DMARC alone fixes deliverability" is wrong, "switching ESPs fixes deliverability" is mostly wrong), and a 15-item best-practices checklist anchored against the Feb 2024 Gmail / Yahoo bulk-sender requirements. For marketing operations, lifecycle / CRM engineers, deliverability consultants, and DevOps teams operating high-volume sending infrastructure.
- DMARC for Shared Hosting: Plesk, DirectAdmin, ISPConfig (deployment guide)
— the operator walkthrough for deploying
SPF, DKIM, and DMARC on shared hosting
tiers OTHER than cPanel. Covers
Plesk (the second-largest
shared-hosting control panel, Postfix
backend, DKIM toggle at Mail Settings >
DKIM spam protection,
defaultselector), DirectAdmin (Exim backend like cPanel but completely different management UI, DKIM at Email Manager > DKIM, single-characterxselector by historical convention), ISPConfig (Postfix + Dovecot, MSP-popular,defaultselector), Webmin / Virtualmin, and CentOS Web Panel (CWP). Section 5b dedicates a SaaS-relay-CNAME- delegated-DKIM escape hatch for the operator population on the most- restrictive shared-hosting tier (no control panel at all - just FTP + phpMyAdmin + webmail). Surfaces the operator-empowerment ceiling as the defining shared-hosting constraint.
9. Get started with DMARC Analyzer
DMARC Analyzer imports XML / ZIP / GZ / TAR.GZ aggregate reports (manually or via IMAP / Microsoft Graph), parses them against the full RFC 7489 schema, and turns the data into a dashboard with compliance grading, source-IP analysis, geo-distribution, and per-report drilldowns.
The free plan covers 10 reports per month and is enough for a single-domain deployment. Paid plans add IMAP/Graph ingestion, longer retention, DNS record generators (SPF / DKIM / TLS-RPT / MTA-STS / BIMI), domain-security checks, and higher upload limits.