Why Generate a DMARC Record?
DMARC (Domain-based Message Authentication, Reporting and Conformance) is the protocol that completes SPF and DKIM to protect your domain against email spoofing and phishing. Without a DMARC policy, anyone can send emails impersonating your domain.
Three reasons to have DMARC:
- Brand protection → Prevent fraudsters from using your domain for phishing
- Complete visibility → Receive reports on who sends emails from your domain
- Better deliverability → Providers (Gmail, Microsoft) favor domains with DMARC
How to Use the Generator in 3 Steps
Step 1: Enter Your Domain
Enter your organizational domain exactly as it appears in your email addresses (e.g., captaindns.com). The tool automatically generates the full DNS name: _dmarc.captaindns.com.
Step 2: Configure Options
Main policy (p): What to do with failing emails?
none: Monitor without blocking (recommended to start)quarantine: Send to spamreject: Block completely
Alignment (adkim, aspf): How to verify domain matching?
relaxed(r): Subdomains accepted (recommended)strict(s): Exact match required
Reports (rua, ruf): Where to receive statistics?
- Add
mailto:dmarc@yourdomain.comfor aggregate reports
Step 3: Copy and Publish
The generator produces the complete DNS record. Copy it to your DNS management interface:
- Name:
_dmarc.yourdomain.com - Type: TXT
- Value: The generated record
What Exactly is DMARC?
DMARC is a DNS policy that tells mail servers:
- What to check: Does SPF or DKIM pass AND align with the visible domain?
- What to do on failure: Monitor (none), spam (quarantine), or block (reject)
- Where to report: Email addresses for receiving statistics
Example DMARC record:
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=r; aspf=r; pct=100"
Decoded:
v=DMARC1: Protocol version (required)p=quarantine: Policy = send to spamrua=mailto:...: Address for aggregate reportsadkim=r: DKIM alignment relaxedaspf=r: SPF alignment relaxedpct=100: Apply to 100% of emails
All DMARC Tags Explained
Required Tags
| Tag | Values | Description |
|---|---|---|
| v | DMARC1 | Protocol version. Always DMARC1. |
| p | none / quarantine / reject | Policy for main domain. |
Common Optional Tags
| Tag | Values | Description |
|---|---|---|
| sp | none / quarantine / reject | Policy for subdomains. Inherits from p if absent. |
| rua | mailto:address | Addresses for aggregate reports (daily). |
| ruf | mailto:address | Addresses for forensic reports (per failure). |
| adkim | r (relaxed) / s (strict) | DKIM alignment mode. |
| aspf | r (relaxed) / s (strict) | SPF alignment mode. |
| pct | 1-100 | Percentage of emails subject to policy. |
Advanced Tags
| Tag | Values | Description |
|---|---|---|
| fo | 0 / 1 / d / s | Forensic report generation options. |
| ri | seconds | Aggregate report interval (default 86400 = 24h). |
Practical Use Cases
Case 1: New Domain with No History
Goal: Protect a domain that's starting to send emails.
Recommended configuration:
v=DMARC1; p=none; rua=mailto:dmarc@example.com; adkim=r; aspf=r
Next steps:
- Monitor reports for 2-4 weeks
- Identify all legitimate sources
- Move to
p=quarantine; pct=25 - Gradually increase to
p=reject
Case 2: Domain with Multiple Services (CRM, Newsletter, Transactional)
Goal: Protect without breaking existing flows.
Initial configuration:
v=DMARC1; p=none; sp=none; rua=mailto:dmarc@example.com; adkim=r; aspf=r
Diagnosis via RUA reports:
- List all IPs/domains sending
- Verify each source has SPF and DKIM configured
- Identify unauthorized sources (potential spoofing)
Gradual rollout:
v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@example.com
Then 25%, 50%, 100%, and finally p=reject.
Case 3: Domain that Doesn't Send Emails
Goal: Prevent any fraudulent use of a "parked" domain.
Direct strict configuration:
v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s
No observation phase needed if the domain should never send legitimate emails.
Common Mistakes to Avoid
| Mistake | Problem | Solution |
|---|---|---|
| Two DMARC records | Conflict, policy ignored | One record per domain only |
| Forgetting mailto: | Reports not sent | rua=mailto:address@domain.com |
| Jumping straight to reject | Blocking legitimate emails | Start with p=none, then quarantine |
| Ignoring reports | No visibility on issues | Analyze RUA weekly |
| Strict alignment too early | Failures if subdomains or third-party services | Keep r (relaxed) until complete inventory |
Deployment Best Practices
Phase 1: Observation (2-4 weeks)
v=DMARC1; p=none; rua=mailto:dmarc@example.com
- Collect reports
- Identify all legitimate sources
- Fix SPF/DKIM for non-aligned sources
Phase 2: Gradual Quarantine
v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@example.com
- Increase from 10% → 25% → 50% → 100%
- Monitor user complaints
- Adjust if needed
Phase 3: Reject
v=DMARC1; p=reject; rua=mailto:dmarc@example.com; adkim=r; aspf=r
- Maximum protection
- Optionally move to strict alignment (
adkim=s; aspf=s)
FAQ - Frequently asked questions
Q: What is a DMARC record?
A: DMARC (Domain-based Message Authentication, Reporting and Conformance) is a DNS TXT record that tells mail servers how to handle emails that fail SPF and DKIM checks. It protects your domain against spoofing and phishing.
Q: What DMARC policy should I start with?
A: Always start with p=none. This policy doesn't impact delivery but sends you reports. Analyze these reports for 2-4 weeks to identify all legitimate flows before moving to quarantine then reject.
Q: What's the difference between RUA and RUF?
A:
- RUA (Reporting URI for Aggregate): Daily aggregate reports with global statistics
- RUF (Reporting URI for Forensic): Detailed reports per individual failure
RUA is essential and supported by all. RUF is optional and rarely supported by providers.
Q: How does DMARC alignment work?
A: Alignment checks that the visible domain (From:) matches the domain authenticated by SPF or DKIM:
- Relaxed (r):
mail.example.comaligns withexample.com - Strict (s): Exact match required
Q: Can I have multiple DMARC records?
A: No. Only one DMARC record is allowed per domain. Multiple records cause errors. Edit the existing one rather than adding new.
Q: How long before DMARC is active?
A: The record is active once DNS propagates (minutes to 48h). First RUA reports arrive within 24-48h after emails are sent from your domain.
Q: How do I receive reports for an external domain?
A: If your RUA address is on another domain, that domain must authorize you with:
yourdomain._report._dmarc.report-domain.com TXT "v=DMARC1"
Complementary tools
| Tool | Purpose |
|---|---|
| DMARC Record Check | Verify your existing DMARC record |
| SPF Generator | Create a valid SPF record |
| DKIM Generator | Create your DKIM keys (RSA/Ed25519) |
| DKIM Record Check | Verify your DKIM signature |
| Mail Tester | Test your email deliverability |
Useful resources
- RFC 7489 - DMARC (official specification)
- Google - Set up DMARC (Gmail/Workspace guide)
- Microsoft - DMARC in Microsoft 365 (Microsoft guide)
- DMARC.org (official project site)