TLS-RPT. Know When Mail Encryption Fails
One TXT record gets you daily reports from Google and Microsoft whenever TLS to your mail servers breaks. Almost nobody publishes it.
_smtp._tls) and Google and Microsoft start emailing you daily JSON reports about TLS failures when delivering to your domain. It's how you find out an MX certificate expired or someone is stripping STARTTLS, before users notice missing mail. Publish it before, not after, enforcing MTA-STS.What is TLS-RPT?
Encrypted mail delivery fails silently. When a sending server can't negotiate TLS with your MX host, expired certificate, hostname mismatch, STARTTLS stripped by a middlebox, it either falls back to plaintext or, if you enforce MTA-STS, queues and bounces. Either way, you never hear about it. The sender knows; you don't.
TLS-RPT (RFC 8460) fixes the feedback gap. You publish one TXT record asking senders to report TLS outcomes for mail addressed to your domain. Participating senders, Google and Microsoft being the ones that matter, aggregate a day's worth of delivery attempts and email you a compressed JSON report: how many sessions succeeded, how many failed, and exactly why.
Why it matters
- It's the safety net for MTA-STS. Enforcing a TLS policy without reports is flying blind: if your policy is wrong, mail silently stalls and you learn about it from angry customers. With MTA-STS in testing mode plus TLS-RPT, you see every would-be failure while mail still flows.
- It catches certificate problems on your MX hosts. Web certs get noticed when the browser screams. Mail server certs expire quietly. A wave of
certificate-expiredresults in your morning report is often the first signal. - It surfaces active attacks.
starttls-not-supportedreports for a server that definitely supports STARTTLS suggest someone between the sender and you is stripping encryption.
How to check it
dig +short txt _smtp._tls.example.comIf nothing comes back, you're not receiving reports. If a record exists, confirm the rua mailbox actually exists and isn't filtering the reports to spam.
Setting it up, step by step
- Create a mailbox or alias for reports, e.g.
tls-reports@example.com. A dedicated address keeps the JSON out of your inbox and makes filtering trivial. - Publish the TXT record at the
_smtp._tlssubdomain:
You can also specify an HTTPS endpoint (_smtp._tls.example.com. TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com"rua=https://...) if you run a report collector, or list multiple destinations separated by commas. - Wait a day or two. Reports arrive roughly every 24 hours, but only from senders that actually delivered (or tried to deliver) mail to you that day.
- Read one report end to end, once. Gunzip the attachment; the JSON lists each policy evaluated, success counts, and failure details with result types and IPs. After that, let tooling watch for changes.
rua at a mailbox on a different domain or at a collection service.What's actually in a report
The result types you'll see, roughly in order of how much you should care:
certificate-expired/certificate-host-mismatch, your MX cert needs fixing. Now.starttls-not-supported, your server stopped offering STARTTLS, or something on-path is stripping it.validation-failure, the sender couldn't validate your cert chain (often a missing intermediate).sts-policy-fetch-error/sts-policy-invalid, your MTA-STS policy file is unreachable or malformed.
Common mistakes
- Publishing the record at the wrong name. It's
_smtp._tls.example.com, both labels, with underscores._tlsalone or_smtp_tlswon't be found. - A
ruamailbox that doesn't exist. The record validates fine; the reports bounce. Send yourself a test mail to the address. - Spam-filtering the reports. Gzipped JSON attachments from an unfamiliar sender trip filters. Add a rule for the reporting addresses.
- Setting it up and never looking. The record is step one; the value is in noticing when the failure counts change.
- Enforcing MTA-STS without it. Not a TLS-RPT mistake exactly, but the most expensive way to skip it.
Monitoring TLS-RPT going forward
The record itself is simple, but it's also exactly the kind of thing that gets deleted in a DNS cleanup ("what's this underscore thing?") and nobody notices, because the absence of reports looks identical to the absence of problems.
DomainsDoc verifies your TLS-RPT record on every scan, checks the syntax, and alerts you if it disappears or changes, alongside MTA-STS, SPF, DKIM, DMARC, MX, and SSL checks that share the same root causes. Add your domain to start monitoring, or compare plans on the pricing page.
Frequently asked questions
What is TLS-RPT in plain English?
Do I need MTA-STS before publishing TLS-RPT?
Who actually sends TLS reports?
What does a failure in a TLS report actually mean?
Can I just point the rua at my normal inbox?
Continuous SPF, DKIM, DMARC, blacklist, SSL, and uptime checks. Alerts the moment something breaks.