Knowledge base

Who took the port

TCP port conflict
Two listeners do not fit on one port

A port can be listened on by only one process. If the machine already has a mail server — and almost every fresh one does — port twenty-five is taken.

It shows up as a startup failure, not a warning. The cause is written to the startup failure file, and without it it looks like “the node does not come up.”

The main trap is taking a startup failure for a configuration error. The configuration parses without errors, but the service does not start: another process holds the port, and only the startup error log names the cause.
What the Hub does. The Hub writes two listeners — for submission, 2525 by default, and for receiving bounce reports and complaints, 25. If the machine already has someone else’s mail server, port 25 will be taken, and the node will not come up. After applying the configuration the Hub checks that the ports are listening.
Recommended values

How to separate them:

Port Who usually takes it What to do
25 the system mail server remove it or, if both are needed, bind them to different addresses
the monitor port, 8080 by default another application change http-mgmt-port
the submission port another receiving server take a free one above 1024 and reconfigure the submitting side
The cause, where it is logged and the ways to separate ports come from the manual (§ 4.2.1). The table is ours.
Example configuration
# who listens on the mail ports and the monitor port
ss -tlnp | grep -E ':(25|2525|8080)\s'
The last column shows the process holding the port; on a node that should be the engine.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
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.
How to check on the node
If the node does not come up, check the ports and the startup log:
ss -tlnp | grep -E ':(25|2525)\s'
tail -20 /var/log/pmta/pmta-startuperr.log
Someone else’s process on port 25 during a startup failure is exactly the cause.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Receiving inbound mail · Prepare a node for sending