Documentation

Learn how to integrate and use DDMARC.

Docs/Failure Analysis
Core Feature

Failure Analysis

Deep-dive into authentication failures, with root-cause classification and forensic samples. Every failing message in your reports is sorted into a named cause that carries a severity, a share of the total, and a concrete fix — so you can tell a broken DKIM selector apart from someone forging your domain.

The Failure Analysis page with Total Failures, SPF Only Failed, DKIM Only Failed and Both Failed tiles, a Suspected Threats versus Misconfig split panel, and the Root Causes & Trends tab listing classified causes with severity badges and fix suggestions.
Dashboard → Failure Analysis

The four counters

The tiles split every failing message by which mechanism let it down. A message counts as a failure when SPF or DKIM did not pass.

Total Failures

All failures in the selected window, with the overall failure rate and the change against the first half of the same window.

SPF Only Failed

SPF did not pass but DKIM did. Very often forwarding rather than abuse.

DKIM Only Failed

DKIM did not pass but SPF did. Usually a signing or key problem on a source you own.

Both Failed

Neither mechanism passed. This is the bucket that contains spoofing.

Threats vs. misconfiguration

The split panel under the tiles divides the same failures into the ones worth investigating and the ones worth fixing.

Suspected Threats

Messages whose root cause was classified as critical severity — likely spoofing or genuinely unauthorized senders. Start here when the number is non-zero.

Misconfig (legitimate senders)

Everything that was not critical — warning and informational causes. These are fixable failures from senders that are almost always yours, and each one comes with a fix suggestion in the list below.

The four tabs

Root Causes & Trends

The classified cause list with fix suggestions, a stacked failure trend for the window, and time-to-resolution statistics.

Forensic Samples

Individual failed-message samples reported back by receivers, with their authentication headers. Plan-gated.

Failing Sources

Per-IP table: source IP and PTR, ASN organization, country, primary issue, claimed From domains and failure count.

Spoofed Identities

The From: domains most often forged in failing mail, plus clustered spoof campaigns.

How a failure is classified

Classification is deterministic and comes from the SPF and DKIM results reported for each record:

Neither passedboth_fail, critical. The single most important bucket on the page.

SPF passed, DKIM did not → the specific DKIM cause for that result (dkim_fail, dkim_none, dkim_permerror, …), falling back to spf_pass_dkim_fail.

DKIM passed, SPF did not → the specific SPF cause, labelled (DKIM Passed) and softened from warning to informational, because a valid DKIM signature means the original sender is still verified. With no specific SPF result it becomes spf_fail_dkim_pass.

Root cause reference

Each row in the Root Causes list shows a severity badge, the stable cause id, the failure count, its share of all failures, a one-line fix, and a View fix action that expands to the full suggestion list plus the top failing sources for that cause — each linking to the matching sender so you can use guided remediation.

Cause idSeverityRaised whenSuggested fix
both_fail
Both Failed — Likely Unauthorized Sender
criticalNeither SPF nor DKIM passed.Verify the sender is legitimate; if it is, add it to SPF and configure DKIM signing. If not, block it and report abuse.
spf_fail
SPF Fail — Unauthorized Sender
criticalSPF returned fail for the sending IP.Add the sending IP or an include to your SPF record, or confirm the source is a third-party service you actually use.
spf_permerror
SPF Permanent Error — Record Invalid
criticalThe SPF record has a syntax error or exceeds its limits.Validate the record, stay within 10 DNS lookups, and remove duplicate or circular includes.
spf_none
SPF None — No Record Found
criticalThe sending domain publishes no SPF record.Create an SPF record covering every legitimate sending source.
spf_softfail
SPF Softfail — Sender Not Fully Authorized
warningThe record ends in ~all and the sender is not listed.Add the missing sender, then consider tightening ~all to -all once the list is complete.
spf_temperror
SPF Temporary Error — DNS Lookup Failed
warningThe SPF lookup failed transiently.Check DNS availability and response times, and reduce lookups if you are near the limit.
spf_neutral
SPF Neutral — Explicitly No Statement
infoThe record uses ?all for this sender.Move to ~all or -all for meaningful protection.
dkim_fail
DKIM Fail — Signature Verification Failed
criticalA DKIM signature was present but did not verify.Check whether the message was altered in transit, verify the key pair, and confirm the published public key.
dkim_permerror
DKIM Permanent Error — Key Invalid or Missing
criticalThe key record could not be parsed or was not found.Confirm the record exists at selector._domainkey, check its syntax, and make sure a rotation did not skip DNS.
dkim_none
DKIM None — No Signature Present
warningThe message carried no DKIM signature at all.Enable DKIM signing on the mail server or provider sending this traffic.
dkim_temperror
DKIM Temporary Error — DNS Lookup Failed
warningThe public key could not be retrieved.Check DNS availability and that the selector record exists.
dkim_policy
DKIM Policy Fail — Sender Policy Issue
warningDKIM failed because of the signing policy.Review signing policies and confirm all required headers are signed.
dkim_neutral
DKIM Neutral — Signature Not Evaluated
infoThe signature was not evaluated.Usually a configuration issue — re-check DKIM setup.
spf_pass_dkim_fail
SPF Pass, DKIM Fail — DKIM Configuration Issue
warningSPF authorized the sender but DKIM failed for a reason with no more specific code.Fix or enable DKIM signing for this sender; check whether a key rotation is due.
spf_fail_dkim_pass
SPF Fail, DKIM Pass — Likely Email Forwarding
infoSPF failed but DKIM verified — the classic forwarding signature.Usually normal for forwarded mail. DKIM passing means the original sender is verified.

