Globalrestart requiredset by the Hub
The monitor port answers both a plain request and a TLS handshake — we checked this on a fleet node. The client chooses for itself, and by default it will choose whatever is simpler. This line takes the choice away from it: with true plain connections are redirected to https.
The default changed between versions. In PowerMTA 4.5 it was false, since version 5.0 it is true. The manual warns: to turn off the redirect on 5.0 and above, false has to be written explicitly.
Without it the monitor’s whole set of TLS settings means nothing. Version bounds, cipher lists, preference order — all of that is about connections that got as far as encryption. A client for which it is simpler not to encrypt will not notice any of these settings.
And the management key goes through the monitor — in the X-API-Key header, inside the conversation. An unencrypted conversation means the key on the wire.
🔴 The price of this decision is the management key in plain text on every poll (see http-api-key). Checked on a fleet node: the port already answers over TLS 1.3, and nothing needs to change on the node. The fix is on our side: verify => false in the client or pinning the webmon.pem taken at installation — and true in the template.
There is one choice, and it is about whether the client trusts the certificate:
| Value | When |
|---|---|
| true (default since 5.0) | always, if the client can trust the monitor’s certificate |
| false | the client cannot — a temporary measure, not a solution |
The monitor has its own certificate, configured not by a line but by the /var/lib/pmta/webmon.pem file.
# monitor encryption becomes mandatory only with this line http-mgmt-port 1000 http-tls-min-version tlsv1.2 http-redirect-to-https true
what people get wrong and how it ends3 mistakes▶
§ 3.3.1.58.2
our experience
our experience
2 relations
http-accessGlobalOne decides whom to let in, the other whether they come encrypted. inference
http-tls-min-versionGlobalWhile plain connections are also accepted, the whole set of TLS settings decides nothing: the client simply will not encrypt. inferencehttp-tls-max-versionGlobalWhile plain connections are also accepted, the whole set of TLS settings decides nothing. inference
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' http://NODE:1000/status
3 articles
◇Who is allowed to submit mail and for whom to accept itOut of the box, the node accepts submission only from the machine itself; two different questions — “who can send through us” and “for whose addresses we accept mail” — are answered by different directives.◇The group that grants management rightsMembership in the pmta group gives an unprivileged user the right to call the node’s commands and use submission.◇How the node selects a source and combines its settingsA connection falls under all source blocks whose addresses cover it, and they act merged — the narrow one overrides the wide one; named blocks are attached only by direct reference.