Free DMARC generator tool. Create custom DMARC DNS records with monitoring and enforcement policies to prevent email spoofing.
Use this DMARC generator to assemble a valid record value from policy, reporting, subdomain, alignment, rollout, and failure-reporting choices. Start with a monitoring, quarantine, rejection, or gradual-rollout template, or work through the wizard from scratch. The result includes a tag-by-tag explanation, validation feedback, copy and text-download controls, and a deployment roadmap.
The record is generated and validated in your browser. The tool does not upload your configuration, change your DNS, send test messages, or collect the reports addressed by rua or ruf. You must publish the generated value with the DNS provider that hosts your domain's authoritative nameservers, then inspect the reports separately.
p=none if you are still discovering legitimate mail sources. Choose p=quarantine or p=reject only after those sources produce an aligned SPF or DKIM pass.dmarc-reports@example.com. The generator adds the required mailto: prefix and supports more than one destination.sp policy. Then choose relaxed or strict alignment independently for SPF and DKIM.| Tag | Purpose and operational effect |
|---|---|
v=DMARC1 | The version marker. It must appear first. The generator always includes it. |
p | The requested handling for mail that fails DMARC. none asks for no DMARC-specific action, quarantine marks the message as suspicious, and reject asks the receiver to refuse it. Receivers can still apply local filtering decisions. |
sp | The policy for subdomains that do not publish a more specific DMARC record. Without sp, subdomains inherit p. The generator omits sp when it matches p, because the inherited result is the same. |
rua | One or more destinations for aggregate reports, written as comma-separated URIs such as rua=mailto:dmarc-reports@example.com. These compressed XML summaries group authentication and alignment outcomes by source and message count. |
ruf | One or more destinations for message-specific failure reports. Support varies by receiver. Because a report can expose headers or message content, use a controlled destination and an appropriate retention policy. |
pct | A legacy sampling request for applying an enforcement policy to part of the affected mail stream. The generator supports values from 0 through 100 and omits the tag at full application. The current DMARC tag registry marks pct historic, so do not assume every receiver will honor it; use aggregate reports to confirm actual handling. |
adkim | DKIM alignment mode. Relaxed r accepts a valid DKIM signing domain with the same organizational domain as the visible From domain. Strict s requires an exact domain match. The relaxed default is omitted from the output. |
aspf | SPF alignment mode. Relaxed r compares organizational domains; strict s requires the SPF-authenticated MAIL FROM domain to exactly match the visible From domain. The relaxed default is omitted from the output. |
fo | Failure-report triggers used with ruf. 0 requests a DMARC failure report when all authentication mechanisms lack an aligned pass; 1 requests one when any mechanism lacks an aligned pass; d requests a DKIM failure report; and s requests an SPF failure report. Multiple values use colons, but 0 and 1 are mutually exclusive. |
rf | The tool offers AFRF and IODEF failure-report formats. AFRF is the interoperable default and is omitted from the generated value. Selecting IODEF emits rf=iodef; verify that your report consumers support it. The current DMARC tag registry treats rf as historic. |
ri | A requested aggregate-report interval expressed in seconds. A receiver may send reports on its own schedule. The generator emits this legacy tag only when you change its default interval; the current tag registry classifies ri as historic. |
A practical monitoring record is v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com. It requests aggregate reports without asking receivers to quarantine or reject DMARC failures. Replace the example mailbox with a real address that can accept compressed XML attachments.
A staged quarantine value produced by the generator might be v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com; pct=25. Here, pct=25 is a legacy sampling request rather than a delivery guarantee. A simpler full-enforcement value is v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com. Because no sp, adkim, or aspf tags appear, subdomains inherit rejection and both alignment modes use their relaxed defaults.
If a controlled environment truly requires exact matches and failure reports, the tool can generate a value such as v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-failures@example.com; adkim=s; aspf=s; fo=1. Test every sending platform before using this configuration: strict alignment commonly exposes vendor return paths, vendor DKIM domains, aliases, and subdomain differences.
_dmarc.example.comFor the domain example.com, the complete DNS owner name is exactly _dmarc.example.com. The record type is TXT, and the value is the generated string beginning with v=DMARC1. Most hosted DNS forms automatically append the zone name, so their Host or Name field should contain only _dmarc. Do not use @, which means the zone root, and do not enter _dmarc.example.com if the form would turn it into _dmarc.example.com.example.com.
_dmarc as Name, paste the generated record into Content, leave TTL on Automatic unless you have a reason to change it, and save. Cloudflare adds TXT quoting when needed._dmarc, Value to the generated string, choose the TTL, and save._dmarc, paste the value, choose the TTL, and save all changes. This path applies when Namecheap hosts the authoritative DNS; otherwise, edit records at the nameserver provider.If a DMARC record already exists, edit it instead of adding another. Multiple DMARC TXT records at the same owner name can make policy discovery fail. After saving, query the authoritative result with dig +short TXT _dmarc.example.com or an equivalent DNS lookup. Confirm that the response contains one logical record, starts with v=DMARC1, and does not contain duplicated hostnames, smart quotes, or a pasted label such as Value:.
Aggregate reports usually arrive as compressed XML attachments. Begin with report_metadata to identify the reporting organization and reporting window, then confirm that policy_published matches the record you intended to deploy. A cached older policy can appear during a DNS change, so do not diagnose sender authentication from the policy block alone.
Each record groups a sending source and outcome. Read row/source_ip and row/count first, then map that IP to your mail platform, application, support system, marketing provider, or an unknown source. Under policy_evaluated, dkim and spf show the DMARC alignment results, while disposition shows how the receiver handled that group. A reason can explain why local policy, forwarding, or another override produced a different disposition.
Next compare identifiers/header_from, the domain visible to the recipient, with identifiers/envelope_from, the MAIL FROM domain evaluated by SPF. Finally inspect auth_results for the raw SPF domain and DKIM signing domain. A raw SPF result can pass while policy_evaluated/spf fails because the vendor's return-path domain does not align with the visible From domain. The same is true when DKIM validates with a vendor-owned d= domain that does not align. DMARC passes when at least one mechanism both authenticates and aligns; it does not require both.
Investigate known sources with no aligned pass before increasing enforcement. For an approved service, configure a custom aligned return path, aligned DKIM signing, or both. Treat an unfamiliar source with repeated failures as either unauthorized use or a forgotten sender until ownership is verified. Do not authorize an IP merely because it appears often; identify the application and responsible owner first.
p=none with rua. Inventory every legitimate source in the aggregate data, including transactional applications, help desks, invoices, marketing systems, scanners, and delegated subdomains.p=quarantine when known sources are aligned. If you use the generator's pct control for a staged request, remember that receiver support is not guaranteed. Keep reading aggregate reports and investigate legitimate mail that receives a quarantine disposition.p=reject only when failures from legitimate sources have been resolved. Continue collecting rua reports after enforcement so new vendors, configuration drift, and expired DKIM setup are visible.sp overrides p for subdomains. A specific record at _dmarc.mail.example.com takes precedence for mail using mail.example.com.rua or ruf points outside the policy domain, the destination domain normally must publish authorization for external DMARC reports._dmarc, a duplicated domain suffix, a missing first v=DMARC1 tag, or an invalid policy value.adkim=s and aspf=s require exact domains. Relaxed alignment is usually the safer starting point when approved senders use subdomains.fo has no effect without ruf, 0 and 1 should not be combined, and receivers may decline to send message-specific reports.Use a DNS lookup tool after publishing because this generator does not read your live zone. Use a message-header analyzer or a controlled delivery test when you need to inspect actual SPF, DKIM, and DMARC results. Use a DMARC report-processing service when compressed XML volume makes manual grouping and source ownership impractical. Those tools complement the record generator: they verify deployment and mail behavior, while this page builds and validates the policy value you intend to publish.
DMARC (Domain-based Message Authentication, Reporting and Conformance) is an email authentication protocol that builds on SPF and DKIM to give domain owners control over how receiving mail servers handle unauthenticated messages. Published as a DNS TXT record at _dmarc.yourdomain.com, DMARC specifies a policy (none, quarantine, or reject) and enables aggregate and forensic reporting—giving organizations visibility into who is sending email using their domain.
DMARC addresses the fundamental gap left by SPF and DKIM alone: neither protocol tells receivers what to do when authentication fails. Without DMARC, a spoofed email that fails SPF might still be delivered to the recipient's inbox. DMARC closes this gap by explicitly instructing receivers to monitor, quarantine, or reject unauthenticated messages—making it the most critical email security protocol for preventing domain spoofing and phishing.
DMARC validates that at least one of SPF or DKIM passes AND aligns with the From: header domain:
Alignment check: DMARC requires that the domain in the From: header matches (or is a subdomain of) the domain that passed SPF or DKIM. This prevents attackers from passing SPF on their own domain while spoofing the From: address.
DMARC record syntax:
| Tag | Required | Purpose | Example |
|---|---|---|---|
| v | Yes | Version | v=DMARC1 |
| p | Yes | Policy for domain | p=reject |
| sp | No | Policy for subdomains | sp=quarantine |
| rua | No | Aggregate report destination | rua=mailto:dmarc@example.com |
| ruf | No | Forensic report destination | ruf=mailto:forensic@example.com |
| pct | No | Percentage of messages to apply policy | pct=50 |
| adkim | No | DKIM alignment mode | adkim=s (strict) |
| aspf | No | SPF alignment mode | aspf=r (relaxed) |
Example DMARC record:
v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensic@example.com; adkim=s; aspf=r; pct=100
DMARC policy progression:
DMARC (Domain-based Message Authentication, Reporting and Conformance) DNS TXT record defines how to handle emails failing SPF/DKIM authentication. Format: _dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:reports@example.com". Tags: p (policy), rua (aggregate reports), ruf (forensic reports), pct (percentage), adkim/aspf (alignment). Protects against spoofing, provides visibility into email authentication failures.
Start with p=none (monitor only) for 2-4 weeks. Review aggregate reports to identify legitimate senders and authentication issues. Fix issues, then upgrade to p=quarantine (spam folder) for another month. Finally, set p=reject (block) for maximum protection. Aggressive timeline: p=reject immediately if confident in SPF/DKIM setup. Use pct=10 to test policies on 10% of email before full rollout. Monitor continuously.
DMARC aggregate reports (rua) are daily XML files showing authentication results for your domain. Contains: sending IPs, SPF/DKIM/DMARC results, message volume, alignment status. Sent to rua= email addresses. Use parsers (dmarcian, Postmark, PowerDMARC) to analyze. Identifies: legitimate servers needing SPF includes, spoofing attempts, misconfigured authentication. Essential for policy enforcement. Enable reports before enforcing strict policies.
Create TXT record at _dmarc.yourdomain.com with generated DMARC policy. Example: _dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com". DNS propagation takes 1-48 hours. Verify: dig TXT _dmarc.example.com or use online validators. Subdomain policy: use sp= tag or separate _dmarc record per subdomain. Update TTL to 300 for testing, increase to 3600+ for production. Monitor reports after deployment.
DMARC alignment ensures From: header domain matches authenticated domain. Two types: SPF alignment (From vs Return-Path domain), DKIM alignment (From vs DKIM d= domain). Modes: relaxed (subdomains allowed) or strict (exact match). Example: email from newsletter@example.com with SPF authenticated @mail.example.com - relaxed passes, strict fails. Set with aspf=/adkim= tags. Strict mode prevents subdomain spoofing but requires careful configuration.
Forensic reports (ruf) provide individual email samples failing authentication. Contains full headers and redacted body. Privacy concerns: often disabled by receivers. Enable: ruf=mailto:forensic@example.com in DMARC record. Use for: debugging specific failures, investigating spoofing attempts, validating authentication setup. Format: ruf=mailto:forensic@example.com; fo=1:d:s (failure options). Store securely - contains email metadata. Consider data protection regulations (GDPR).
Percentage tag (pct) applies DMARC policy to percentage of failing emails. Example: pct=25 applies policy to 25% of failures, rest get p=none treatment. Use for: gradual policy rollout, testing p=reject impact, limiting false positives. Range: 0-100. Default: 100 (all emails). Strategy: start pct=10 with p=quarantine, monitor impact, increase gradually to pct=100. Remove pct tag once at 100. No effect on reporting - all failures reported.
Subdomain policy: add sp= tag for subdomain default policy. Example: v=DMARC1; p=reject; sp=quarantine (strict for root, quarantine for subdomains). Or create specific _dmarc records per subdomain. Wildcard: create _dmarc.*.example.com if DNS provider supports. Unused subdomains: set sp=reject to prevent abuse. Organizational domain policy applies if no subdomain DMARC record exists. Test with email from subdomain before enforcing.