Skip to Main Content
Back to Learning CenterEmail Authentication

Can a domain have multiple DMARC records?

By Samuel ChenardJuly 18, 20268 min read

In brief

Can a domain have multiple DMARC records? No. RFC 9989 discards them all. Learn how to merge and validate one DMARC record, then verify DNS and mail flow.

Can a domain have multiple DMARC records?

No. A domain must publish one DMARC policy record at a given DMARC owner name, such as _dmarc.yourdomain.com. Under RFC 9989 DMARC policy discovery, if multiple DMARC policy records are returned for one target, the receiver discards all of them. Merge the intended tags into one record, remove only duplicate DMARC records, then validate the DNS result and real mail flow.

At a glance

Quick takeaways

  • One DMARC owner name must return one DMARC policy record.
  • Multiple complete DMARC records do not combine into a stricter or newer policy.
  • RFC 9989 says receivers discard all returned DMARC policy records when more than one is found.
  • One DNS TXT record can contain several quoted strings without becoming multiple DMARC records.
  • A subdomain can publish its own single DMARC record at its own _dmarc owner name.
  • DNS validation confirms the published record, but delivered-message and aggregate-report evidence confirm how production mail behaves.

Who is affected?

This rule affects any organization that sends mail using a domain, especially where more than one administrator, DNS provider, email platform, or MSP can edit the DNS zone. Duplicate DMARC records often appear during a vendor migration or when a reporting service asks an administrator to add an example record without checking what is already published.

The relevant identity is the DMARC owner name for the domain in the visible From: header. For From: billing@yourdomain.com, the initial lookup target is _dmarc.yourdomain.com. It is not automatically the organizational domain, a sending service's domain, or the domain in an SMTP envelope address.

A subdomain is separate. For example, _dmarc.news.yourdomain.com can contain one DMARC policy record while _dmarc.yourdomain.com contains another. That is valid because they are different owner names. The problem is two complete policy records at the same owner name.

For the broader policy and alignment model, see Palisade's DMARC learning hub.

What are the requirements?

RFC 9989 is the controlling DMARC standard. It is a final RFC, not a draft, and its policy-discovery rules apply whenever a receiver looks up a DMARC policy record.

Publish one DMARC policy record at the DMARC owner name

RFC 9989 defines a DMARC policy record as a DNS TXT record published below the _dmarc label. A valid record begins with the version tag v=DMARC1.

Technical exampletext
_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"

The example is illustrative only. Use the policy and reporting destination authorized for your domain.

One DMARC TXT record at _dmarc.yourdomain.com contains the version, policy, and aggregate-reporting tags
Source: Palisade.

The policy tag, reporting tags, alignment modes, and optional subdomain policy belong in that single policy record. Do not publish a second record just to add rua, change p, or set an alignment preference.

Receivers discard multiple returned policy records

RFC 9989 section 4.7 specifies the multiple-record result: if more than one DMARC Policy Record is returned for a single target, all returned records are discarded.

That has a practical consequence. A receiver does not merge tags from both records. It does not select the strictest policy, the record with the latest DNS edit, or the first answer shown by a DNS dashboard. The intended DMARC policy is unavailable to that discovery attempt.

For example, these are two separate policy records and must not coexist at _dmarc.yourdomain.com:

Technical exampletext
"v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"
"v=DMARC1; p=quarantine; adkim=s"

The safe repair is to decide which values are intended, then combine those values into one valid record.

Split TXT character strings are not necessarily duplicate records

A DNS interface or resolver can show a long TXT value as multiple quoted character strings. That display alone does not prove that the domain has multiple DMARC policy records.

Count complete returned resource records that begin with v=DMARC1. If a resolver presents several quoted pieces as one TXT resource record, those pieces can be parts of the same published value. Before deleting anything, inspect the DNS record boundaries in the zone editor and compare the answer from more than one resolver.

Do not delete unrelated TXT records at _dmarc.yourdomain.com until you have confirmed they are complete DMARC policy records. DNS zones can contain other verification or service records.

When does the requirement take effect?

The single-record rule has no mailbox-provider rollout date. It applies each time a receiver performs DMARC policy discovery under RFC 9989.

DNS changes have their own timing. A corrected authoritative zone can coexist temporarily with cached answers at public resolvers until the prior record's TTL expires. During that period, one resolver may show the repaired record while another still returns the old duplicate set.

RFC 9989 is the current published DMARC RFC cited for this rule. The operational date that matters after a change is the expiration of cached DNS data, not a new provider enforcement date.

How do I implement the requirement?

1. Identify the exact DMARC owner name

Start with the domain in the visible From: address for the affected mail. Prefix it with _dmarc.

For a message from alerts@yourdomain.com, inspect _dmarc.yourdomain.com. For mail from alerts.news.yourdomain.com, inspect _dmarc.news.yourdomain.com first.

