Why generate a DMARC record?
DMARC ties SPF and DKIM to a policy that recipients enforce. It protects the domain identity, improves incident visibility, and delivers useful reports. This generator builds a clean, publication-ready record that accounts for subdomains, enforcement percentages, and reporting addresses.
How to use the generator
Domain: Enter the organizational domain. The record will be published at
_dmarc.your-domain.Primary policy
p: ChooseNoneto observe,Quarantineto quarantine, andRejectto block. Start with None, read the reports, fix issues, then ramp up gradually.Subdomain policy
sp: Leave it to inherit or set a different policy for sending subdomains.Enforcement percentage
pct: From 1 to 100. Useful for transitioning gradually intoQuarantineorReject.Aggregate reports
rua: One or moremailto:addresses separated by commas.
Example:mailto:dmarc@example.com,mailto:secops@example.com
If you use an address from a third-party domain, that third party must authorize you via a_report._dmarcDNS record (DMARC requirement).Forensic reports
ruf(optional): Detailed failure reports. Few providers send them. Be mindful of volume and sensitive data.Alignment modes
adkimandaspf:relaxedby default.strictstrengthens identification once your sending inventory is stable.Failure options
fo: 0 by default.
Other possible values:1generate a report if SPF or DKIM failsdfor DKIM-only failuressfor SPF-only failures
Interval
ri: Frequency of aggregate reports in seconds. 86400 equals 24 hours.
Click Generate the record and publish the TXT value on _dmarc.your-domain.
Ready-to-use examples
Full observation
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; adkim=r; aspf=r; ri=86400"
Gradual rollout
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@example.com; adkim=r; aspf=r"
Strict protection (production)
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; sp=quarantine; rua=mailto:dmarc@example.com; adkim=s; aspf=s; ri=86400"
Publication and verification
- Publish a single DMARC TXT record on
_dmarc.your-domain. - Use a TTL of 3600 during tuning, then increase it once things are stable.
- Verify live resolution with your CaptainDNS DMARC inspector and domain check tools.
- Monitor rua reports for a few days before hardening the policy.
Common mistakes to avoid
- Publishing two DMARC records at the same name. Keep a single entry.
- Forgetting
mailto:in front of rua/ruf addresses. - Jumping straight to
p=rejectwithout cataloging legitimate senders. - Switching to
strictalignment while subdomains or third-party services still send with another visible domain. - Declaring an external reporting address without the third party's
_report._dmarcauthorization. - Mixing up
pctandri. The former controls enforcement, the latter report frequency.
Rollout best practices
- Step 1:
p=none, rua active. Map real sources and fix the ones that fail. - Step 2:
p=quarantine, pct 10 then 50 then 100. Watch for false positives. - Step 3:
p=reject. Once stable, consideradkim=sandaspf=s. - Define an
sppolicy if your subdomains send differently. - Keep a change log with date, previous and new value, reason, and TTL.
Quick report readouts
- Aggregate
ruareports show per-source volume, SPF and DKIM pass/fail rates, alignment, and applied disposition. - Forensic
rufreports capture individual failure events when supported. Enable them cautiously.
Privacy commitment
The values you enter are sent to the CaptainDNS API solely to generate the DMARC string. No data is stored in plain text. Only technical metrics such as processing duration and record size are logged to monitor availability.