Causes are also grouped into categories so you can see, for example, that most of your volume is one SPF configuration problem rather than fourteen unrelated ones.

Cause categories

Unauthorized Senders

unauthorized

Both SPF and DKIM failed — likely spoofing

Unauthorized Senders (SPF)

spf_unauthorized

Mail from IPs that are not in your SPF record

SPF Configuration Issues

spf_config

Problems with SPF record setup or syntax

Email Forwarding (SPF)

spf_forwarding

SPF failures caused by legitimate forwarding

DKIM Configuration Issues

dkim_config

Missing signatures or DKIM setup problems

DKIM Signature Issues

dkim_signature

Signatures that failed verification

DKIM Key Issues

dkim_key

Problems retrieving or validating DKIM keys

Alignment Issues

alignment

Domain alignment failures between headers

Unknown Issues

unknown

Failures that could not be categorized

Refresh

The Refresh control on the Root Cause card refetches every failure-analysis query on the page at once — summary, sources, trend, spoofed identities and root causes — so the whole view moves to the same point in time. It is disabled while a refresh is in flight.

Forensic Samples require Protect or above

Forensic (RUF) reports are included from the Protect plan upward. On lower tiers the tab shows an upgrade prompt instead of samples. Samples only exist at all when receivers honour the ruf= tag on your DMARC record — many do not. See Forensic Reports.

Spoof campaign clusters

The Spoofed Identities tab groups messages where both SPF and DKIM failed — the likely-spoof signal — into clusters that share three things:

The same network

A /24 for IPv4, a /64 for IPv6.

The same forged From

The header-From address being impersonated.

The same calendar week

So a burst reads as one campaign rather than dozens of rows.

A cluster that involves two or more distinct IPs in the range is flagged as distributed — a coordinated-campaign signal rather than one misbehaving host. Each cluster also carries its message count, the countries and ASN organizations involved, and first/last seen timestamps.

Time to resolution

The Root Causes tab also reports how long DNS misconfigurations stay broken. An episode opens at the first DNS check where an SPF, DKIM or DMARC record is missing or invalid, and closes at the first check where it is valid again. You get a median time to resolution, counts of resolved and still-open episodes, and a distribution histogram.

Precision is bounded by how often checks run and by DNS check-history retention, so treat the median as a trend indicator rather than an exact SLA measurement. See DNS Monitoring for how those checks are scheduled.

Scope and time window

  • The period selector in the header covers 7, 14, 30, 60 and 90 days; the underlying API accepts any window from 1 to 365 days.
  • When you are scoped to a single domain, every tab, tile and cause count narrows to that domain.
  • How far back you can look is capped by your plan's data retention.

API endpoints

All nine endpoints are GET, scoped to your organization, and accept days and an optional domain_id.

PathReturns
/api/v1/failure-analysis/summaryTotals and the SPF-only / DKIM-only / both breakdown
/api/v1/failure-analysis/root-causesClassified causes with severity, share and fix suggestions
/api/v1/failure-analysis/root-causes/by-sourceThe same causes, grouped per failing source IP
/api/v1/failure-analysis/sourcesTop failing source IPs with ASN, country and primary issue
/api/v1/failure-analysis/spoof-clustersSpoof campaign clusters by IP range, forged From and week
/api/v1/failure-analysis/by-header-fromMost-spoofed header-From domains
/api/v1/failure-analysis/trendDaily failure counts split by SPF / DKIM / both
/api/v1/failure-analysis/resolution-statsTime-to-resolution for DNS misconfigurations
/api/v1/failure-analysis/patternsRecurring failure patterns across the window

Related Topics