Globalrestart required
The interface appeared in PowerMTA 5.5 and allows reading and changing individual parts of the configuration over HTTP. Currently these are two kinds of entries: address lists (including suppression lists) and sending addresses with their receiver tags. It is off by default.
🔴 What is created through this interface can be changed only through it. The manual says it directly: “Any configuration created via this API can only be modified via the API.” These entries are not in the configuration file — they live in separate files, /var/lib/pmta/config-api on Linux, and are loaded on every reload.
So the node gets two sources of truth. Whoever reads the configuration file does not see the whole configuration. For a fleet that assembles the file as a whole and distributes it to nodes, this is a direct problem: our file does not describe the node.
Disabling does not delete. The entries become invisible and will come back if the interface is enabled again. A forgotten edit can resurface a year later.
Every edit triggers a reload. If it fails, the edit is rejected, and the error text is returned in the response — sometimes a confusing one: an attempt to delete a list in use gives “no such list,” because the deletion was rolled back.
🔴 If a node arrives with someone else’s configuration, this is worth checking first. An http-enable-api-config yes line means some of the node’s settings are not in the file, and a migration will not capture them: the /var/lib/pmta/config-api directory has to be moved separately.
For a fleet there is one answer, and it is the default:
| Value | When |
|---|---|
| no (default) | the configuration is assembled and distributed by the Hub |
| yes | the node is configured by someone else’s program over HTTP |
The two methods cannot be combined: entries created by the interface can be edited only by it.
# enable it only where the node is configured by someone else's program http-mgmt-port 1000 http-api-key abcd_0123_abcd_0123_abcd_0123_ab http-enable-api-config yes
what people get wrong and how it ends3 mistakes▶
§ 8.3
§ 8.3
§ 8.3
4 relations
ls -la /var/lib/pmta/config-api/ 2>/dev/null
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.