RFC 8460 — TLS-RPT

SMTP TLS Reporting

Status
Proposed Standard
Published
2018

RFC 8460 defines TLS reporting, the feedback channel for MTA-STS and DANE. It is to transport security what aggregate reports are to DMARC: without it, you publish a policy and have no idea whether it is working.

How it works

Publish a TXT record at _smtp._tls.yourdomain.com naming where reports should go:

v=TLSRPTv1; rua=mailto:tlsrpt@yourdomain.com

Sending servers then deliver a daily JSON report summarising their TLS sessions with your MX hosts — how many succeeded, how many failed, and the failure type for each.

Why it is worth publishing before you enforce

The failure types are the useful part. They distinguish a certificate that does not match the MX hostname from an expired one, from a policy fetch that failed, from a sender that could not negotiate TLS at all.

That is precisely the information you need before switching MTA-STS from testing to enforce — and it is the only way to see failures that happen at someone else’s sending server rather than yours.

TLS-RPT is cheap: one DNS record, no policy file, and nothing breaks if you get it wrong.

What a report looks like

A daily JSON document per sending organisation, summarising sessions with your MX hosts:

{
  "organization-name": "Example Sender",
  "date-range": { "start-datetime": "...", "end-datetime": "..." },
  "policies": [{
    "summary": { "total-successful-session-count": 1041,
                 "total-failure-session-count": 3 },
    "failure-details": [{ "result-type": "certificate-host-mismatch",
                          "failed-session-count": 3 }]
  }]
}

The result-type is what makes it actionable — certificate-expired, certificate-host-mismatch, starttls-not-supported, validation-failure and others each point at a different fix.

Why publish it even without MTA-STS

TLS-RPT works on its own. You do not need a policy in force to receive reports; you only need the DNS record. That makes it the cheapest possible way to find out whether mail to your domain is actually arriving encrypted, and whether any sender is failing to negotiate TLS with you at all — before you commit to enforcing anything.

The reporting address

rua= in a TLS-RPT record accepts mailto: or https:. A mailbox is the usual choice, and the same caution applies as with DMARC aggregate reports: point it somewhere that can absorb daily mail from every organisation that sends to you, not a personal inbox.

Reports are gzipped JSON attachments, one per sender per day. For a domain with any volume that is a steady trickle, and reading them by hand stops scaling almost immediately — which is the same argument for collecting them the way DMARC Analyzer collects aggregate reports, on your own infrastructure.

Unlike MTA-STS there is no policy file, no max_age, and no failure mode where getting it wrong stops mail. The worst case is that reports go nowhere.

Read it: rfc-editor.org/rfc/rfc8460