Knowledge base

Investigating a startup failure

Troubleshooting Startup Problems
Three sources in a row

A startup failure usually happens right after installation or a configuration edit. First read the separate pmta-startuperr.log file; if it is missing or explains nothing, run the engine in the foreground: pmtad –debug prints the error straight to the screen.

A common cause is a busy port. For the monitor, port 8080 is changed with a configuration line. The SMTP port is harder: if the node only sends, the listener is moved to a free port above 1024 — usually 2500 or 2525 — and the submitting program is reconfigured; if both servers accept inbound mail, each needs its own IP address.

The main trap is looking for the cause in the main log. A startup failure is written to the separate pmta-startuperr.log, and if the log line itself is broken, there is no main log at all — as in the manual’s example No logging file specified.
What the Hub does. The Hub does not distinguish a startup failure: the node simply stops responding to polling, and in the cabinet this looks like unavailability without a cause. You have to go to the node by hand.
Recommended values

Three sources in order:

Step Where What to look for
startup error file pmta-startuperr.log the error text
foreground start pmtad –debug the error on the screen
busy port monitor 8080, SMTP 25 another process on the port
The error file, the debug start and the port conflict solutions come from the manual (§ 4.2.1). The table is ours.
Example configuration
/usr/sbin/pmtad --debug
The manual’s example prints Startup error: No logging file specified — the cause is visible at once.
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
Check whether the port is taken by another process:
ss -ltnp | grep -E ':(25|8080) '
A process other than the engine on 25 or 8080 is exactly the port conflict.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Configuration lifecycle · Prepare a node for sending