DMARC DNS Record Generator
Build a current or legacy DMARC TXT record with policy inheritance and reporting destinations plus DNS string splitting and rollout review.{{ summaryTitle }}
{{ summaryLine }}
{{ resultsReady ? computation.values.txt_value : '—' }}
{{ primaryCopyAnnouncement || textExportStatus }}
{{ chartExportStatus }}
The chart renderer is unavailable. Exact scope policies remain available in the deployment ledger.
| Area | Status | Detail | Value or action | Copy |
|---|---|---|---|---|
| {{ row.area }} | {{ row.status }} | {{ row.detail }} | {{ row.value }} |
{{ tableExportStatus }}
A receiving mail system needs more than a valid signature or an SPF result to know whether a message is authorized to use the domain visible in its From address. Domain-based Message Authentication, Reporting, and Conformance (DMARC) adds that relationship. It checks whether a passing DKIM signing domain or SPF-authenticated domain aligns with the author domain, then consults the domain owner's published policy when neither mechanism produces an aligned pass.
Alignment can be relaxed or strict. Relaxed alignment accepts domains that share the same organizational domain, while strict alignment requires identical domains. Relaxed mode is the default for both DKIM and SPF because legitimate mail often uses service subdomains. Strict mode can narrow that trust boundary, but it can also expose senders whose signing or envelope domains were never configured to match exactly.
| Policy | Request for mail that fails DMARC | Typical rollout role |
|---|---|---|
p=none |
Do not apply quarantine or rejection because of DMARC | Collect evidence and repair sender alignment |
p=quarantine |
Treat the message as suspicious | Intermediate enforcement after monitoring |
p=reject |
Reject the message during handling | Strong policy after legitimate mail paths are known |
These values express the domain owner's requested assessment policy. Receivers retain local judgment, and forwarding or mailing-list transformations can change authentication outcomes. A syntactically correct record should not move directly to enforcement without checking every service that sends as the domain, including marketing platforms, ticketing systems, transactional providers, and delegated subdomains.
Reporting turns DMARC from a blind policy into an operational feedback loop. Aggregate reports summarize authentication and alignment by sending source. Failure reports can contain message-level information and are not offered consistently, so they require a separate privacy and handling decision. Report mailbox addresses also become public once they appear in DNS.
The current 2026 specification uses the t tag for policy testing and adds active np and psd semantics. The older RFC 7489 profile used pct for sampling and ri for a requested aggregate-report interval. Mixing the two models can produce a record that looks familiar but does not communicate the intended rollout to current receivers.
DMARC depends on working SPF and DKIM; it does not replace them. A record generator can assemble a valid policy expression, but only live DNS checks, authentication results, and real report data can show whether the domain's mail ecosystem is ready for enforcement.
How to Use This Tool:
Choose the standards model and rollout intent before adding optional tags. Monitoring with an aggregate-report destination is the safest starting point for an unmeasured domain.
- Select RFC 9989 (current) unless you are deliberately preparing an RFC 7489 compatibility record. Enter the policy domain; a pasted URL or leading
_dmarc.label is normalized. - Choose a Rollout preset or set Domain policy and Policy application directly. Under the current profile, test mode requests one policy level below the declared value and has no effect on
p=none. - Add one or more Aggregate report destinations as mailbox addresses. Review every generated external authorization record when a report mailbox belongs to another organizational domain.
- Open Advanced for explicit subdomain policies, strict DKIM or SPF alignment, failure reports, public-suffix designation, or compatibility-only report timing. Leave default-valued tags omitted unless the deployment requires them to be explicit.
- Copy the TXT value only after the deployment review is clear. Publish the policy and any required authorization records, then query the exact DNS owner and inspect real DMARC reports before increasing enforcement.
Interpreting Results:
The generated owner and TXT value show what to publish, while the review rows show decisions that still need operator judgment. A syntax pass means the tag sequence and values are internally valid. It does not confirm DNS publication, sender alignment, report delivery, or receiver behavior.
The enforcement profile is a planning view of the declared domain, subdomain, and non-existent-subdomain policies. Under current test mode, quarantine is shown at the none level and reject at the quarantine level. Treat that view as the requested policy effect, not a prediction of how every mailbox provider will classify a message.
After publication, query _dmarc.<domain> as TXT and join adjacent quoted strings from the same DNS answer without adding spaces. Then compare aggregate reports with an approved sender inventory before changing from monitoring to enforcement.
Technical Details:
A DMARC policy record is a semicolon-separated tag list stored at the _dmarc owner below the policy domain. v=DMARC1 must come first, followed here by the domain policy and only the optional tags justified by the selected profile and settings.
Rule Core:
| Rule area | RFC 9989 profile | RFC 7489 compatibility profile |
|---|---|---|
| Required start | v=DMARC1; p=none|quarantine|reject |
|
| Testing or sampling | t=y for test mode; t=n only when defaults are explicit |
pct=0 through pct=100 when non-default or explicit |
| Subdomains | sp overrides p for existing subdomains; omission inherits p |
|
| Non-existent subdomains | np overrides sp or p; omission inherits |
Not emitted |
| Public suffix | psd=y, psd=n, or omitted when unspecified |
Not emitted |
| Report interval | ri is not emitted |
Optional ri=3600|21600|43200|86400 |
Relaxed alignment is represented by the omitted default or explicit adkim=r and aspf=r. Strict mode emits adkim=s or aspf=s. Aggregate mailboxes become a comma-separated rua value. Failure mailboxes become ruf; fo is emitted with them when it differs from the default or explicit defaults are requested.
For a current monitoring record on example.com with aggregate reports sent to dmarc-reports@example.com, the core result is:
Owner: _dmarc.example.com
Type: TXT
Value: v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
A report destination outside the policy domain's organizational domain requires DNS authorization by the destination domain. The generated companion owner follows <policy-domain>._report._dmarc.<destination-domain> and carries v=DMARC1;. External-domain detection uses a limited organizational-domain approximation rather than a live public-suffix database, so multi-label public suffixes and unusual delegations require manual review.
The TXT value is measured in UTF-8 bytes. When it exceeds 255 bytes, it is split into multiple quoted character-strings within one TXT resource record, preferably at a semicolon boundary. DNS readers concatenate those adjacent strings; they must not be published as several competing DMARC records.
Input normalization lowercases the domain, removes a leading _dmarc., trims trailing dots, and accepts mailbox-style report destinations with or without an explicit mailto: prefix. Historic report-size suffixes are accepted for compatibility, but the current profile flags them as obsolete.
Limitations and Privacy Notes:
- The generator does not query DNS, discover all sending services, parse DMARC reports, or test real messages. A ready record is still a draft.
- Aggregate report addresses are public in DNS. Third-party processing and retention should be approved before publication.
- Failure reports can contain message-level information, may expose private content, and are not sent consistently. Add
rufonly with a defined security and privacy process. - Policy requests do not override receiver discretion. Forwarding, mailing lists, authentication changes, and organizational-domain discovery can affect live outcomes.
References:
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance, IETF, May 2026.
- RFC 9990: DMARC Aggregate Reporting, IETF, May 2026.
- RFC 9991: DMARC Failure Reporting, IETF, May 2026.
- How to check TXT records with dig, Simplified Guide.