CertaDNS
Skip to lesson

The Policy Record · lesson 3 of 3

What pct actually does

After this lesson you can

Predict the effect of a pct value, and say why it is a worse rollout tool than it looks.

Assumes you have read Every tag, including the unused ones.

pct looks like a dial for gradual enforcement. It is not one, and understanding why saves you from a rollout that produces unreadable evidence.

What it actually says

pct=50 asks receivers to apply the policy to 50% of messages that fail DMARC, and to fall back to the next weaker policy for the rest.

p=quarantine; pct=50    ->  50% quarantined, 50% treated as p=none
p=reject; pct=50        ->  50% rejected,    50% quarantined
p=reject; pct=0         ->  0% rejected,     all quarantined  (not "none")

RFC 7489 §6.6.4 specifies the fallback as one step down, not as no policy. p=reject; pct=0 is therefore not equivalent to p=none — it is equivalent to p=quarantine, which catches people who reach for it as a safe no-op.

Why it is a poor rollout tool

  • The sample is per message, not per sender. A misconfigured sender does not get 50% blocked and 50% delivered in any way a user perceives as partial — it gets half its mail lost, at random, which is harder to diagnose than all of it being lost.
  • Implementation varies. Some receivers round, some ignore the tag entirely, and some apply it before evaluating rather than after. You cannot predict the actual proportion at any given receiver.
  • It does not reduce risk, it randomises it. The uncertainty about which senders break is unchanged; only the volume moves.
  • Reports become harder to read. The disposition column now mixes policy-applied and sampled-out rows, so the evidence you need for the next step is noisier at exactly the point you are trying to make a decision.

What to do instead

Stage by population rather than by percentage. sp and np divide your estate along lines that correspond to real differences in readiness, and each step is a decision you can defend with evidence. Moving a subdomain to reject while the apex stays at none is a real reduction in exposure; rejecting a random half of everything is not.

Where pct does earn its place

A very large domain moving to reject, where even a well-evidenced step carries the risk of a surprise at scale, may use pct for a short period to bound the blast radius of an unknown unknown. That is a specific use with a defined end date, not a substitute for having read the reports.

Try it on a real domain

Free, no account, public DNS only.

Last reviewed