Read a TLS report as a bounded observation
A TLS-RPT report describes what one reporting system observed while attempting transport connections under particular policies. It can guide an investigation into TLS negotiation, certificates or policy retrieval. It is not a message-level delivery ledger, a DMARC verdict or proof that every sender sees the same configuration. Begin with the reporter, time window and applied policy before interpreting its counts.
No original report or customer connection evidence accompanies this article. The worked numbers below are fictional, and the method is a proposed review process. A production incident needs the unchanged report, its receipt context and corroborating connection or hosting observations. Do not relabel an illustrative report as an observed outage.
Verify the reporting context
A domain requests reporting through a TXT record at _smtp._tls.<domain>, using TLSRPTv1 and one or more rua destinations. That request does not itself impose a transport-security policy. Reports can concern MTA-STS, DANE or the absence of a policy. Preserve the reporting request and the intended recipient organization when later collecting evidence, especially where a service processes reports for several domains. RFC 8460 sections 2–3
An SMTP-delivered report requires a valid reporting-domain DKIM signature that does not use the l= body-length tag. A generic DKIM pass with partial body coverage does not satisfy this reporting requirement. RFC 8460 directs recipients to ignore reports without the required signature and prohibits body-length limiting so that misleading content cannot be appended outside the signed coverage. Authenticate and retain the original message before trusting an extracted JSON attachment. Names and contact fields inside JSON are claims, not independent sender authentication. Treat attachments as untrusted input and process them with appropriate file-size and parser limits. RFC 8460 sections 3 and 7
Establish the window and the applied policy
Read organization-name, report-id and date-range together. The specification recommends a full UTC day and delayed delivery to reduce processing spikes. Receipt time therefore need not match the event time. Keep a deduplication record keyed to the authenticated reporter and report identity, with the original file hash, before aggregating repeated deliveries. The exact deduplication design is an operational recommendation, not a mandated schema field. RFC 8460 sections 4.1 and 4.4
The policies field is an array, even for a single applied policy. For each entry, inspect policy-type, policy-domain, policy-string and the applicable MX information. A report about sts must be interpreted against the reported MTA-STS policy, which may differ from the body currently hosted. Cached policy history can explain that difference without implying that the report is fabricated. RFC 8460 sections 4 and 4.4 RFC 8461 section 3.3
Work through fictional counts carefully
Imagine an authenticated report from fictional Sender Delta covering one UTC day for example.com. Its single sts entry describes an enforce policy. The summary contains 480 successful sessions and 20 failed sessions. Failure details list 12 certificate-expired sessions for mx1.example.com and 8 starttls-not-supported sessions for mx2.example.com. In this invented case, the two detail groups are stipulated to be disjoint.
The summary supports a 20 divided by 500, or 4 percent, failure share among this reporter's counted sessions for that entry and interval. It does not establish that 4 percent of messages were lost, because sessions are not messages and later attempts may have different outcomes. Nor does it estimate the receiving domain's global failure rate without information about other senders and reporting coverage. RFC 8460 section 4.2
Real detail counts require more care than this simple example. Failure types are nonexclusive, and one attempt can encounter multiple errors. Several policy entries may describe the same domain and MX. Summing every detail row, or every policy's counts, can double-count underlying attempts. Retain each policy entry and its summary rather than forcing every report into a single unqualified total. RFC 8460 section 4
Turn result types into investigation questions
For the fictional expiration group, request the receiving hostname, receiving address, event window and available certificate detail. The next question is whether the server presented an expired certificate at that time, not whether the operator now has an unexpired file on disk. For the STARTTLS group, examine the relevant SMTP endpoint and its advertisement or response. Neither observation establishes a policy-host HTTPS problem. RFC 8460 section 4.3.1
Policy failures have separate labels. sts-policy-fetch-error indicates retrieval failure; sts-policy-invalid concerns the overall policy; sts-webpki-invalid means the policy could not be authenticated through PKIX validation. Use the reporter's failure-reason-code and endpoint context where available. A broad label narrows the investigation but does not prove whether a firewall, routing change, certificate chain or application response caused it. RFC 8460 section 4.3.2.2
Preserve schema and source caveats
Do not copy the RFC's example JSON blindly into a strict validator. Its current errata register includes Held for Document Update entry 6241 concerning the example's scalar mx-host versus the array definition. Preserve the original report, record the actual representation and document any parser compatibility handling. A held correction is not the same status as a verified correction. RFC 8460 section 4.4 RFC 8460 errata
Verified erratum 8070 clarifies that the reporter may choose to attempt delivery to only one of several reporting endpoints. Therefore, a second destination's empty mailbox does not prove no report was produced. The register also contains reported, held and rejected entries; retain their statuses rather than treating every proposed change as current protocol text. RFC 8460 errata
Close the loop without claiming universal health
Assign the suspected endpoint to its owner, retain the original report and compare any authorized repair with later windows from the same reporters. Some transient network failures need not be reported, and sender participation varies. An improving trend is evidence within that coverage, not proof that all transport paths are healthy. Original authenticated reports, endpoint traces, hosting history and independent review remain open requirements for this draft. RFC 8460 sections 4.3.4 and 7