Skip to content
tlspeek

DMARC

DMARC generator

Choose a policy and a report mailbox. Copy the TXT value into DNS at _dmarc on your domain. Nothing in this form is sent to a server.

Used only to show the DNS host name. It is not looked up.

Policy (p)
Subdomains (sp)

Record to publish

Host
Enter a domain to see _dmarc.example.com
Type
TXT
Value
v=DMARC1; p=none

p=none does not stop spoofed mail. Use it at the start, with rua set, and move to quarantine or reject after you have read the reports.

Without rua you will not receive aggregate reports. Add a mailbox you control.

After it is published, read it back with the DMARC checker.

A DMARC generator turns a few choices into the TXT value you publish at _dmarc on your domain. The form on this page runs entirely in the browser. The domain, the mailbox, and the policy you pick are not sent to tlspeek and are not stored. When you are ready, you copy the record into the DNS host that serves the domain. Publishing it is a change you make at that host, not a change this site can make for you.

The record always starts with v=DMARC1. p is required and is one of none, quarantine, or reject. Add sp only when subdomains should differ from the organizational domain. Add pct only when you are deliberately applying a stricter policy to part of your mail. Omit pct to cover every message, which is the default of 100. rua should be a mailbox you control. If you type an address without mailto:, the generator adds that scheme. ruf is optional and usually left blank. adkim and aspf default to relaxed when you leave them unset, which is what most domains want until they have a reason to be strict.

A rollout that does not break mail

Publish p=none with a rua address first. For a week or two, read the aggregate reports and list every service that sends mail as you: the company mailbox, the support desk, the newsletter tool, the invoice system. Each of those has to pass SPF or DKIM in alignment with the From domain. Fix the ones that do not. Then publish p=quarantine, still with rua, and watch for legitimate mail landing in spam. When that is quiet, publish p=reject. Skipping ahead is how password resets and receipts vanish.

pct can make the same climb in smaller steps. pct=10 with p=quarantine asks receivers to quarantine about a tenth of failing mail. Raise it as the reports stay clean, and remove it when you reach full coverage. pct=0 looks like a policy and applies to nothing, so the generator warns about it. Do not leave a partial percentage in DNS and assume the policy is finished.

Where the record goes

The host name is _dmarc followed by the domain, for example _dmarc.example.com. The type is TXT. The value is the single line the form builds. Publish one TXT record at that name. A second DMARC record, even a leftover from an earlier edit, makes both of them invalid. SPF stays on the bare domain. DKIM stays on a selector under _domainkey. DMARC does not replace either of those. It refers to them.

Choices that surprise people

  • p=none with no rua collects nothing and stops nothing. If you are not ready to enforce, you still want the reports.
  • A rua mailbox on a different domain needs an authorization record at that other domain. Otherwise the reports are discarded and the policy looks silent.
  • Strict alignment (adkim=s or aspf=s) fails mail that a subdomain signed or sent. Leave both relaxed unless every sender uses the exact From domain.
  • sp=reject while p=none is a valid combination, and it is harsher on subdomains than on the domain people notice. Set sp on purpose.
  • The generator can build a record that is stricter than your mail is ready for. The warnings under the record are there so you can loosen it before you publish.

After the record is live, use the DMARC checker to read it back from public DNS. DNS hosts differ on how fast a new TXT record is visible. A few minutes is common, and an hour is not unusual. The checker is a separate lookup. The generator itself never performs one.

FAQ

Does this form publish the record for me?

No. It only writes the text. You add a TXT record at your DNS host. Nothing you type in the form is uploaded.

What should the first record be?

v=DMARC1, p=none, and rua pointed at a mailbox you will actually open. Move to quarantine and then reject after the reports show that real mail aligns.

Can I put several report addresses in rua?

Yes. Separate them with commas. The generator turns each address into a mailto: URI and joins them the way the DMARC tag expects.

Should I set ruf?

Usually no. Failure reports are sparse, and they can include message content. Aggregate reports from rua are the practical feedback loop.

What if the checker does not see the record yet?

Confirm the host is _dmarc.your-domain, the type is TXT, and there is only one such record. Then wait for the DNS change to propagate and look it up again.