Globalcriticalrestart required
Chooses whether PowerMTA runs as root or as the unprivileged pmta user. To run as pmta the value must be false — and this is not an on-the-fly switch: changing it requires a service restart.
The default is root. A missing line means running with full privileges, not the other way around. When reading someone else’s configuration, remembering this matters more than it seems: unprivileged operation is enabled only explicitly.
A configuration reload does not pick up this line. The file will be updated and the value will become false, but the process stays the same, with the same privileges — until the service restarts. Hence nodes whose configuration says one thing while the system shows another.
What has to be fixed along with it. The manual lists three requirements at once: the value false, listener ports above 1024 and raised file and process limits via /etc/security/limits.conf. And when switching from root to pmta — also changing the owner of the engine’s five directories: settings, state, logs, spool and installation. The files there were created by root, and without this the node will run into permission denials.
Why it was removed rather than finished. § 2.2.1 requires four things at once: false, listener ports above 1024, limits in /etc/security/limits.conf and changing the owner of the engine’s five directories. Only one was being done — the line itself. The complaint listener stayed on port 25, the installer raised limits with a ulimit command inside the connection session, which closes right away, and changed the owner of two directories out of five, and only for an rpm install. Measurements on 27.08 and 29.08 showed the result: the processes on the nodes ran as root, because a configuration reload does not pick up this line, and a reload is exactly how the Hub applies configuration.
Meanwhile the line lied: whoever opened the configuration read “the node is unprivileged.” What was removed was the appearance, not protection — the nodes’ behavior did not change.
One line is not enough. It switches on the intent, not the result. A working unprivileged installation is false plus ports above 1024 plus limits in limits.conf plus permissions on the engine’s directories.
A restart, not a reload. The only way to apply it is to stop and start the service; delivery stops for that time, so the value is worth changing in a maintenance window, not “in passing.”
Check by the process, not by the file. What is written in the configuration says nothing about whom the node is running as right now.
# switching to the pmta user — takes effect only after a restart run-as-root no# the listener ports must then be above 1024 smtp-listener 0/0:2525 smtp-listener 0/0:2526
what people get wrong and how it ends4 mistakes▶
§ 3.3.1.9
§ 2.2.1
§ 2.2.1
§ 2.2.1
3 relations
ps -o user= -C pmtad
3 articles
◇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.◇Accept, route, deliverA message’s path inside the node: accept, decide where, deliver — and all the settings live between these three steps.◇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.