Home
Features
Modules
Integrations
PowerMTA Docs
MailerQ Docs
Pricing
Blog
D
e
m
o
Home
Features
Modules
Integrations
PowerMTA Docs
MailerQ Docs
Pricing
Blog
D
e
m
o
Home
Features
Modules
Integrations
PowerMTA Docs
MailerQ Docs
Pricing
Blog
Home
Knowledge base
Knowledge base
PMTA knowledge base
›
Scenario
Configuration lifecycle
entries in this scenario: 54
run-as-root
Global
critical
Directive
Must be false to run as an unprivileged user; changing it requires a restart.
http-enable-api-config
Global
Directive
Opens an interface that allows creating address lists and sending addresses over HTTP; off by default.
include
Global
set by the Hub
Directive
Reads an additional file — by path, by mask or by HTTP address; the contents are processed as if written in this place.
smtp-hosts
<domain>
Directive
A list of hosts with preference levels, ports and addresses — or an instruction to take another domain’s MX.
include
<domain>
Directive
The same directive written inside a recipient block — the included lines become that recipient’s rules.
relay-debug
Global
Directive
Switches relay control into debug mode: instead of a final refusal the node responds with a temporary one, and the message stays with the sender instead of bouncing.
backoff-max-msg-per-hour
<domain>
deprecated
Directive
The replacement is backoff-max-msg-rate, and it has a default this form did not have.
broken-auth-clients
<source>
deprecated
Directive
One of two directives in the catalog about which the manual says nothing except the word “deprecated”.
check-spf-inbound-best-guess
<source>
deprecated
Directive
The manual marks it as deprecated and explicitly advises against using it.
delivery-priority
<domain>
deprecated
Directive
The section contains only the deprecation mark and a pointer to the replacement: queue priority.
max-msg-per-hour
<domain>
deprecated
Directive
The replacement is max-msg-rate: the same limit, but the interval is written in the value itself.
max-smtp-out-per-source-ip
<domain>
deprecated
Directive
The former name of the per-address connection limit; the manual says nothing more about it.
route
<domain>
deprecated
Directive
The same mechanism under an old name: the manual gives it word for word the same description and asks you to use the new one.
smtp-ip
Global
deprecated
Directive
The replacement is smtp-listener: address and port in one line, and its presence silences this line.
smtp-port
Global
deprecated
Directive
The other half of a replaced pair: the port was set separately from the address, now they are written in one line.
smtp-server-tls-allow-sslv3
Global
deprecated
Directive
PowerMTA no longer supports SSLv3; the line is kept only for configuration compatibility.
smtp-tls-allow-sslv3
<domain>
deprecated
Directive
PowerMTA no longer supports SSLv3; the line is kept only for configuration compatibility.
spool
Global
deprecated
Directive
It set the spool location with one line; replaced by a block that has priority, a free space threshold and modes.
How the node selects a source and combines its settings
critical
Mechanism
A 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.
Configuration through the API and the file do not reconcile
critical
Mechanism
Objects created through the configuration interface cannot be edited in the file: two sources of truth about the configuration do not reconcile.
Reloading settings versus restarting the service
critical
Mechanism
The 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.
Four value types the whole config is written in
critical
Mechanism
Boolean, domain pattern, regular expression and time interval — defined once in § 3.2 and then used by all directives.
Directives with the same name
Mechanism
A directive name defines a setting only together with its block: 48 of 417 names are documented in more than one place, and one name in different blocks is not always one setting.
How the API reports an error
Mechanism
HTTP submission reports errors with response codes, while the configuration API answers
200
to everything except an access refusal and puts the outcome in the
status
field.
The regular expression dialect
Mechanism
Configuration regular expressions are Perl-compatible, based on the PCRE library: that is how sending address selection, reply rules, bounce categories, address lists and signing headers are written.
The directive index
Mechanism
The manual’s alphabetical index: 475 lines name 477 places where directives are documented — the only complete inventory of the configuration language.
Third-party components of the engine
Mechanism
PowerMTA runs on five third-party libraries — PCRE, OpenSSL, ICU, gumbo-parser and prometheus-cpp; their behavior is determined by the engine build.
Accept, route, deliver
Mechanism
A message’s path inside the node: accept, decide where, deliver — and all the settings live between these three steps.
Initial configuration
critical
Procedure
The manual requires two things to be set by hand: the responsible person’s address and relaying control — sources for submitting machines with
always-allow-relaying
; reception rules are needed only if the node accepts inbound mail.
Change a sending address when messages are already queued
Procedure
New connections pick up the new definition right after the configuration reload; already open ones live out their lives on the old one.
Investigating a startup failure
Procedure
The order of looking for the cause when the engine does not come up: the separate startup error file, the main log, a console run with output to the screen.
Starting and stopping the engine
Procedure
The engine runs as a service on Windows and as a daemon on Unix; after start the watchdog must be running next to it, and a stop halts delivery without touching the messages on disk.
<virtual-mta-pool>
Configuration block
Several addresses addressed as one, with rotation among them.
<address-list>
Configuration block
A named list is attached by its name; an unnamed one lives inside a bounce or complaint processor and selects mail for parsing.
<email-patterns>
Configuration block
A block with pattern files, nested inside a bounce or complaint processor; it has two lines.
<include-config>
Configuration block
The same as include with an address, but lets you set request headers — for example, authorization.
<smtp-user>
Configuration block
One block, one login: what confirms the login and which named source gives it rights; declared at the root of the file.
<source-group>
Configuration block
Gathers sources into a group so that inbound connection limits apply to them together; members name the group on their side.
<transmissions-api-listener>
Configuration block
The address, port and encryption for submitting messages over HTTP.
<transmissions-api>
Configuration block
Access keys, the request size limit and logging for submitting mail over HTTPS; declared once at the root of the file.
<rewrite-list>
Configuration block
A named list of rules; attached to a source by name, and all messages from there pass through it.
<signals-filter>
Configuration block
A block with rules by sender domain; attached to the scope by name, and anything not matched is considered disabled.
reload
critical
Command
Rereads the configuration file and enables the new settings; if the file has an error, the command fails and the node keeps running on the previous ones.
show settings
critical
Command
Prints the settings for a “receiving server and sending address” pair after all blocks have been merged.
test config
critical
Command
Parses the configuration without applying anything.
pmtad –debug
Command
Starts the engine in the foreground, printing messages to the screen instead of a file.
Replace the configuration file over the network
API endpoint
Writes one or more configuration files to the node — without checking the contents and without reloading.
Read the configuration file over the network
API endpoint
Returns the contents of a configuration file from
/etc/pmta/
— the file itself or as a string inside JSON.
List of configuration files
API endpoint
Lists the node’s active configuration files: the main one, the included ones and the defaults file.
Spool reading at startup
Metric
The share of the spool read completed at startup, in percent.
Configuration
Monitor screen
Shows the main and included configuration files and lets you edit them; saving reloads the configuration by itself.
The node's main configuration file
critical
File
/etc/pmta/config is a plain UTF-8 text file, read at startup and on a settings reload; it stores passwords and signing keys in plain text.
Where the node writes why it did not start
File
A separate file with the startup failure message — the first thing to read when the engine does not come up after installation or a configuration edit.
The defaults file
File
The second main configuration file: the defaults over which the main one is read.