[ Reports & investigation ]

Report totals versus sending logs: reconcile different populations

Explain population differences before treating report and sender totals as a reconciliation failure.

By the EmailAuth research team

[ Key points ]

  • Document message, recipient, attempt and observation units.
  • Use evidence-backed adjustments and preserve unexplained residuals.
  • An arithmetic match does not prove message-level linkage.
On this page

Sending logs and DMARC aggregate reports count different events. A sender may record an application submission, a recipient attempt or remote acceptance; a report groups receiver observations involving a domain. Choose a comparable population before subtracting one total from the other.

Write down what each counter means

References: RFC 9990 §3.1.1.8, RFC 9990 §3.1.

For the sender, document whether the count represents messages, recipient deliveries, attempts or successful SMTP transactions. Establish the time basis and handling of retries. For reports, preserve policy domain, header From domain, reporter, interval and row count. Sum row counts rather than counting XML rows as messages.

Reports are not restricted to mail your authorized services intended to send. Spoofed use of the domain and indirect routes can contribute observations, while non-reporting destinations and lost reports reduce visibility. A raw difference is therefore not a measure of lost legitimate mail.

Align scope before comparing

References: RFC 9990 §3.1.2, RFC 9990 §3.5.4.

Select the same author-domain scope and overlapping observation period. Separate policy-domain grouping from the actual header From domains within it. Use known destination relationships where available, but do not pretend an aggregate row maps to an individual outbound message.

Retain only one counted copy of known duplicate reports. Keep unresolved overlaps separate and note late arrivals. Record sender-log retention gaps and whether internal-only traffic is included. These details can change the comparison more than the authentication result itself.

Build an explanation bridge

Illustrative case: sender records show 1,000 recipient deliveries, but only 800 of those recipient deliveries target the receiver cohort represented in the collected reports. Reports contain 820 observations, including 20 observations not attributed to those approved deliveries. The naive comparison suggests a shortage of 180. The scoped comparison explains the difference as 200 unobserved deliveries and 20 additional reported observations. This is synthetic arithmetic, not a claim that aggregate data alone proves which 20 messages were abusive.

Use categories with evidence: outside receiver coverage, outside interval, duplicate receipt, suspected unauthorized traffic and unexplained. Do not force an unexplained residual into spoofing or delivery loss just to balance the spreadsheet.

Use the right evidence for the remaining question

For a missing customer message, investigate recipient-level delivery records and authorized message samples. For a new source in reports, investigate ownership and authentication identities. For a metric discrepancy, preserve the query definitions and raw inputs so another analyst can reproduce the totals.

Close the reconciliation with matched scopes, explained adjustments and an explicit residual. A nonzero residual can be an honest result when the systems do not observe the same population.

Retain the reconciliation worksheet

Keep one line per adjustment with its sign, unit, evidence and confidence. Avoid adding message-level counts to recipient-level counts even when both columns are called volume. Record whether a sender export reflects final outcomes or an intermediate snapshot, and preserve the export time. Ask a second analyst to reconstruct one small interval manually before relying on a recurring query. Where exact linkage is unavailable, state that limitation in the worksheet rather than implying that an arithmetic match proves identical underlying messages.

Continue the investigation

Use the aggregate-report walkthrough to interpret the underlying fields and the alignment diagnosis guide when a raw authentication pass does not satisfy DMARC.

Executed synthetic evidence

This locally rerun offline fixture makes the comparison population explicit. The input has two approved services and supplied recipient-coverage classifications; these classifications are synthetic facts, not conclusions drawn from source IP. Python sums the following retained rows and checks the bridge with assertions.

  • Service: Billing; Sender recipient deliveries: 600; Covered receiver cohort: 500; Outside coverage: 100; Reported legitimate: 500; Unclassified observations: 10; Report total: 510; Residual: 0
  • Service: Alerts; Sender recipient deliveries: 400; Covered receiver cohort: 300; Outside coverage: 100; Reported legitimate: 300; Unclassified observations: 10; Report total: 310; Residual: 0
  • Service: Total; Sender recipient deliveries: 1,000; Covered receiver cohort: 800; Outside coverage: 200; Reported legitimate: 800; Unclassified observations: 20; Report total: 820; Residual: 0

Each residual is report total minus covered deliveries minus unclassified observations. The executed total is 820 - 800 - 20 = 0. The larger bridge is 1,000 - 200 + 20 = 820. The 20 are labelled unclassified, not confirmed spoofing. This clean synthetic match does not prove exact linkage in real aggregate data. A production worksheet needs actual recipient-unit logs, receiver-coverage evidence and verified service mappings. Retain any unmatched residual instead of borrowing the fixture's zero.

Keep the result within the tested scope

The supplied local demonstration verifies only its small synthetic parser, supplied stage inputs and calculations. No real DNS authorization, SMTP delivery, collector migration, provider participation or production database behavior was tested. Original inputs remain archived, and any live comparison needs its own protected evidence and accountable approval.

[ Takeaway ]

Document message, recipient, attempt and observation units. Use evidence-backed adjustments and preserve unexplained residuals. An arithmetic match does not prove message-level linkage.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Document sender counter semantics.

Preserve the underlying observations and use the workflow above to separate the actual failure stage from assumptions.

Next steps

  1. Document sender counter semantics.
  2. Align domains and intervals.
  3. Keep an evidence-backed adjustment bridge.

CISO / SecOps

Avoid loss or abuse claims from raw differences.

Keep coverage, provenance and remaining uncertainty visible before relying on these findings for a security decision.

Next steps

  1. Avoid loss or abuse claims from raw differences.
  2. Review unknown source attribution.
  3. Require reproducible comparisons.

Founder / Non-technical

Ask which population a total represents.

Connect this reporting task to an owned business decision and require evidence proportionate to its impact.

Next steps

  1. Ask which population a total represents.
  2. Separate delivery support from reporting analysis.
  3. Accept explicitly bounded residuals.

[ FAQs ]

Frequently asked questions

Should report counts equal submitted messages?

Not automatically. Submission, attempts, recipients and receiver observations are different units.

RFC 9990 §3.1.1.8

Does one XML row mean one message?

No. Use the row’s count field.

RFC 9990 §3.1.1.8

Can reports include unauthorized traffic?

Yes. They can include observed use of the domain beyond your approved senders.

RFC 9990 §3.1

Why separate policy domain and From domain?

A report can group different author domains under one policy domain.

RFC 9990 §3.1.2

Can aggregate rows trace a single customer email?

They generally lack the per-message linkage needed for that conclusion.

RFC 9990 §3.1.1.7

How should retries be handled?

Document what sender logs count and avoid equating attempts with unique recipient deliveries.

Must the residual be zero?

No. Preserve unexplained differences rather than inventing an adjustment.

What makes a reconciliation reproducible?

Saved scope definitions, time windows, deduplication decisions, input versions and arithmetic.

[ Sources ]

Sources

  1. RFC 9990

    Sections §3.1 · §3.1.1.7 · §3.1.1.8 · §3.1.2 · §3.5.4

[ Glossary ]

Glossary

Row count
The number of messages represented by a report record, not the number of XML rows.

RFC 9990 §3.1.1.8

Reconciliation residual
The remaining difference after explicitly defined, evidence-backed adjustments in common units.

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