Skip to main content

DMARC to DMARCbis Migration

Convert your RFC 7489 DMARC record to the DMARCbis syntax

Paste your current DMARC record to get the migrated DMARCbis-compliant version: deprecated tags removed (pct, rf, ri), np tag added, pct<100 converted to t=y. The tool displays a 0 to 100 DMARCbis compatibility score, six scoring dimensions, and the migrated record ready to publish.

What this tool does

  • Removes deprecated tags (pct, rf, ri, fo).
  • Adds the np tag for non-existent subdomain policy.
  • Converts pct below 100 to t=y (testing mode).
  • Keeps v=DMARC1 for RFC 7489 backward compatibility.

Why migrate to DMARCbis?

DMARCbis succeeds RFC 7489, published in 2015. The draft introduces four structural changes:

  • Removal of pct, rf, ri: the policy now applies to 100% of traffic, only one report format remains defined, and the report interval is enforced by default. The fo tag is retained.
  • Addition of np: the nonexistent subdomain policy becomes explicit, closing a gap exploited by attackers who fabricate fictitious subdomains.
  • Conversion pct<100 to t=y: testing mode replaces the percentage. Simpler, more predictable, more aligned with actual receiver behavior.
  • DNS tree walk to identify the organizational domain, replacing the Public Suffix List.

Your current DMARC record keeps working during the transition. Migrating now means being ready when the RFC is officially published and immediately benefiting from nonexistent subdomain protection via np.

How the analyzer works

The tool parses your DMARC v1 record, applies the DMARCbis transformations and computes a DMARCbis compatibility score on 100. The computation is local, with no DNS resolution or external call.

The five possible verdicts

VerdictScoreMeaning
Already compliant90 to 100No change required or minor adjustment. Watch for the official RFC publication.
Partial migration75 to 89One to three minor changes (typically redundant pct=100 or missing np).
Major migration50 to 74Four or more changes. Multiple deprecated tags and weak policy.
Invalid record0 to 49 or invalid stateSyntax errors to fix before migrating.
No recordN/AEmpty field. Paste a DMARC record before running the analysis.

The six scoring dimensions

DimensionWeightWhat it measures
No deprecated tags40 pointsPresence of pct, rf, ri. The more present, the stronger the deduction.
np tag present15 pointsExplicit nonexistent subdomain policy. Inherits from sp or p if absent.
Policy strength20 pointsreject earns the maximum, quarantine a fraction, none a minimal credit.
DKIM and SPF alignment10 pointsadkim=s and aspf=s earn the maximum, r keeps part of it.
rua reporting configured10 pointsValid mailto URI for aggregate reporting.
Syntactic hygiene5 pointsWell-formed, parsable record.

Three priority factors are surfaced at the top of the result to explain the score immediately, before the dimension-by-dimension breakdown.

Key DMARC to DMARCbis changes

Removed tags

TagActionWhy
pctRemoveThe policy applies to 100% by default. If pct<100, the tool converts to t=y.
rfRemoveOnly one report format remains defined in DMARCbis.
riRemoveReceivers enforce a default report interval.

Added tag

TagValueWhy
npinherits from sp or pPolicy for nonexistent subdomains. Must be explicit in DMARCbis.

Tags kept unchanged

v=DMARC1, p, sp, adkim, aspf, rua, ruf. Their semantics are unchanged.

Step 1: audit the current record. Run the analysis with your published DMARC record. Note the score, verdict and recommendations.

Step 2: apply the proposed changes. Copy the migrated record and publish it in your DNS zone at _dmarc.captaindns.com. Keep the previous record for 48 hours with a short TTL (300 seconds) to allow a quick rollback if needed.

Step 3: monitor the rua reports. For two to four weeks, check your aggregate DMARC reports to confirm no impact on legitimate flows. The switch to np may reveal undocumented active subdomains.

Step 4: stabilize the TTL. Once reports are validated, raise the TTL back to 3600 or 86400 seconds. The migration is complete.

If you are also moving from a lenient policy to p=reject, use t=y for a few weeks. DMARCbis receivers then apply a policy one level down, which serves as a safety net during the validation phase.

Common mistakes to avoid

Keeping pct=100. This value is redundant in DMARCbis. The whole tag can be removed without changing the behavior.

Confusing np and sp. sp targets existing subdomains, np targets exclusively nonexistent subdomains. The two tags are complementary, not interchangeable.

Combining pct and t. In DMARCbis, t always takes precedence. There is no point in keeping pct when t=y is present.

Removing rua during cleanup. Aggregate reporting is the only source of truth on your policy effectiveness. Keep rua=mailto:reports@captaindns.com (or your dedicated address) in the migrated record.

Migrating without reviewing existing reports. Before tightening the policy, check which legitimate senders are not yet SPF or DKIM aligned. Migrating to p=reject without this step can block internal flows.

Declaring psd=y without being a registry. The psd=y tag is reserved for public suffix operators such as .bank or .gov.uk. For a standard organizational domain, omit the tag or use psd=n to make it explicit.

ToolPurpose
DMARCbis CheckerAudit a published domain against DMARCbis with DNS tree walk
DMARC CheckerVerify publication and resolve the DMARC record from DNS
DMARC ValidatorValidate the syntax of a DMARC v1 record before publishing
DMARC GeneratorCreate a DMARC or DMARCbis record from scratch
DMARC Report ReaderDecode aggregate XML reports
DMARC MonitoringReceive and analyze your aggregate DMARC reports automatically
Reference: draft-ietf-dmarc-dmarcbis, IETF.