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
›
Theme
Installation and core
entries in this theme: 64
host-name
Global
critical
Directive
The first name is the main one; which one ends up in the greeting is decided by a five-step resolution.
postmaster
Global
critical
Directive
One of the two settings the engine does not work without: the watchdog sends crash and license expiration reports here, and mail to service addresses is forwarded here as well.
smtp-source-host
Global
critical
Directive
Binds outgoing connections to a local address or CIDR range and sets the name in the SMTP greeting.
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.
domain-macro
Global
set by the Hub
Directive
Declares a variable with a list of domains; after that its name with a dollar sign is substituted where the domains would otherwise have to be listed again.
http-extra-headers
<include-config>
Directive
Names a file whose lines the node will add as HTTP request headers when loading the configuration.
include
<virtual-mta>
Directive
The same directive written inside a sending address — the included lines become its settings.
include
<domain>
Directive
The same directive written inside a recipient block — the included lines become that recipient’s rules.
include
<source>
Directive
The same directive written inside a source block — the included lines become its settings.
include
<smtp-pattern-list>
Directive
The same directive written inside an SMTP response parsing list — the included lines become its rules.
min-free-space
<signals>
Directive
Below this threshold the node starts deleting unsent export files; the default is 20 MB.
volume-audit-api-key
Global
Directive
Mandatory under a license that counts volume: with this key the node authenticates itself when sending data to the vendor. It is issued together with such a license.
thread-reuse
Global
Directive
Turning it off makes the engine discard threads immediately; this costs performance and removes a workaround for an old library bug. The default depends on the platform.
thread-max-priority
Global
Directive
Sets the fast end of the priority range the engine’s threads run with; a Unix-only directive, paired with the lowest one.
thread-min-priority
Global
Directive
Sets the slow end of the priority range the engine’s threads run with; a Unix-only directive, paired with the highest one.
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 to turn a sending plan into hardware
Mechanism
Two constants for sizing any node: about 2 KB of memory per queued recipient and spool space proportional to the total size of the messages.
Cloud restrictions
Mechanism
Clouds restrict outbound mail on port 25 until you ask them to lift the limit, and mailbox providers treat their address ranges with suspicion.
The activation key is a prerequisite for installation, not a step after it
Mechanism
Without 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.
The watchdog that restarts the engine
Mechanism
Keeps an eye on the engine and brings it back up after a crash by itself, sending a crash report to the postmaster address.
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.
What makes a virtual machine risky
Mechanism
Running on a virtual machine is possible, but the manual does not recommend it without sufficient hardware and properly tuned hypervisor settings: under load the node may stop responding.
A license for a fleet, not for a server
Mechanism
The license is not bound to a server: it is installed on as many machines as the instance limit allows, and the nodes send volume statistics to the vendor every hour.
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.
Who took the port
Mechanism
Two listeners do not fit on one port: if the port is already taken, the node will not come up, and the cause will be only in the log.
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.
Engine version rollback and configuration via the API
Mechanism
When PowerMTA is rolled back to a version without the configuration API, what was created through it becomes invisible but is not deleted; the manual’s table says what survives a rollback between versions with the API.
Running in an image
Mechanism
Experimental running of the engine in a Linux container: the package, license and configuration are installed when building the image or attached at startup.
National alphabets
Mechanism
Configuration files are UTF-8, so internationalized domains and addresses are written as is; a message with an internationalized address in the envelope goes out only if the receiver supports SMTPUTF8.
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.
Installing on Linux
critical
Procedure
Install the vendor’s package with the standard package manager, put the license key in place, check the configuration against the requirements and start the engine once — after that it comes up by itself.
Prepare a machine for the engine
critical
Procedure
Five requirements and a supported operating system must be in place before installation: a static address with a name, a reachable resolver, synchronized time, sized hardware and a license key.
Node backup and restore
Procedure
Five directories make up the node’s recoverable state; restoring means stopping the engine, putting the directories back and starting it again.
Upgrading the engine
Procedure
Before upgrading, make sure the license file holds a key valid for the new version and that the support term has not expired — and only then upgrade the package.
Switching over to a standby node
Procedure
The procedure for handing work to another machine: redirect submission, attach the failed node’s spool as a second one if possible, restart the standby, and do the reverse on return.
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.
Removing the engine
Procedure
Removing the package with the standard package manager. The node’s state stays on disk.
Deployment in the cloud
Procedure
Installing in the cloud adds a few conditions of its own to the ordinary installation: choosing the machine type by estimate, a fixed address and a lifted restriction on the outgoing mail port.
Contacting the vendor
Procedure
What to collect and where to turn when you could not sort it out on your own.
Installing on Windows
Procedure
Installation with a wizard, with the same license and configuration requirements as on Linux.
Global
critical
Configuration block
Lines that belong not to a queue but to the instance itself: ceilings, the spool, listeners, logging, the license and the web monitor.
<spool>
Configuration block
The directory where the engine keeps message files while they wait for delivery; there can be several directories, each with its own priority and free space threshold.
<include-config>
Configuration block
The same as include with an address, but lets you set request headers — for example, authorization.
disable source
critical
Command
There is an option to bring it back automatically after an interval — without it the address stays disabled forever.
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.
test config
critical
Command
Parses the configuration without applying anything.
enable source
Command
Returns an address early — and this is the only way if no timer was set when it was disabled.
show disabled sources
Command
The only window into the disabling mechanism: shows both manual disablings and those made by mailbox provider rules.
show license
Command
Prints the license details: product, version, platform, licensee, serial number, issue and expiry dates.
show version
Command
Prints the version, the build date and the revision.
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.
Addresses present on the machine
API endpoint
Lists the addresses configured on the machine itself.
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.
License
Monitor screen
Shows the engine license and lets you add or replace it.
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.
License file
File
The license key as a plain file — /etc/pmta/license on Linux, license.dat in the installation directory on Windows; on Windows ASCII is mandatory, not Unicode.
The defaults file
File
The second main configuration file: the defaults over which the main one is read.