Skip to main content

Free TLS-RPT Validator

Validate TLS-RPT syntax offline before deployment - RFC 8460 compliant

Free TLS-RPT Validator to check your SMTP TLS Reporting record syntax offline. Validate version, rua endpoints (mailto and https) and format per RFC 8460, before publishing to DNS. To audit a published record, use the [TLS-RPT Checker](/en/tools/email-authentication/tls-rpt-record-check) instead.

0 / 1024

Start the validation

Paste your TLS-RPT TXT record above. The Validator works offline and checks the record's syntax without querying DNS.

Automatic TLS-RPT Monitoring

Receive TLS-RPT reports automatically and monitor your email TLS health in real time.

Set up TLS-RPT monitoring

Why use an offline validator

A TLS-RPT syntax validator analyzes your record without publishing or querying DNS. This offline approach covers four key use cases that a live audit cannot handle.

Typical use cases:

  • Before deployment → validate a draft before DNS publication, to avoid a record being silently ignored by MTAs.
  • Draft validation → verify the syntax of a record copied from a generator, internal wiki or shared template.
  • Offline debugging → reproduce and fix an error without depending on public DNS, for instance on a pre-production record that is not published yet.
  • Configuration review → inspect a record received from a partner or exported from a third-party tool before applying it.

The validator enforces the RFC 8460 specification on syntax: TLSRPTv1 version, rua tag, mailto: and https: URI formats, and absence of unknown tags. Validation runs on our servers: the record you paste is sent to CaptainDNS to be analyzed. Nothing gets published, though, no DNS query is issued and no rua URI is contacted.


How to use this validator in 2 steps

Step 1: paste the record

Copy your TLS-RPT record value into the dedicated field:

v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

You can paste a draft, an existing record or the output of a generator. The validator reads no external source: only the text you supply is analyzed.

Step 2: review the verdict

Results are classified by severity:

  • Error → blocking issue, the record will be ignored or rejected by sending servers
  • Warning → functional but improvement recommended
  • Valid → syntax is RFC 8460 compliant

Fix every alert before publishing the record to public DNS.


Validator vs record check: when to use each tool

The two tools are complementary. They do not replace each other: they operate at different points in the lifecycle of a TLS-RPT record.

DimensionValidator (this tool)Record check
When to useBefore deploymentAfter deployment
DNS lookupNoneLive _smtp._tls resolution
Record sourceManual (pasted)Public DNS
External URI identificationNoneAutomatic
Published value detectionStaticReal state
Data sent to serverThe pasted recordDomain being analyzed

Recommended workflow:

  1. Design the record → validator to check syntax
  2. Publish the TXT record in DNS → wait for propagation
  3. Record check to confirm the live state

The validator catches input mistakes before publication. The record check detects drift and confirms that the record served by DNS matches the intended design.


One field, one mode

The form exposes a single input: the TLS-RPT record itself. No domain, no second mode. What gets checked:

  • exact TLSRPTv1 version, in first position
  • presence of the rua= tag
  • endpoint format (mailto: or https:)
  • well-formed email addresses in mailto: endpoints
  • unknown tags raised as warnings

That bareness comes straight from RFC 8460. DMARC demands a _report._dmarc authorization record on the recipient side as soon as reports leave for another domain; §7 of RFC 8460 deliberately dropped that mechanism for TLS-RPT. So there is nothing to weigh your rua URIs against: an address at a third-party report collector is valid as-is.

To find out which of your already published URIs leave your domain, the record check spots them from the domain it queries.


Syntax rules enforced

The validator applies RFC 8460 §3 rules on the TXT record at _smtp._tls.domain:

FieldRule
vmust be exactly TLSRPTv1 (case sensitive), in first position
ruarequired, contains one or more endpoints separated by ,
Global formatkey=value pairs separated by ;
Unknown tagstolerated but raised as warnings
Whitespacetolerated around ; and after =

Valid example:

v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

Reporting endpoint formats

Each endpoint in rua= must use a recognized scheme:

SchemeFormatUsage
mailto:mailto:address@domainreports received as email attachments
https:https://host/pathreports posted to a webhook endpoint

Multiple endpoints are allowed, separated by ,:

v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com,https://api.captaindns.com/tlsrpt

Each endpoint receives the same aggregated reports (one per 24 hours per sender).


rua endpoints: mailto vs https

The choice between mailto: and https: impacts deployment complexity and how reports are processed.

mailto endpoints

