DNSfinder.net
DMARC Builder

DMARC Generator

The generator writes a DMARC TXT record from a handful of choices: the policy for the domain, a separate policy for subdomains, the share of failing mail it applies to, the addresses for aggregate and forensic reports, the alignment mode for DKIM and SPF, and the report interval. The record updates as you change anything, the Checks card points out weak choices, and when reports go to another domain the authorization record that domain must publish is shown as well.

Loading DMARC Generator...

Querying live edge resolvers and network infrastructure...

How to use the DMARC Generator

  1. Enter the domain, pick a policy (none, quarantine or reject) and leave the subdomain policy on Same as p unless subdomains need a different one.
  2. Type at least one rua address for aggregate reports. Add ruf addresses only if you also want per-message failure reports, which reveals the fo checkboxes.
  3. Keep DKIM and SPF alignment on Relaxed unless every sender uses the exact From domain, and move the pct slider or the report interval only if you need them.
  4. Copy the value, publish it as a TXT record at _dmarc.yourdomain, publish any record listed under External report authorization at the other domain, then verify with the checker link.

What to look for

Only non-default tags are written

pct appears only when the slider is below 100, sp only when it differs from Same as p, adkim and aspf only when set to strict, ri only when the interval is not 24 hours, and fo only when ruf is set and the selection differs from 0. The result is the shortest record that says what you chose.

Reports to another domain

When a rua or ruf address is not on your domain, the generator lists an extra record for the receiving domain to publish: yourdomain._report._dmarc.theirdomain with the value v=DMARC1. Without it most receivers will not deliver reports there. Hosted report services normally publish it for you.

Checks that change as you go

A missing rua is a warning because you cannot move to enforcement blind. p=none gets a note about the usual two to four weeks of monitoring, a pct under 100 a reminder to raise it, sp=none on an enforced domain a warning, and reject at 100 a pass.

Guide

Choosing DMARC tags that match where you are in the rollout

The tags the generator writes

v=DMARC1 and p are always present, and p takes none, quarantine or reject. sp sets a different policy for subdomains and is omitted when it equals p, since receivers default it that way. pct is a whole number from 0 to 100 and is written only below 100. rua and ruf take one or more mailto: URIs. You can type the addresses separated by spaces, commas or semicolons, with or without the mailto: prefix, and the generator normalizes them.

adkim and aspf control alignment: r (relaxed) accepts any subdomain of the organizational domain, s (strict) requires an exact match. ri is the requested interval between aggregate reports in seconds, written only when you move the selector off 24 hours. fo decides when a forensic report is generated: 0 means both SPF and DKIM failed, 1 means either failed, d a DKIM failure, s an SPF failure.

Picking a policy for each stage

Start at p=none with a rua address. The record delivers everything as before and gets receivers sending you aggregate reports, which is how you learn which hosts send as your domain and whether their SPF and DKIM pass. Read those reports in the DMARC Report Analyzer before changing anything else.

When every legitimate source passes, switch to quarantine. If you are cautious, set pct to 25 or 50 so only part of the failing mail is affected and the remainder gets the weaker policy. Raise pct to 100, then move to reject. The generator shows a pass only for reject at 100, because that is the state in which forged mail is refused rather than filed under spam.

Subdomains, alignment and intervals

sp matters more than it looks. With p=reject and no sp, subdomains inherit reject, which is what you want. Setting sp=none to keep a subdomain working leaves it open to forgery, and the Checks card warns about that combination. The better fix is to give the subdomain a correct SPF and DKIM setup and let it inherit the strict policy.

Strict alignment rarely adds security and often breaks mail from services that sign with a subdomain or use a bounce subdomain for SPF, so Relaxed is the default for a reason. The report interval is a request, not a guarantee. Most receivers send one aggregate report a day whatever ri says, so 24 hours is the honest choice.

Publishing the record

At your DNS host, add a TXT record. The host name is _dmarc.yourdomain, though some interfaces want only _dmarc and append the domain themselves. The note under the output says so. Paste the generated value exactly, semicolons included. There must be one DMARC record at that name and no more.

If the External report authorization card lists a record, it belongs in the DNS of the receiving domain, not yours. Once both are live, follow the link to the DMARC Checker, which reads the record back, parses every tag and confirms whether each external destination is authorized.

  • Host _dmarc (or _dmarc.yourdomain), type TXT, value the generated record.
  • One DMARC record per name. A second one makes receivers ignore both.
  • Subdomains without a record of their own inherit this one through sp.

What the generator cannot check

It validates the shape of each address, not whether the mailbox exists or can cope with the volume. Reports arrive daily from every receiver that saw your mail, so a personal inbox fills quickly. Use a dedicated address or a report service.

It does not look up your current record, your SPF or your DKIM keys, and it cannot tell whether your mail will pass once the policy is enforced. The checker and the report analyzer cover those, and the SPF Checker and DKIM Checker cover the two mechanisms DMARC depends on.

Knowledge Base & FAQ

DMARC Generator FAQs

Common questions about the dmarc generator.

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain. It changes nothing about delivery and starts aggregate reports flowing. Leave the policy on none and enter the rua address in the generator and that is exactly what it produces, with the host name _dmarc.yourdomain filled in.