Skip to content

tls.version.tls13_only

TLS 1.3 Only

What we check

We attempt handshakes with TLS 1.0, 1.1, 1.2, and 1.3 against each MX IP. This finding is emitted when TLS 1.3 is the only version the server accepts — TLS 1.2 is refused and the deprecated versions are disabled.

What this finding means

The server runs the most modern transport configuration there is: only TLS 1.3, with its mandatory forward secrecy and AEAD-only cipher suites. From a security standpoint there is nothing to fix.

The trade-off is interoperability. SMTP transport encryption is opportunistic: a sending server that cannot negotiate TLS 1.3 — an older MTA, an appliance, a library pinned to TLS 1.2 — fails the STARTTLS handshake. Depending on the sender's policy it then retries, defers, or delivers in plaintext. Mail is not lost, but a share of inbound traffic may arrive unencrypted or late.

This is a warning about other people's software, not about yours. It is graded far below the deprecated-protocol findings so that a TLS-1.3-only server always outscores one that still accepts TLS 1.0 or 1.1.

Why it matters

How to fix

Nothing is required for security. If you want to maximise compatibility with older senders, offer TLS 1.2 in addition to 1.3 with modern cipher suites only — this is a compatibility choice, not a hardening step:

# /etc/postfix/main.cf
smtpd_tls_protocols = >=TLSv1.2
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_ciphers = high

Verify that TLS 1.2 now negotiates while 1.0 and 1.1 stay off:

openssl s_client -starttls smtp -connect mail.example.com:25 -tls1_2 </dev/null 2>/dev/null | grep Protocol
openssl s_client -starttls smtp -connect mail.example.com:25 -tls1_1 </dev/null 2>&1 | grep -E "Protocol|error"

How it's graded

A 5-point deduction in the TLS category, as a warning. Compare TLS 1.0 support at −20 and TLS 1.1 at −10: a TLS-1.3-only server ranks above any server that still accepts a deprecated version. See Grading Methodology.

Evidence example

TLS 1.0 handshake: refused
TLS 1.1 handshake: refused
TLS 1.2 handshake: refused (protocol version)
TLS 1.3 handshake: OK — TLS_AES_256_GCM_SHA384

References