Knowledge base

tls-cipher-server-preference

<smtp-listener>

Whose preference order rules on this input
in the configuration this is a linetls-cipher-server-preference falseinside the block <smtp-listener>
The same name 1:<smtp-listener><transmissions-api-listener>— some of them are other settings, some are the same one
Who chooses the cipher on this input

The same setting as the node’s, but for connections of this listener. By default the client chooses from the allowed ciphers; the line makes our order the rule.

It makes sense together with sorting the list by strength: then the strongest cipher available to the client is taken.

The main trap is enabling it without sorting the list. The line makes our order rule, not our assessment of strength: an unsorted list locks in a random choice.
What the Hub does. It does not write it — it keeps the default. The line would make sense together with our own cipher list, and the Hub does not write that either.
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 is set What you get
default the client chooses from what is allowed
true with a list sorted by strength the strongest one available to the client is taken
true without sorting an ill-considered order gets locked in
The false default comes from the manual (§ 3.3.17.14). The warning about an unsorted list 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
    tls-cipher-server-preference true</smtp-listener>
The lines work only together: the second makes the first one’s order rule, and it is sorted by strength.
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.14

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-cipher-server-preference <boolean>
Values
yes | no | true | false
Default
false § 3.3.17.14
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-cipher-server-preference: 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 'AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384'
With the line on, a stronger cipher is negotiated even if the client put it second.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Node security · Connect a sending platform