Skip to content
Tool No. 10 · DMARC gen

DMARC Record Generator

Choose a policy and reporting options, and get a ready-to-publish DMARC record for your _dmarc host, plus a safe plan for moving from monitoring to reject.

Policy (p=)
Alignment

Your DMARC record

live
Free, no signupRuns in your browserNothing stored

A DMARC record is one line of text that tells receiving servers how to handle mail that fails SPF and DKIM alignment, and where to send reports about it. The syntax is short, but a typo can make receivers ignore the whole record, and publishing a strict policy too early can send your own invoices to spam.

This generator builds the record with valid syntax and explains each choice. Pair it with the staged rollout below and you can reach full enforcement without breaking legitimate mail.

The options in the generator

Option Tag What it controls Default
Policy p= What to do with failing mail: none, quarantine or reject Required
Aggregate reports rua= Where daily XML summaries go Strongly recommended
Forensic reports ruf= + fo=1 Where copies of individual failures go, and a request to report any failure Optional
Subdomain policy sp= Separate policy for subdomains Inherits p
Percentage pct= Share of failing mail the policy applies to 100
Strict alignment adkim=s, aspf=s Require exact domain match instead of organisational match Relaxed

The generator outputs the record in the correct order, starting with v=DMARC1 and separating tags with semicolons.

Choosing a policy

p=none (monitor). Mail is delivered as normal. You receive reports showing every source that sends as your domain and whether it passes. Use it first, always.

p=quarantine. Failing mail goes to spam or junk. This is where you catch any source you missed without losing mail completely, since recipients can still find it.

p=reject. Failing mail is refused at the SMTP level, often with 550 5.7.26 at Gmail. This is the goal: it stops exact-domain spoofing and is required for BIMI logos.

5,000Messages per day to Gmail or Yahoo users, the threshold above which a DMARC record is mandatory.

A staged rollout from none to reject

Moving too fast is the most common DMARC mistake. This plan takes six to twelve weeks for most organisations.

Stage 1: monitor (weeks 1 to 4)

v=DMARC1; p=none; rua=mailto:dmarc@example.com

Read the aggregate reports. List every source sending as your domain: your mailbox provider, ESPs, CRM, help desk, billing system, website forms. For each legitimate source that fails, set up aligned DKIM or a custom Return-Path. Check each fix with the DKIM checker and SPF checker.

Stage 2: partial quarantine (weeks 5 to 7)

v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@example.com

Raise pct to 50, then 100, as long as reports stay clean and nobody reports missing mail.

Stage 3: full quarantine (weeks 8 to 9)

v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com

Stage 4: reject

v=DMARC1; p=reject; rua=mailto:dmarc@example.com

Keep reading reports afterwards. New tools get connected, and one that is not authenticated will now have its mail refused.

Pro tip Before stage 2, send a test message from every tool you use to a Gmail address and check the headers with the header analyzer. Any dmarc=fail there will become a spam folder problem the moment you enforce.

Reporting options explained

Aggregate reports (rua) arrive as zipped XML, usually once a day from each large receiver. They list sending IPs, message counts and SPF, DKIM and DMARC results. Raw XML is hard to read, so most teams send them to a DMARC reporting service or a parser.

Forensic reports (ruf) are copies or redacted samples of individual failing messages. Adding fo=1 asks receivers to send one when either SPF or DKIM fails, not only when both do. Many large providers no longer send forensic reports at all, and those that do may include personal data, so route them to a restricted mailbox.

You can list several addresses, separated by commas:

rua=mailto:dmarc@example.com,mailto:reports@dmarc-service.example

Where to publish the record

Field Value
Type TXT
Host / Name _dmarc (becomes _dmarc.example.com)
Value The generated record
TTL 3600, or 300 while you are adjusting it

For a subdomain with its own policy, publish at _dmarc.news.example.com. Otherwise subdomains use the main record and its sp value.

After publishing, confirm the live record with the DMARC checker. If you send through an ESP such as Mailchimp, Brevo or SendGrid, make sure its DKIM is set up on your own domain first, since that is what lets its mail align.

Protecting domains that never send

Parked domains, old brand names and typo domains you registered defensively are easy targets for spoofers, because nobody watches them. Give each one a locked-down set of records:

_dmarc.example-old.com   TXT   "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
example-old.com          TXT   "v=spf1 -all"
example-old.com          MX    0 .

There is no rollout needed here. Since no legitimate mail should ever come from these domains, you can go straight to p=reject. Sending the reports to your main domain’s DMARC mailbox lets you see if anyone tries to abuse them.

After you reach reject

Enforcement is not the end of the job. Review aggregate reports monthly, add authentication for every new tool before it goes live, and rotate DKIM keys once or twice a year. With p=reject and a verified logo, you can also publish a BIMI record so supporting mailbox providers show your brand logo next to your messages.

Common generator mistakes to avoid

  • Publishing at the root domain instead of _dmarc. Receivers will not find it.
  • Two DMARC records. Receivers ignore both.
  • Leaving out mailto: in the report address.
  • Jumping straight to reject without reviewing reports.
  • Setting sp=none while the main domain rejects, which leaves every subdomain open to spoofing.

For the bigger picture of how DMARC, SPF and DKIM fit together, read the email authentication guide. To see how your domain scores overall, run the sender reputation checker.

FAQ

DMARC Record Generator questions

What is a good starter DMARC record?

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com. It meets the Google and Yahoo bulk sender requirement, changes nothing about how your mail is delivered and starts the flow of aggregate reports you need before tightening the policy.

Do I need SPF and DKIM before DMARC?

You need at least one of them working and aligned for your legitimate mail to pass DMARC, and ideally both. You can publish p=none before they are perfect, since it only monitors. Do not move to quarantine or reject until reports show your real senders passing.

Where do I publish the record?

As a TXT record with the host _dmarc. In a panel that appends your domain, enter just _dmarc. The full name becomes _dmarc.yourdomain.com. Publish only one DMARC record per domain.

What does pct do?

It applies your quarantine or reject policy to only a percentage of failing mail. pct=25 with p=quarantine quarantines a quarter of failures and treats the rest as the next policy down. It is a way to ramp up gradually, not a permanent setting.

Should I use strict alignment?

Usually not. Relaxed alignment lets bounce.example.com or mail.example.com align with example.com, which most ESP setups rely on. Strict alignment only makes sense when every sender uses your exact From domain in both the Return-Path and DKIM d= tag.

Do I need an sp tag?

Only if subdomains need a different policy from the main domain. Without sp, subdomains inherit p. A common pattern is p=quarantine while testing the main domain but sp=reject, since unused subdomains should never send.

What should I use for the rua address?

A mailbox you do not read by hand, or a DMARC reporting service that turns the XML into dashboards. Reports can arrive in the hundreds per day for busy domains. If the address is on another domain, that domain must authorise receiving your reports.

Free · no signup

Check your domain before you hit send.

Run the full check: SPF, DKIM, DMARC, 15+ blocklists, MX, reverse DNS and infrastructure, scored A to F with a ranked list of fixes.