Knowledge base

tls-max-version

<smtp-listener>

The upper bound of the TLS version on this input
in the configuration this is a linetls-max-version none, which behaves as tlsv1.3inside the block <smtp-listener>
The same name 1:<smtp-listener><transmissions-api-listener>— some of them are other settings, some are the same one
Version ceiling on a separate input

The same bound as the node’s, but for connections of this listener. There is no default, that is, the ceiling is unlimited.

The reason is the same as at node level — a client that announces a modern version and fails on it. The difference is that here the limitation affects only one input.

This is a workaround for someone else’s breakage, not a security setting.

The main trap is leaving the limitation forever. The client gets updated, the ceiling stays. The line is set for a specific reason and provided with a comment with a date.
What the Hub does. It does not write it: the ceiling is unlimited both on the node and on the listener. A limitation may be needed pointwise and temporarily.
Recommended values

The listener has its own default, the same as the node’s — the line is set here when this input should differ or when the value has been changed on the node (the manual does not promise inheritance):

Value When
do not set (default) always
tlsv1.2 a client of this input breaks on 1.3
The values and the absence of a default come from the manual (§ 3.3.17.11). The advice to write down the reason is ours.
Example configuration
# setting for one input, the others take the node's value
<smtp-listener 0.0.0.0:2525>
    tls-max-version tlsv1.2   # the client fails on 1.3, checked 28.08</smtp-listener>
The comment matters more than the line: without it nobody will understand whether the limitation can be removed after the client is updated.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
▲

Common mistakes and problems

what people get wrong and how it ends2 mistakes▶

Configuring the listener instead of the node when there is only one entry point

§ 3.3.17.11

What it costsThere is one listener, and configuring it is equivalent to configuring the node — but it is harder to find: it sits inside a block, not at the root of the file. The next person will look in the common settings.
How to spot itThe setting is not at the root of the file, yet the node’s behavior does not match it.
How to do it rightWith one entry point, set it at the node level. A listener setting is needed where there are several entry points and they differ.

Changing one listener and expecting all of them to change

our experience

What it costsThe line applies only to its own address and port. A neighboring entry point keeps working with the node value, and the difference shows up in the behavior of different clients.
How to spot itSome submitters see the new behavior, others the old one.
How to do it rightChange it at the node level — then the change goes to all entry points that do not set their own.
Compatibility
PowerMTA 6.0
described in the manual of this version · platform: any
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
Reference data
Syntax
tls-max-version <enumeration>
Values
tlsv1 | tlsv1.1 | tlsv1.2 | tlsv1.3
Default
none, which behaves as tlsv1.3 § 3.3.17.11
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<smtp-listener>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
The directive lives in <smtp-listener> and applies to connections on its address and port. The manual does not promise inheritance from smtp-server-tls-max-version: the line has its own default, the same as the node’s, and “inherited from the node” is said only about tls-certificate. If you changed the value on the node, repeat it explicitly for the listener.
How to check on the node
Check the port of the listener in question — a neighboring one may have a different value:
openssl s_client -starttls smtp -connect localhost:2525 -tls1_3
A refusal means the ceiling is lowered on this input. If the reason is not written down, most likely it is long gone.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Node security · Connect a sending platform