Record the current TXT answers before editing the DNS zone. This gives the domain owner or MSP a rollback reference if an authorized reporting address or policy tag is removed by mistake.

2. Separate complete records from split TXT strings

Inspect each returned TXT resource record. Identify every record whose value begins with v=DMARC1.

If there are two or more complete DMARC values at the same owner name, treat that as a duplicate-record condition. If a provider interface wraps one long value into quoted chunks, verify whether those chunks belong to a single DNS resource record before changing the zone.

3. Decide the intended tags before editing

Confirm the intended DMARC policy, aggregate-report destination, any authorized failure-report destination, subdomain policy, and alignment modes with the domain owner.

Do not overwrite an existing record with a vendor example. A vendor example may omit a reporting destination, a subdomain policy, or an alignment setting that the domain already relies on. Build one record from the settings the owner has approved.

4. Merge the intended tags into one record

Publish one TXT record beginning with v=DMARC1, with each intended tag appearing once.

Technical exampletext
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourdomain.com; adkim=s; aspf=s

This is illustrative only. The domain's real reporting destination and policy must be approved by the domain owner.

Remove only the extra complete DMARC policy records at that owner name. Keep unrelated TXT records unless you have confirmed that they are duplicate DMARC policy records.

5. Allow cached DNS answers to expire

Check the authoritative DNS zone after saving the change. Then query public resolvers after the prior TTL has had time to expire.

If a public resolver still returns duplicates after that interval, compare its answer with the authoritative zone and check whether another DNS provider, delegated zone, or migration configuration is still publishing the old data.

How do I validate compliance?

Validate the repair in separate layers.

First, check DNS. Query the authoritative DNS server and at least one public resolver for the exact _dmarc owner name. Confirm that each answer contains one complete DMARC policy record beginning with v=DMARC1. Palisade's DMARC checker can inspect the public DMARC record for the domain.

Second, validate the vendor or DNS-management layer. Confirm that the zone editor shows the intended single record and that every authorized reporting destination remains in the final value. A green DNS-management status does not prove that a receiving mailbox provider used the record.

Third, validate a real delivered message from the production sending path. Inspect its authentication results to confirm that the source is signing or authorizing mail as expected. A valid public DMARC record does not prove that SPF or DKIM alignment passes for every sender.

Fourth, review DMARC aggregate reports after data accumulates. Aggregate-report data can show the sending sources and authentication outcomes receivers reported for the domain. This is where an apparently correct record can be compared with real production traffic.

For related sender-key maintenance, see how to manage multiple DKIM records. For the policy outcome once the duplicate is fixed, see how a DMARC record protects a domain.

Track the senders behind the repaired record

A public record check can confirm that one DMARC policy record is published. It cannot show which production sources still fail SPF or DKIM alignment after the repair.

Start with Palisade to analyze DMARC aggregate-report data, identify sending sources and alignment issues, and create prioritized remediation tickets. Palisade proposes the next policy step from the evidence, while a human reviews the evidence and applies DNS changes. It does not autonomously change your DMARC policy, repair every sender, or guarantee future message authentication or inbox placement.

Evidence

Sources and further reading

Questions readers ask

Frequently asked questions

Can a domain have multiple DMARC records?

No. A domain can have only one DMARC policy record at a given DMARC owner name. RFC 9989 says receivers discard all returned DMARC policy records when multiple records are returned for one target.

Will receivers use the strictest of two DMARC records?

No. RFC 9989 does not instruct receivers to choose the strictest, newest, or first record. Multiple returned DMARC policy records are discarded.

Can I publish one DMARC record for policy and another for reports?

No. Put the DMARC policy and reporting tags in one record at the same _dmarc owner name. Adding a second complete record makes policy discovery invalid for that target.

Are two quoted TXT strings always two DMARC records?

No. A single DNS TXT resource record can be displayed as multiple quoted character strings. Inspect the DNS resource-record boundaries and count complete values that begin with v=DMARC1.

Can a subdomain have its own DMARC record?

Yes. A subdomain can publish one DMARC policy record at its own owner name, such as _dmarc.news.yourdomain.com. That is separate from the parent-domain record at _dmarc.yourdomain.com.

Does removing a duplicate DMARC record make every message pass?

No. Removing duplicates restores valid DMARC policy discovery. Each message still needs aligned SPF or DKIM authentication to pass DMARC.

Turn DMARC findings into a managed fix path

Start in Palisade.

Get started

Share this article

Samuel Chenard

Written by

Samuel Chenard

CEO & Co-Founder, Palisade

Samuel Chenard is the CEO and co-founder of Palisade, agentic DMARC software for IT teams and MSPs, from one domain to thousands.

More from Samuel

Related articles and tools