rua=mailto:tls-reports@captaindns.com

Properties:

  • reports received as email attachments (gzip-compressed JSON)
  • simple setup, no development required
  • often a dedicated address (tlsrpt@, reports@)
  • no recipient-side authorization required, even for an address on a different domain than the record

https endpoints

rua=https://tlsrpt.captaindns.com/v1/report

Properties:

  • reports sent via HTTP POST to a webhook
  • enables real-time automated processing
  • requires a valid HTTPS endpoint (recognized certificate)
  • no recipient-side authorization required, even for a host on a different domain than the record

External URIs (rua to another domain)

When a URI points to a different domain than the analyzed one (for instance a third-party report collector), TLS-RPT requires no authorization on the recipient side:

  • Unlike DMARC and its _report._dmarc record, RFC 8460 defines no verification mechanism: its §7 deliberately dropped any cross-domain authorization
  • An external URI is therefore valid as-is; sending servers deliver the reports with no prior check on the recipient side

The validator never rejects them. It does not single them out either: with no reference domain, it has nothing to compare them against.

Invalid examples

- rua=tls-reports@captaindns.com
+ rua=mailto:tls-reports@captaindns.com

- rua=mailto:tlsrpt
+ rua=mailto:tls-reports@captaindns.com

- rua=http://tlsrpt.captaindns.com/report
+ rua=https://tlsrpt.captaindns.com/report

Common syntax errors and fixes

Missing or wrong version

Cause: missing v= tag, or value other than TLSRPTv1.

Fix:

- rua=mailto:tls-reports@captaindns.com
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com
- v=TLSRPT1; rua=mailto:tls-reports@captaindns.com
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

Missing rua tag

Cause: record contains v=TLSRPTv1 without any rua endpoint.

Fix: add at least one endpoint:

- v=TLSRPTv1
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

Invalid mailto endpoint

Cause: missing mailto: scheme, malformed or truncated email address.

Fix:

- v=TLSRPTv1; rua=tls-reports@captaindns.com
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com
- v=TLSRPTv1; rua=mailto:tlsrpt@
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

Invalid https endpoint

Cause: http: scheme instead of https:, or incomplete URL.

Fix: only HTTPS endpoints are accepted by RFC 8460.

- v=TLSRPTv1; rua=http://tlsrpt.captaindns.com/report
+ v=TLSRPTv1; rua=https://tlsrpt.captaindns.com/report

External URI: this is not an error

Good to know: a rua URI pointing to another domain (third-party collector) is perfectly valid. Unlike DMARC, TLS-RPT mandates no recipient-side authorization record: the validator never rejects a record because of an external rua.

You can therefore point to a third-party provider with confidence:

v=TLSRPTv1; rua=mailto:tls-reports@uriports.com

Unknown tag

Cause: presence of a tag not defined by RFC 8460 (for instance ruf=, which does not exist for TLS-RPT unlike DMARC).

Fix: remove the unknown tag:

- v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com; ruf=mailto:forensic@captaindns.com
+ v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com

TLS-RPT and MTA-STS: combined deployment

TLS-RPT shines with MTA-STS. The two protocols form an inseparable duo for SMTP transport security.

ProtocolRole
MTA-STSenforces TLS encryption for inbound mail
TLS-RPTreports TLS connection failures and anomalies

Why deploy them together:

  • MTA-STS without TLS-RPT → you enforce TLS but do not know if servers fail silently
  • TLS-RPT without MTA-STS → you receive useful reports but no encryption enforcement
  • MTA-STS + TLS-RPT → you enforce AND measure, with full visibility

Recommended deployment:

  1. Validate your MTA-STS policy with the MTA-STS Syntax Checker
  2. Validate your TLS-RPT record with this validator
  3. Publish TLS-RPT first (so you collect reports as soon as the MTA-STS testing phase starts)
  4. Publish MTA-STS in mode: testing
  5. Monitor TLS-RPT reports for 2 to 4 weeks
  6. Switch MTA-STS to mode: enforce once issues are resolved

Complementary tools and resources

ToolWhen to use
TLS-RPT record checklive audit of the record published in DNS
TLS-RPT Monitoringautomatically receive and analyze your TLS-RPT reports
TLS-RPT generatorcreate an RFC 8460 compliant TLS-RPT record
MTA-STS syntax checkervalidate the related MTA-STS policy offline
DMARC record checkround out email authentication security
DNS propagationconfirm propagation after publication

Specifications