Knowledge base

tls-ciphers

<smtp-listener>

This listener's cipher set for versions up to TLS 1.2
in the configuration this is a linetls-ciphers HIGH:!ADH:@STRENGTHinside the block <smtp-listener>
The same name 1:<smtp-listener><transmissions-api-listener>— some of them are other settings, some are the same one
Ciphers on a separate input

The same list as the node’s, but for connections of this listener. The notation is that of the OpenSSL ciphers command, default HIGH:!ADH:@STRENGTH.

It applies up to and including TLS 1.2; version 1.3 has its own list — tls-v1.3-ciphersuites.

The order in the list matters only together with the neighboring line tls-cipher-server-preference: by default the client chooses the cipher.

The main trap is narrowing the list and closing the input. A client that finds no common cipher will not connect at all. On an input the price of a mistake is higher than on sending: there a message at worst goes out in plain text.
What the Hub does. It does not write it — it keeps the default. It already excludes the weak ones, and submission comes from our own platforms.
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):

What Note
do not set the default HIGH:!ADH:@STRENGTH applies
your own narrowing check by negotiation before applying
version 1.3 not set by this line
The default and the limitation to versions up to 1.2 come from the manual (§ 3.3.17.12). The remark about the price of a mistake is ours.
Example configuration
# setting for one input, the others take the node's value
<smtp-listener 0.0.0.0:2525>
    tls-ciphers HIGH:!ADH:@STRENGTH</smtp-listener>
The default, written out explicitly. Narrowing makes sense only on an external requirement and after checking that this input’s client still connects.
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.12

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-ciphers <string>
Values
a cipher list string in the notation of the OpenSSL ciphers command
Default
HIGH:!ADH:@STRENGTH § 3.3.17.12
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-ciphers: 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 -cipher 'HIGH:!ADH:@STRENGTH'
The line Cipher is … means a common cipher was found. A negotiation error means the list is too narrow for this input’s clients.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Node security · Connect a sending platform