A separate file for exactly one case: the engine did not start.
Why it is needed at all. A startup failure can be caused by the engine being unable to open the regular log — and it still has to report that. So the message has to go somewhere that does not depend on the configuration being correct.
It is read first on two occasions: right after installation and right after a configuration edit. The manual explicitly names these two cases as typical.
If the file is missing or holds nothing coherent, the manual suggests running the engine in debug mode right in the console — then the message is printed to the screen instead of a file.
⚠️ The manual is inconsistent about the location on Unix. The section on startup failures names the file pmta-startuperr.log, but gives its Unix path as /var/log/pmta/log — that is, the path of the main log itself, even though a paragraph earlier the file is called separate. Where it actually lives is worth checking on the node rather than inferring from the manual.
The cause stays on the node, in this file. So on a startup failure after applying a configuration from the Hub, you have to go to the node by hand — telemetry will only say that there is no connection.
What softens this is that the Hub checks configuration parsing before applying and applies it with a reload rather than a restart: an unsuccessful edit leaves the node running on the previous settings (config-reload).
The order for investigating a startup failure:
| Step | What to look at |
|---|---|
| first | this file — the startup failure message |
| second | the main log, if it exists and something managed to get written to it |
| third | a run in debug mode in the console, output to the screen |
An empty main log proves nothing. It may not have opened at all — exactly the case the separate file exists for.
Check the location on the spot. The manual contradicts itself here, and it is more reliable to find the file by searching the log directory than to follow the stated path.
# startup failure: three places in order ls -l /var/log/pmta/ && cat /var/log/pmta/pmta-startuperr.logtail -n 50 /var/log/pmta/log pmtad --debug
what people get wrong and how it ends3 mistakes▶
§ 4.2.1
§ 4.2.1
§ 4.2.1
3 relations
Investigating a startup failureThe investigation that starts with this file. § 4.2.1
Starting in the console with output to the screenThe same thing by another path — for when there is nowhere to write the message. § 4.2.1LogsThe file this output refers to. inferenceConfiguration parse checkWhat this check does not catch ends up later in the startup failure file. § 4.2.1
ls -lt /var/log/pmta/ | head pmtad --debug
3 articles
◇Third-party components of the enginePowerMTA runs on five third-party libraries — PCRE, OpenSSL, ICU, gumbo-parser and prometheus-cpp; their behavior is determined by the engine build.◇Accept, route, deliverA message’s path inside the node: accept, decide where, deliver — and all the settings live between these three steps.◇The activation key is a prerequisite for installation, not a step after itWithout an activation key from SparkPost support the engine neither installs nor runs, and the license tier sets the outbound connection ceiling: on Standard everything above 200 is ignored.