Spoofed invoices and fake password-reset mails that show your company's domain in the From: line are what DMARC exists to stop. But publish p=reject too early and your own newsletter, CRM or ticket system disappears into receivers' rejection logs. A good DMARC record is less about syntax than about rollout order: monitor first, fix your senders, then enforce.
The DMARC Record Generator builds the TXT record from a few choices: policy, report addresses, and optional subdomain policy, percentage, alignment and failure-reporting settings. It validates every address, warns when reports would go to a domain that has to authorize them, and explains the consequences of each policy. It runs entirely in your browser.
What is a DMARC record generator?
In simple terms
DMARC tells receiving mail servers what to do with mail that claims to come from your domain but fails authentication, and where to send reports about it. The generator is a form that writes this instruction in the exact v=DMARC1; p=… format, so you choose the policy and report address instead of memorizing tag names.
Technical background
DMARC is specified in RFC 7489. The record is a TXT record at _dmarc.<domain>; receivers that find none at a subdomain fall back to the organizational domain. A message passes DMARC when SPF or DKIM passes and the authenticated domain is aligned with the domain in the visible From: header:
- SPF alignment compares the envelope sender (Return-Path) domain with From:.
- DKIM alignment compares the
d=domain of a valid DKIM signature with From:. - Relaxed alignment (
r, the default) accepts the same organizational domain, sobounce.example.comaligns withexample.com. Strict (s) requires an exact match.
The tags the generator can produce:
| Tag | Meaning |
|---|---|
v=DMARC1 | Version; must come first |
p | Policy for the domain: none, quarantine or reject |
sp | Policy for subdomains, when different from p |
pct | Percentage of failing mail the policy applies to (default 100) |
rua | Aggregate report destinations (mailto: URIs) |
ruf | Failure (forensic) report destinations |
adkim / aspf | DKIM / SPF alignment mode, r or s |
fo | When failure reports are generated: 0, 1, d or s |
When a report address is in a different domain than the one publishing the policy, RFC 7489 §7.1 requires the destination domain to publish <policy-domain>._report._dmarc.<destination-domain> with v=DMARC1. Otherwise receivers do not send reports there.
Why use a DMARC record generator?
- Correct syntax and tag order without typos such as
p=reject;rua=missingmailto:. - Validated report addresses. Each address is checked as a real mailbox format (local part and public domain); a
mailto:prefix you paste is accepted and normalized. - External report warnings. Any address outside your domain triggers a warning that names the exact authorization record the other domain must publish.
- Safe rollout guidance. The tool warns when you enforce without aggregate reports, notes that
p=noneonly monitors, and reminds you to confirm all senders beforep=reject. - Lean records. Default values (
pct=100, relaxed alignment,fo=0,spequal top) are left out so the record stays short and readable.
Who should use it?
- Domain owners and mail administrators publishing DMARC for the first time.
- Teams moving from
p=noneto enforcement who want a reviewed record for each step. - Organizations preparing for mailbox-provider bulk-sender requirements, which include having a DMARC record.
- Agencies and MSPs producing DNS change requests for clients.
How the DMARC generator works
The form runs in JavaScript in your browser and rebuilds the record on every change. Nothing is sent to NetTools.tech and no DNS query is made.
- The domain is validated as a public domain name; the host becomes
_dmarc.<domain>. - The record starts with
v=DMARC1; p=<policy>. sp=is added only if you chose a subdomain policy different fromp.pct=is added only if it is not 100; values outside 0–100 or non-integers are errors.- Report addresses are de-duplicated, validated and written as
rua=mailto:…andruf=mailto:…, comma-separated when there are several. adkim=sandaspf=sare added only for strict alignment.fo=is added only when there is at least onerufaddress and you chose something other than0.
Then the guidance runs: missing rua is a warning with p=none and an error with an enforcing policy; external report domains produce a warning; p=reject, failure reports and strict alignment each come with a note. While an error is present or the domain is empty, the record is dimmed and Copy record is disabled.
How to use the NetTools.tech DMARC generator
- Open the DMARC Record Generator.
- Enter Your domain, for example
example.com. The host to publish appears as_dmarc.example.com. - Choose the Policy for mail that fails DMARC: Monitor (
p=none, selected by default), Quarantine (p=quarantine) or Reject (p=reject). - Enter one or more Aggregate report addresses (rua), one per line.
- Open Advanced options if you need them: Subdomain policy (sp), Percentage (pct), DKIM alignment (adkim), SPF alignment (aspf), Failure report addresses (ruf) and Failure reporting options (fo).
- Read the messages under the record, then press Copy record.
- Publish it as a TXT record at the host shown, replacing any existing DMARC record.
- Verify the published record with DMARC Lookup, which also checks external report authorization.
Understanding the results
| Result | Meaning | What to look for |
|---|---|---|
Type TXT · Host _dmarc.<domain> | The exact name to publish | Enter only _dmarc if your DNS panel appends the domain |
| Record | The assembled v=DMARC1; … value | Dimmed means an error or a missing domain |
| Info: enter your domain | No domain yet; the host shows example.com | Copy stays disabled until a domain is entered |
| Warning / error: no rua | No aggregate reports configured | Without reports you cannot see what fails; enforcing without them is flagged as an error |
| Warning: address outside the domain | A report address in another domain | That domain must publish <your-domain>._report._dmarc.<their-domain> |
| Info: pct | The share of failing mail the policy applies to | The rest is treated one level more leniently |
| Info: p=none only monitors | Reporting mode | Plan the move to quarantine once reports are clean |
| Warning: p=reject | Unauthenticated mail will be refused | Confirm every legitimate sender passes SPF or DKIM with alignment first |
| Info: failure reports | ruf addresses are set | They can contain personal data and many providers do not send them |
| Info: strict alignment | adkim=s or aspf=s | Subdomain senders will fail |
Example: from monitoring to enforcement
Step 1, monitoring. For example.com with Monitor selected and [email protected] as rua, the generator shows host _dmarc.example.com and:
v=DMARC1; p=none; rua=mailto:[email protected]with the note that p=none only monitors.
Step 2, partial enforcement with an external report service. After fixing the senders found in the reports, switch to Quarantine, set pct to 50 and add [email protected] (a reporting service in another domain):
v=DMARC1; p=quarantine; pct=50; rua=mailto:[email protected],mailto:[email protected]The generator now warns that [email protected] is outside example.com and that example.net must publish example.com._report._dmarc.example.net with v=DMARC1. You can check both records from a shell:
dig +short TXT _dmarc.example.com
dig +short TXT example.com._report._dmarc.example.netStep 3, full enforcement. Select Reject and reset pct to 100; the pct tag disappears and a warning reminds you to confirm all senders first.
Common use cases
- First DMARC record for a domain, published together with SPF and DKIM.
- Policy steps from
p=nonetoquarantineandreject, each as a reviewed record. - Subdomain control:
p=rejectfor the main domain withsp=quarantinewhile subdomain senders are migrated, or the reverse. - Adding a report processor: generate the rua list and get the exact authorization record the processor must publish.
- Parked domains:
p=rejectwith a report address, alongsidev=spf1 -all.
Troubleshooting
No aggregate reports arrive
Check the published record with DMARC Lookup. If the address is in another domain, that domain must publish the _report._dmarc authorization record. Also allow a day or more: receivers typically send aggregate reports once per day, and small domains with little traffic receive few.
Legitimate mail is quarantined after switching policy
Look at the aggregate reports for the failing source. Usually a service sends with its own Return-Path domain (so SPF is not aligned) and is not DKIM-signing with your domain. Configure DKIM for that service with your domain, or a custom bounce domain that aligns, then retry. Moving back to p=none temporarily is a valid emergency step.
The copy button stays disabled
Either the domain is empty or invalid, pct is outside 0–100, or a report address is malformed. The message list names the problem.
Two DMARC records exist
Receivers treat multiple DMARC records at _dmarc as an error and may ignore the policy. Delete the old record when you publish the new one.
Common mistakes
- Jumping straight to
p=rejectwithout reading reports first. - Publishing the record on the domain itself instead of at
_dmarc. - Using an external report address without the destination's authorization record.
- Enabling
rufand expecting reports from every provider; many never send them. - Setting strict alignment while a provider sends with a subdomain envelope sender.
- Assuming
spis needed: subdomains inheritpunlessspsays otherwise.
Limitations
- The generator does not query DNS: it cannot see your current record, check SPF/DKIM for your senders or verify that an external authorization record exists.
- Report destinations are generated as
mailto:URIs only. - Only the tags listed above are produced;
ri(report interval) andrf(report format) are not offered and use their defaults. - The tool cannot tell you when it is safe to enforce. That depends on your aggregate reports, which you need to read in a report processor or by hand.
Security & privacy
The DMARC generator runs entirely in your browser; the domain and report addresses you type are not sent to or stored by NetTools.tech. Remember that the published record is public: anyone can read the report addresses, so use a dedicated mailbox rather than a personal one. Failure reports (ruf) can contain parts of real messages, including personal data of recipients and senders, which is a reason to enable them only deliberately. No passwords or DNS credentials are ever needed.
Related tools
- DMARC Lookup – read and validate the published record and external report authorization (guide).
- SPF Record Generator – build the SPF record DMARC relies on (guide).
- DKIM Record Generator – create a DKIM key for aligned signatures (guide).
- Email Header Analyzer – see SPF, DKIM and DMARC results of a real message (guide).
- Email Provider Compliance Check – check DMARC presence among bulk-sender requirements (guide).
Summary
A DMARC record tells receivers how to treat mail that fails aligned SPF and DKIM, and where to report it. The NetTools.tech DMARC Record Generator builds that record in your browser, validates report addresses, flags external destinations that need authorization and explains each policy step. Start with p=none and reports, verify with DMARC Lookup, and enforce only when the reports show all legitimate mail passing.
Frequently asked questions
Where do I publish a DMARC record?
As a TXT record at the host _dmarc of your domain, for example _dmarc.example.com. In DNS panels that append the domain automatically, enter only _dmarc as the host name.
Which DMARC policy should I start with?
Start with p=none and at least one rua address, so you receive aggregate reports without affecting delivery. Once the reports show that every legitimate source passes SPF or DKIM with alignment, move to p=quarantine and later to p=reject.
Can DMARC reports go to an address at another domain?
Yes, but the receiving domain must authorize it by publishing a TXT record named <your-domain>._report._dmarc.<their-domain> containing v=DMARC1. Without it, receivers skip that address; the generator warns you whenever a report address is outside your domain.
What is the difference between rua and ruf?
rua receives aggregate reports: daily XML summaries of which IPs sent mail as your domain and whether they passed. ruf receives per-message failure reports, which can contain message details and personal data, and many large providers do not send them at all.
What does pct do in a DMARC record?
pct applies the policy to only a percentage of failing mail; the rest is treated one level more leniently, so quarantine with pct=25 quarantines a quarter and only monitors the rest. The generator leaves pct out when it is 100, because that is the default.
Should I use strict or relaxed alignment?
Relaxed alignment, the default, accepts a subdomain such as mail.example.com as aligned with example.com. Strict alignment requires an exact match and makes mail from subdomain-based senders fail, so use it only when you know every sender uses the exact From: domain.
Does the generator check my existing DMARC record?
No. It builds a new record from your choices without querying DNS. Use DMARC Lookup to read what is published today and to check whether external report destinations have actually published their authorization record.
Does a DMARC record stop spoofing on its own?
Only an enforcing policy (quarantine or reject) asks receivers to act on failing mail, and only if SPF or DKIM is set up correctly for your real senders. p=none just collects reports, which is the necessary first step but not protection by itself.