What it means
SPF validates an envelope sender nobody reads. DKIM validates a signing domain that need not match the brand in the message. Neither of them, alone, says anything about the From: line, which is the only sender identity a human ever sees. DMARC is the standard that ties the two together and makes them mean something: it requires that at least one of them pass and be aligned with the From domain, and it lets the domain owner state what should happen when neither is.
Alongside the policy it adds the piece everyone actually adopts it for: reporting. Receivers send back a daily XML summary of every source that sent mail claiming to be your domain, whether it authenticated, and what they did with it. For most organisations the first week of DMARC reports is the first complete inventory they have ever had of who sends mail as them.
The record, tag by tag
v=DMARC1: version. Mandatory and must be first, or the record is ignored entirely.p=: policy for the organizational domain, one ofnone,quarantineorreject. Mandatory and must come second.sp=: policy for subdomains. Absent, subdomains inheritp=. Set it explicitly the moment you use a subdomain for bulk sending.rua=: where to send aggregate reports, as one or moremailto:URIs. This is the tag that pays for itself.ruf=: where to send per-message failure reports. Most large receivers no longer send these for privacy reasons, so do not build a process around them.fo=: which failures generate a forensic report.0only when everything fails,1when anything fails,don DKIM failure,son SPF failure.adkim=andaspf=: alignment mode,rfor relaxed (default) orsfor strict. Relaxed accepts an organizational-domain match, somail.example.comaligns withexample.com. Strict demands an exact match.pct=: percentage of failing mail the policy applies to. A rollout dial, covered in the FAQ.ri=: requested aggregate report interval in seconds. 86400 is the default and effectively the only value honoured.
Alignment is the whole idea
If you take one thing from this page, take this: a green checkmark in a vendor dashboard is not a DMARC pass. The vendor is usually reporting that SPF and DKIM passed, which they will, because the vendor authenticates its own domains correctly. DMARC asks a harder question, and the failure mode is quiet, because your mail keeps being delivered right up until you publish a policy stronger than none.
The fix is nearly always the same and every serious vendor supports it: a branded sending domain. You publish CNAME records so that a subdomain of yours points at the vendor infrastructure, the vendor signs with d=yourdomain.com, and the envelope sender becomes bounce@mail.yourdomain.com. Both identifiers then align, and the same message that used to fail now passes twice.
Reading an aggregate report
Reports arrive as a gzipped XML attachment, one per receiver per day, and they are grouped by source IP rather than by message. Each record element carries a count, the disposition the receiver applied, and the SPF and DKIM results with their domains, which is exactly enough to tell an unauthenticated legitimate sender apart from an actual spoofer. Reading them by hand works for a small domain; past a few thousand messages a day you want a parser, because the volume is dominated by forwarding noise you need to filter out before the signal is visible.
The rollout that does not break payroll
- Publish
p=nonewithrua=. Nothing changes for any recipient. Reports start arriving within 24 hours. - Inventory. Every source in the report is either a system you own, a vendor you hired, a forwarder, or an abuser. Classify all four before touching the policy.
- Fix alignment for the systems you keep: branded DKIM, custom return-path, one selector per sender.
- Move to
p=quarantine; pct=10, watch for a week, then raise to 100. - Move to
p=reject, and setsp=rejectso a forgotten subdomain cannot be used against you. - Keep reading the reports. A new vendor onboarded by a different team is the most common cause of a DMARC regression six months later.
What DMARC does not do
- It does not stop lookalike domains.
crmsol1d.comis a different domain with its own perfectly valid DMARC record. Brand protection is a registrar and monitoring problem. - It does not stop display-name spoofing. A message from a free webmail account with your CEO name in the display field passes its own domain policy.
- It does not improve inbox placement by itself. It removes a reason to be filtered; reputation still decides placement. See domain warm-up.
- It does not protect mail you receive. DMARC is a policy about your outbound identity. Inbound protection is your own filtering.
Related concepts
- SPF: one of the two identifiers DMARC evaluates for alignment.
- DKIM: the other one, and the more durable of the two.
- List-Unsubscribe: the other half of the 2024 bulk sender requirements.
- Bounce rate: a DMARC policy change shows up as a spike in 5.7.1 rejections.
- Spam trap: authentication is necessary but never sufficient for deliverability.
How Pinlyx handles it
Sending domains connected to Pinlyx are set up for alignment from the start: your own DKIM selector, a bounce subdomain under your domain rather than ours, and a check that refuses to enable campaign sending while the From domain has no DMARC record at all. Aggregate reports can be routed to a mailbox synced into the CRM, so a daily XML attachment becomes a thread with an owner rather than an unread message in an alias nobody watches.