[ Reports & investigation ]

Published policy versus evaluated policy in a DMARC report

Separate the receiver’s observed policy, alignment results and handling decision.

By the EmailAuth research team

[ Key points ]

  • Published policy is historical context, not proof of final handling.
On this page

A report can show a published reject policy without reporting a rejection. Read the reporting profile before interpreting the disposition: current RFC 9990 defines pass for a message passing DMARC under an enforcing policy, while older reports can use none for a passing message. Interpret the policy context, authentication results and handling decision as distinct evidence. Their relationship, rather than a single field, explains what needs investigation.

Read the observed configuration first

policy_published records the policy configuration observed by the receiver for the report's policy domain. It is historical reporting evidence, not a fresh DNS lookup. If you query DNS today, keep that result and timestamp separate. A policy may have changed during or after the reported interval.

RFC 9990 allows multiple reports when configurations changed during a period; otherwise a reporter should note the final observed configuration. One policy snapshot therefore cannot always explain every message-time condition. Retain the interval and change history before accusing a reporter of inconsistency.

Evaluate the author domain and aligned paths

A record's header_from supplies the author domain. It can differ from the policy domain when subdomains rely on another domain's policy. Determine the applicable policy relationship rather than assuming every row uses the top-level p value in isolation.

The dkim and spf values under policy_evaluated describe DMARC-related identifier evaluation. They differ from raw results under auth_results. A passing aligned path can satisfy DMARC; an unrelated passing identity cannot. A message that passes DMARC is not a policy-rejection candidate merely because the domain publishes p=reject.

Read disposition with override reasons

Illustrative current-profile case one: policy_published shows p=reject, aligned DKIM passes and disposition is pass, as described in RFC 9990 Appendix A and illustrated in Appendix B. Case two: both aligned paths fail, but disposition remains none with a local-policy reason. The report describes a receiver override, not a repaired authentication result. Preserve the failure and the reason separately.

RFC 9990 requires a reason when alignment fails and applied policy does not match the configured policy. Missing or unexpected information should be flagged for investigation rather than filled in with an invented explanation. A reason string is the reporter's explanation and may still need corroboration.

These cases are synthetic. Neither disposition none nor a passing authentication result proves inbox placement. Other filtering and delivery decisions can exist outside the DMARC handling described by the report.

Investigate a real mismatch methodically

Compare the report's period, observed policy, author domain, alignment mode and raw identifiers with your dated DNS changes and controlled message evidence. Confirm the sender is an authorized business route. If the report remains internally inconsistent, preserve the XML and record the uncertainty.

Do not weaken a domain policy simply to make a dashboard's labels agree. Fix a verified sending defect when one exists; separately document receiver overrides and reporting limitations. The result should be a narrative another administrator can reproduce from the same fields.

Compare two explicit field fixtures

Both partial synthetic maps use the current RFC 9990 reporting profile and policy domain and header_from brand.example, p=reject, relaxed alignment and epoch interval 1704067200–1704153600 (1 January 2024 00:00 to 2 January 2024 00:00 UTC). In the first, count=25, raw SPF passes for vendor.example and DKIM passes for brand.example/selector billing1. The computed aligned results are SPF fail and DKIM pass; DMARC passes. The supplied disposition is pass under the current RFC 9990 reporting profile.

In the second, count=4 and both raw mechanisms pass for vendor.example, with DKIM selector v1. Neither identity aligns, so the computed DMARC result fails. The supplied disposition is still none, accompanied by reason type local_policy and the explicitly synthetic comment “trusted-forwarder handling exception.” That reason explains fictional handling without changing the failed alignment.

The field comparisons explain both authentication outcomes; the second example explicitly supplies a reason. These partial field maps are not complete XML or live observations. The receiver's handling decision is an input, not a consequence inferred from authentication alone.

Choose the next action

  • Aligned pass plus current-profile disposition pass (or legacy-profile none): no DMARC rejection is requested for that passing message; investigate delivery separately if needed.
  • Both aligned paths fail plus disposition none: inspect the override reason and corroborate the sender, rather than relabelling the authentication as passing.
  • Report and current DNS disagree: compare the report interval with the dated policy-change history.
  • Required reason missing: preserve the report and flag an unexplained mismatch. Do not invent a local-policy exception.

Distinguish current and legacy dispositions

RFC 9990 Appendix A defines disposition pass as no action for passing DMARC with an enforcing policy. It retains none as no action taken. Older RFC 7489-format reports lack the pass disposition and can report none for a passing message. Check the namespace, reporting profile and aligned results together: none is not universally invalid, but it should not silently stand in for the current-profile pass example. Neither value proves inbox placement.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Reconstruct the historical decision

Current DNS and old report data belong to different observation times.

Next steps

  1. Retain dated policy changes.
  2. Compare policy and author domains.
  3. Preserve override reasons.

CISO / SecOps

Keep exceptions visible

Receiver discretion should remain distinguishable from authentication success.

Next steps

  1. Track unexplained overrides.
  2. Review evidence before escalation.
  3. Document unresolved report inconsistencies.

Founder / Non-technical

Separate policy success from delivery

A published policy and a handling label do not alone explain customer impact.

Next steps

  1. Identify affected business messages.
  2. Review the actual aligned result.
  3. Avoid broad policy changes without a verified defect.

[ FAQs ]

Frequently asked questions

Is policy_published the current DNS record?

No. It describes the configuration the receiver observed for the report.

Does p=reject mean every message is rejected?

No. Passing DMARC messages do not fail merely because a reject policy is published.

Can failing DMARC mail have disposition none?

Yes. A receiver may report an override, which should be examined separately from the authentication failure.

Does an override make alignment pass?

No. Handling exceptions do not change the underlying DMARC evaluation values.

Why can the policy domain differ from header_from?

A subdomain can rely on policy discovered at another domain under the applicable discovery rules.

What if policy changed mid-period?

Keep change history and report timing; the reported configuration may summarize only the final observation.

Does none mean inbox delivery?

No. The disposition is not a complete mailbox-placement result.

What if no explanation fits?

Retain the original report, mark the inconsistency and investigate instead of inventing a reason.

Why can a passing message show pass in one report and none in another?

Current RFC 9990 defines disposition pass for passing DMARC under an enforcing policy. Legacy reports can use none. Preserve the reporting profile and aligned results; neither label establishes inbox placement.

[ Sources ]

Sources

  1. RFC 9990: DMARC Aggregate Reporting

    Sections §3.1.1.5 · §3.1.1.9 · §3.1.6 · §3.3

  2. RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance

    Sections §4.4 · §4.8 · §5.3

  3. RFC 7489 Appendix C: legacy report schema (obsolete)

[ Glossary ]

Glossary

DKIM
A signature-based mechanism binding selected message content to a signing domain.
SPF
Authorization of a connecting sending IP for the identity defined by the SPF protocol.
DMARC alignment
The required domain relationship between the author domain and a successfully authenticated identifier.
Aggregate report
Period-based XML observations of authentication, identifiers, counts and policy handling.
Disposition
The reported policy-handling result, distinct from raw authentication and mailbox placement.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base