HackBlue

Tools · Email security · 08 / 18

SMTP TLS Reporting: learning when senders cannot connect securely

Publish a TLS-RPT record, read the JSON reports senders return, and use them to catch certificate and MTA-STS problems before enforcement blocks mail.

7 min read · practice only with authorization

What TLS-RPT does

TLS Reporting lets a receiving domain ask sending servers for daily summaries of TLS connection outcomes to its MX hosts, including successful sessions and failures such as expired certificates, name mismatches, STARTTLS not offered, or MTA-STS policy fetch errors. It is the feedback loop that makes MTA-STS and DANE safe to enforce.

Snippet
_smtp._tls.example.org.  TXT  "v=TLSRPTv1; rua=mailto:tlsrpt@example.org"

Reading a report

Reports are JSON, often gzip-compressed, with one entry per policy containing a summary of successful and failed session counts and failure details grouped by result type and sending or receiving host.

Snippet
jq '.policies[] | {policy: .policy["policy-type"], ok: .summary["total-successful-session-count"], fail: .summary["total-failure-session-count"], details: [."failure-details"[]? | {(."result-type"): ."failed-session-count"}]}' report.json

Lab: interpret a failure

Publish the record for a domain you manage, or use a sample report from the RFC 8460 examples. Run the jq query above and identify each failure type. For a certificate-expired result, check the MX certificate with openssl and note its expiry; for a policy fetch error, curl the MTA-STS policy URL and confirm its certificate is valid.

  • certificate-expired: renew the MX certificate
  • certificate-host-mismatch: fix the name on the certificate
  • starttls-not-supported: enable TLS on the MX
  • sts-policy-fetch-error: fix the policy web host

Operating it

Route reports to a mailbox your mail team monitors or into a parser that alerts on any failure count above zero. Watch closely after certificate renewals and MX changes, which are the most common causes of failures.

Diagram

Common TLS-RPT failure types

Each maps to a specific fix on your side.

  • certificate-expired

    Renew the MX certificate and automate renewal.

  • certificate-host-mismatch

    Certificate name does not match the MX host.

  • starttls-not-supported

    The MX did not offer STARTTLS.

  • sts-policy-fetch-error

    The MTA-STS policy URL failed or had a bad certificate.

Check yourself

1. Where is the TLS-RPT record published?

2. What format are TLS-RPT reports?

3. A report shows certificate-expired. What is the fix?