Globaldeprecated
The line set the address on which the node listens for incoming mail connections. The port was set separately — smtp-port — and the setting was always split across two lines. The manual gave this name a one-sentence section: “deprecated, use smtp-listener”.
The replacement joins address and port in one line — smtp-listener CIDR:PORT. The difference is not cosmetic: the “address plus port” pair could describe only one receiving point, while the replacement line can appear in the file any number of times, and 0.0.0.0 may be repeated to open several ports at once. On top of that the replacement has an optional source= parameter, which assigns the listener a submission block with ready-made settings.
🔴 The presence of the replacement silences this line. The manual’s wording is direct: if the configuration has at least one smtp-listener line, the engine ignores smtp-ip and smtp-port. It does not complain, does not warn — it simply does not look at them.
And if there is not a single replacement line, the engine implicitly starts a listener on 0.0.0.0:25. So you cannot close the port by removing all receiving lines: it is closed only by changing the port, not by deletion.
So on any node assembled by the Hub the old pair would be silent by definition — replacement lines are always there.
⚠️ A separate subtlety for those searching the Hub’s code: the names smtp-ip and smtp-port do occur in the sources — but they are settings of another engine, MailerQ, where they are alive and mean their own thing. They have nothing to do with PowerMTA.
What to set. Nothing: the pair should be replaced with a single line.
| Value | When |
|---|---|
| do not write | always: the receiving point is set by the replacement |
| address | only in an old configuration that has not been migrated yet |
Migration. The address from this line and the port from the neighboring one are joined with a colon: smtp-ip 0.0.0.0 plus smtp-port 25 give smtp-listener 0/0:25. Both old lines are removed after that — otherwise the file keeps settings the engine does not look at.
# this is how it was written before — two lines for one receiving point smtp-ip 0.0.0.0smtp-port 25 # this is how it is written now — and there can be several receiving points smtp-listener 0/0:2525 smtp-listener 0/0:25
what people get wrong and how it ends3 mistakes▶
§ 3.3.1.27
§ 3.3.1.27
§ 3.3.1.25
3 relations
grep -rn 'smtp-ip\|smtp-port\|smtp-listener' /etc/pmta/ ss -lntp | grep pmta
3 articles
◇Accept, route, deliverA message’s path inside the node: accept, decide where, deliver — and all the settings live between these three steps.◇Four value types the whole config is written inBoolean, domain pattern, regular expression and time interval — defined once in § 3.2 and then used by all directives.◇Reloading settings versus restarting the serviceThe configuration is read at startup, and after that edits are picked up by the reload command — except for the directives the manual marks as requiring a restart.