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 cross-domain authorization per RFC 8460, before publishing to DNS. To audit a published record, use the [TLS-RPT Checker](/tools/email-authentication/tls-rpt-record-check) instead.

Active modeNo inputNo input. Paste a TLS-RPT TXT record to start.

0 / 1024

Without a domain, cross-domain authorization is not evaluated. If your rua URIs are in-domain, the domain field is optional.

Start the validation

Paste your TLS-RPT TXT record above. The Validator works offline without querying DNS, unless a domain is provided to activate cross-domain authorization checks on external rua URIs.

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 analyses your record without publishing or querying DNS. This offline approach covers three 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 touching public DNS, for instance in an isolated or pre-production environment.
  • 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: TLSRPTv1 version, rua tag, mailto: and https: endpoint formats, cross-domain authorization and absence of unknown tags. No DNS query is made. Your data stays in your browser.


How to use this validator in 3 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 makes no network call at this step.

Step 2: add a domain (optional)

Entering a domain enables cross-domain authorization checks. The validator switches to record_and_domain mode and inspects each external endpoint to verify that a TLSRPT authorization record exists on the recipient side.

Without a domain, only pure syntax is validated (record_only mode).

Step 3: 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 of a TLS-RPT record lifecycle.

DimensionValidator (this tool)Record check
When to useBefore deploymentAfter deployment
DNS lookupNoneLive _smtp._tls resolution
Record sourceManual (pasted)Public DNS
Cross-domain checkOptional (via domain)Systematic
Published value detectionStaticReal state
Data sent to serverNoneDomain being analysed

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.


Validation modes

The validator supports two modes depending on which fields you fill.

Mode record_only

You paste only the TLS-RPT record. Pure syntax validation:

  • 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

No network call. Ideal for validating a draft before publication.

Mode record_and_domain

You paste the record and a domain. In addition to syntax validation, the validator performs a cross-domain authorization check for external endpoints:

  • detects each endpoint whose domain differs from the analysed domain
  • looks up the TLSRPT authorization record on the recipient side
  • flags external endpoints that lack authorization

This mode helps detect configurations where you point to a third-party provider (managed report analysis) without them having published the recipient-side authorization.


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 recognised 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 cross-domain authorization required if the email is on the same domain as 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 (recognised certificate)
  • no cross-domain authorization required if the host is on the same domain as the record

Cross-domain authorization

When an endpoint points to a different domain than the analysed one (for instance a third-party report collector), RFC 8460 §3.3 requires recipient-side authorization:

  • the recipient publishes a TLSRPT record at [source-domain]._report._tls.[recipient-domain]
  • without this authorization, sending servers will not deliver the reports

The validator flags external endpoints missing this authorization, provided you have filled the domain field.

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

Cross-domain not authorised

Cause: an external endpoint (different domain than the one analysed) points to a recipient that has not published a TLSRPT authorization record.

Fix: ask the third-party provider to publish the authorization record, or use an endpoint on your own domain:

- rua=mailto:tls-reports@uriports.com
+ rua=mailto:tls-reports@captaindns.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 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