Skip to content
Infrastructure

TLS-RPT explained: reporting for email transport security

TLS-RPT gets large senders to mail you daily JSON reports about TLS failures on delivery to your domain. The record, the report format, and how to act on it.

TLS-RPT (SMTP TLS Reporting, RFC 8460) is the feedback channel for email transport security. A domain publishes one DNS record naming a reporting address, and participating senders, including Gmail and Microsoft, respond with a daily JSON summary of every TLS negotiation problem they encountered delivering to that domain. Without it, transport encryption fails silently: the sender falls back or defers, and the receiving domain learns nothing. With it, an expired MX certificate or an active downgrade attack shows up in tomorrow's report.

Enabling reports: one record

The complete deploymentRFC 1035
TXT / SPFMX / PTRA / AAAACNAME / NS / other
_smtp._tls.example.com. INTXT"v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
; rua also accepts an HTTPS endpoint:
_smtp._tls.example.com. INTXT"v=TLSRPTv1; rua=https://reports.example.com/tlsrpt"

Reports begin arriving within a day or two, one per participating sender per day, as email with a gzipped JSON attachment. Volume is light, a handful of messages daily, which makes TLS-RPT far easier to consume than DMARC aggregates. One practical caution: if your domain's inbound TLS breaks badly enough, reports about the problem may not be deliverable to the same domain, so receiving them at an address on separate infrastructure keeps the alarm independent of the thing on fire.

Reading a report

Abbreviated report from Google
1{
2  "organization-name": "Google Inc.",
3  "date-range": {
4    "start-datetime": "2026-07-13T00:00:00Z",
5    "end-datetime": "2026-07-13T23:59:59Z"
6  },
7  "policies": [{
8    "policy": {
9      "policy-type": "sts",
10      "policy-domain": "example.com",
11      "mx-host": ["mx1.example.com", "mx2.example.com"]
12    },
13    "summary": {
14      "total-successful-session-count": 14892,
15      "total-failure-session-count": 37
16    },
17    "failure-details": [{
18      "result-type": "certificate-expired",
19      "receiving-mx-hostname": "mx2.example.com",
20      "failed-session-count": 37
21    }]
22  }]
23}

That example is the everyday catch: a backup MX with an expired certificate, invisible under opportunistic TLS because senders fell back or retried the primary, and fatal on the day an MTA-STS policy moves to enforce. Thirty-seven failed sessions in a report is a calendar reminder someone missed, caught for free.

The failure vocabulary, in three families

Negotiation failures (starttls-not-supported, validation failures during the handshake) point at broken MX hosts, interfering middleboxes, or an attacker; a sudden burst of starttls-not-supported from one network is what a downgrade attack looks like in data. Certificate failures (certificate-expired, certificate-host-mismatch, certificate-not-trusted) are operational debt on the MX fleet and account for most real entries. Policy failures (sts-policy-fetch-error, sts-policy-invalid, sts-webpki-invalid) mean the MTA-STS scaffolding itself broke: the policy host is down, the file malformed, or its certificate lapsed. Each family has a natural owner, which is what makes the reports operational: certificates page the MX operators, policy errors page whoever owns the mta-sts host, negotiation anomalies from a single origin are a security question.

Operating on the data

A lightweight TLS-RPT practice

  1. 1

    Automate ingestion

    parsedmarc handles TLS-RPT alongside DMARC aggregates, so most teams add the mailbox to an existing pipeline rather than building anything new.

  2. 2

    Alert on new failure types, not counts

    A handful of transient failures is background noise. A result type appearing for the first time, or failures concentrating on one MX host, is the actionable pattern.

  3. 3

    Gate MTA-STS promotion on quiet reports

    Hold testing mode until reports run near-zero failures for two consecutive weeks, then enforce.

  4. 4

    Check reports after every change window

    MX migrations, certificate renewals, and provider switches each get a deliberate look at the next few reports, the cheapest post-change verification available.

Limits worth knowing

Only senders implementing RFC 8460 report, which in practice means the large providers plus security-conscious operators; small MTAs still fail silently. The reports describe sessions, not messages, and say nothing about mail never attempted. None of that reduces the value: Gmail and Microsoft attempt delivery to almost every domain daily, making their reports a free, continuous, external probe of your TLS posture from the vantage points that matter most, and the natural companion to the MTA-STS policy they keep honest.

Frequently asked questions

Do I need MTA-STS before TLS-RPT?
No, and the recommended order is the reverse: publish TLS-RPT first, learn what senders experience, then deploy MTA-STS in testing mode. Reports flow with or without a policy; policy-related result types simply appear once one exists.
Does TLS-RPT cover DANE too?
Yes. The policy-type field distinguishes sts from tlsa, so domains running DANE, MTA-STS, or both get failures attributed to the right mechanism in the same report stream.
Can the reports contain message content?
No. Reports carry session statistics and failure metadata only: hostnames, result types, counts, and policy strings. There is no per-message or per-recipient data in them.
What does an empty or missing report stream mean?
Either low inbound volume from reporting senders, a typo in the rua address, or a broken report path. Alert on absence after a baseline establishes: a stream that goes quiet is itself a signal, since silent pipelines rot invisibly.

Key takeaways

  • TLS-RPT is one TXT record; Gmail, Microsoft, and other large senders respond with daily gzipped JSON failure summaries
  • It is the only visibility into transport encryption failures, which are silent by design otherwise
  • Failure types cluster into negotiation, certificate, and policy families, each with a natural owner
  • Two quiet weeks of reports is the evidence that promotes MTA-STS from testing to enforce
  • Receive reports on infrastructure separate from the monitored domain, and alert when the stream goes silent