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
Delivery and routing
entries in this theme: 100
default-virtual-mta
<source>
critical
set by the Hub
Directive
Applies when the stream has not been chosen by anything higher up — a header, a rule or a merge variable.
domain-key
<virtual-mta>
critical
set by the Hub
Directive
Stream keys are stronger than general ones: when both levels match, these win.
host-name
<virtual-mta>
critical
Directive
The same directive written inside a sending address; it overrides the node’s general name but yields to the name tied to the address itself.
process-x-virtual-mta
<source>
critical
set by the Hub
Directive
A permission for the source — with it the header selects the stream and is stripped before delivery; without it the header does nothing and travels to the recipient.
smtp-source-host
<virtual-mta>
critical
set by the Hub
Directive
The same directive written inside a sending address — it is what makes that address a separate sending identity.
virtual-mta
<virtual-mta-pool>
critical
set by the Hub
Directive
The line lists a sending address in a pool; without a number the members are used round-robin, with a number — in the given proportion, and the shares must add up to 100.
auto-mx-rollup
Global
Directive
One line instead of a list: the node groups the domains itself and makes up the queue name itself.
backoff-reroute-to-virtual-mta
<domain>
set by the Hub
Directive
The only one in the family that does not slow down but moves: messages leave from another address while the queue is in backoff mode.
domain
<virtual-mta-pool>
Directive
Rules for a receiver written inside a pool are inherited by each of its members; a member’s own block overrides them.
domain-key
<virtual-mta-pool>
Directive
A pool hands the declaration to each of its members — there is no such thing as a shared key for a pool.
include-headers-from
<virtual-mta>
Directive
The same line as at the node level; set here, it does not replace the common one but adds to it.
invalid-virtual-mta-fallback
Global
Directive
Instead of a refusal, the message leaves through the stream named here; it works only at submission and only if the refusal is turned off in the source.
max-smtp-msg-rate
<virtual-mta-pool>
Directive
The same setting written for a group: the pool hands the value out to its members rather than dividing it among them.
max-smtp-out
<virtual-mta-pool>
Directive
The pool line goes to each member in full — it is not a reserve shared by the group.
proxy-include-tlv
<virtual-mta>
set by the Hub
Directive
Adds a field with the queue domain to the PROXY header; requires the second protocol version.
proxy-protocol
<virtual-mta>
set by the Hub
Directive
The HAProxy header version, 1 or 2; the default is the first.
queue-to
<domain>
Directive
Written in the block of each domain in the group: you set the shared queue name, the node does not derive it.
reject-invalid-virtual-mta
<source>
Directive
The default is to reject; this same default quietly cancels the fallback stream until it is turned off here.
reroute-to-virtual-mta
<domain>
Directive
The queue stays the same; what changes is the second half of its name — the address messages leave from.
smtp-hosts
<domain>
Directive
A list of hosts with preference levels, ports and addresses — or an instruction to take another domain’s MX.
smtp-proxy-source-host
<virtual-mta>
set by the Hub
Directive
The same directive written inside a sending address; it replaces the node’s common setting and forbids the regular form and use-proxy in the same block.
suppression-lists
<virtual-mta-pool>
Directive
The same line as for a sending address, written a level higher — every pool member gets it.
use-proxy
<virtual-mta>
Directive
A list of proxy blocks in backup order; the second is used only when the first did not respond.
alias
Global
Directive
Declares an address whose mail goes to one or more other addresses; the short form applies to all local names of the node.
allow-cancel-during-transfer
<domain>
Directive
The default allows it — for a fast service shutdown; turning it off protects against duplicates but makes the node stop more slowly.
assume-delivery-upon-data-termination-timeout
<domain>
set by the Hub
Directive
A bet that the message got through: there will be no duplicates, but no truth in accounting either.
auth-username
<domain>
Directive
One of the two lines that enable outgoing authentication: either of them being non-empty is enough.
command
<domain>
Directive
Mandatory for a pipe queue; substitutions with message properties are expanded in the line.
connect-timeout
<domain>
Directive
The first timeout of the conversation: things have not yet reached the greeting.
disable-mx-rollup
<domain>
Directive
Turns off both kinds of combining for the domain at once — both the manual list and the automatic one.
file-destination
<domain>
Directive
A path with substitutions: the date, domain and recipient can be inserted right into the name.
file-format
<domain>
Directive
A file per message, a file per message with envelope addresses, or a shared mbox mailbox.
header
<pattern-list>
Directive
The only rule with a parameter — first the header name, then the pattern; the entire header content is matched, including spaces and line breaks.
include-headers-from
<virtual-mta-pool>
Directive
The same line written one level up; every pool member gets it.
mail-from
<pattern-list>
set by the Hub
Directive
Matches the address from SMTP MAIL FROM — where bounces are returned — not the From address the recipient sees.
max-errors-per-connection
<domain>
set by the Hub
Directive
The default is no limit: the connection lives on, however many recipient refusals pile up on it.
max-smtp-data-volume-rate
<virtual-mta-pool>
Directive
The line is written once, but each member applies its own copy — the total volume is a multiple of the number of addresses.
rcpt-to
<pattern-list>
Directive
Matches the address from SMTP RCPT TO; with several recipients the stream of the first match applies to the whole message.
retry-upon-new-mail
<domain>
Directive
Bypasses the retry schedule: every new message in the queue schedules an attempt immediately.
rewrite-list
<virtual-mta-pool>
Directive
The same line as for a sending address, written a level higher — every pool member gets it.
smtp-421-means-mx-unavailable
<domain>
set by the Hub
Directive
The vendor default is to stay on the same connection; enabling it moves the queue to the receiver’s backup server.
smtp-data-termination-timeout
<domain>
Directive
The last wait of the conversation — and the most dangerous one: shorten it and you get duplicates.
type
<domain>
Directive
One line that switches the queue between five delivery methods.
verp-default
<domain>
Directive
The same enabling, but targeted: only for messages to this domain.
allow-empty-x-virtual-mta
<source>
Directive
With this line a message with an empty header is accepted and leaves via the default stream; without it this is an invalid stream and a rejection.
data-send-timeout
<domain>
Directive
The third wait of the conversation; the manual reminds: less than three minutes violates the mail standard.
default-smtp-port
<domain>
Directive
Usually 25; a change is needed where sending addresses are told apart by destination port.
dummy-smtp-has-chunking
Global
Directive
The default is not to announce it, and then the run uses a different transfer method than production mail will.
dummy-smtp-has-pipelining
Global
Directive
Of the three lines in the set, this one affects the figure the most: without pipelining the conversation is several times longer.
dummy-smtp-has-verp
Global
Directive
Needed exactly when mail with unique return addresses is run.
ignore-8bitmime
<domain>
Directive
A workaround for a known incompatibility: the external gateway accepts 8BITMIME, while the internal one behind it does not.
ignore-chunking
<domain>
Directive
A debugging switch: returns the transfer to the ordinary DATA command.
ignore-dsn
<domain>
Directive
Cancels the delivery report requests the message carries from submission.
ignore-pipelining
<domain>
Directive
The second debugging switch: commands go one at a time, with a reply to each.
pix-bug-workaround
<domain>
Directive
On by default: a workaround for a known fault that causes messages to be duplicated.
retain-x-virtual-mta
<source>
Directive
The default is to remove it; a header left in place carries internal stream names to the recipient.
smtp-greeting-timeout
<domain>
Directive
The second wait of the conversation: there is a connection, the receiver is silent.
track-jobs
<domain>
Directive
Enables counting jobs per receiver and showing them on its page in the web monitor; off by default.
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.
How the policy for a receiver is assembled
critical
Mechanism
Settings are assembled from the most general pattern to the most precise; the order of blocks in the file means nothing.
The sending address — what it is made of
critical
Mechanism
A named set of everything that is a property of the address: which IP the message leaves from, how the node introduces itself, what it signs with and how fast it sends.
A name, an address and a greeting name — what a sending address consists of
critical
Mechanism
The definition is small, and two of its properties are easy to miss — omitting the address line silently inherits the node’s settings, and several addresses in one block rotate round-robin.
The sender names the stream for each message
critical
Mechanism
The message carries the name of the stream it should be sent through — the choice is made by the submitting program, not by the node configuration.
Six ways to choose a stream and the order among them
critical
Mechanism
A message’s stream is set by a merge variable, an API call, a header, a pattern rule, a listener and a source default — the manual lists them by precedence.
The stream is named by a header, if the source is allowed to do so
critical
Mechanism
A message header names the stream; the source the message was submitted from must have permission to process the header, and the header is stripped before delivery.
A group of sending addresses with traffic shares
Mechanism
A named group of sending addresses; without shares messages are distributed in rotation, with shares in the given proportion, in steps of a tenth of a percent.
The source default is the bottom rung, tied to whoever connects
Mechanism
A source block matching the sender’s address can name a default stream; it applies when no choice was made higher up the ladder.
Hand a message to a webhook instead of a receiver
Mechanism
The queue sends the message as a POST request in the form of a JSON object; only a 2xx response counts as success.
The stream is chosen by matching the envelope or a header
Mechanism
A named rule list matches the return address, the recipient or a header against regular expressions and assigns a stream on the first match.
The node takes the stream whose address matches the connection address
Mechanism
The source default accepts a reserved value instead of a stream name — then the node chooses the stream whose sending address matches the address the connection arrived at.
Three pool rules the manual states directly
Mechanism
Rotation-based distribution, inheritance of settings by members with the member’s own values overriding, and a namespace shared with sending addresses.
The merge variable is the top rung, and it lives in the content
Mechanism
A service merge variable names the stream for the message and overrides all other selection methods on its submission path.
Selecting a sending address by message content
Mechanism
Regular expressions are matched against a header, the return address or the recipient and select a sending address or assign a priority; lists can call each other.
Five ways for a queue to hand off a message
Mechanism
A queue does not have to use SMTP: it can write to a file, run a program, call over HTTP or discard.
The stream follows the address you connected to
Mechanism
A named source block is attached to a listener and applies to everyone who connected to that address and port — so the sender picks the stream by picking the connection point.
Replacing a recipient with one or several others
Mechanism
A message that arrives at a declared address is forwarded to others; expansion happens after the stream is chosen but before the message is queued into it.
Handing a message to a program on the same node
Mechanism
The queue starts a program for each recipient and feeds the message to its input.
How a message leaves the node
Mechanism
At the introduction level two paths are described: extended SMTP to the receiver or handing off to a local program; the receiver block adds three more.
Removing a sending address — and what happens to its queue
critical
Procedure
The definition is removed with an edit and a reload; messages still tied to the removed address bounce with their own code.
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.
<domain>
critical
Configuration block
The largest PowerMTA block and the main one among those the Hub generates itself.
<virtual-mta>
critical
Configuration block
One outgoing address with a greeting name and its own limits — the identity the receiving server sees.
<pattern-list>
Configuration block
Regular expressions matched against the sender, the recipient or a header to choose a sending address.
<virtual-mta-pool>
Configuration block
Several addresses addressed as one, with rotation among them.
show settings
critical
Command
Prints the settings for a “receiving server and sending address” pair after all blocks have been merged.
show domains
Command
Prints recipient domains, summing up all sending addresses for each.
show vmta-settings
Command
Prints the settings of one sending address: name, limits, outbound addresses and signing keys.
show vmtas
Command
Prints the sending addresses: how many recipients, kilobytes and connections each has.
show topdomains
Command
Prints recipient domains in descending order of load.
Receiver policy inside an address
API endpoint
Creates, reads, extends and deletes receiver blocks inside a sending address created through the API.
Sending addresses through the configuration API
API endpoint
Creates, reads, extends and deletes sending addresses with requests — as directive lines in JSON.
Details of one receiver
API endpoint
Returns the state of one recipient domain.
Receivers with the largest queue
API endpoint
Returns the recipient domains with the largest queue, summing all sending addresses for each.
Sending addresses that have a queue
API endpoint
Returns sending addresses that currently have mail in the queue, by number of recipients in descending order.
The receiver refused the connection
Error code
The connection was not established: the remote host rejected it — either the mail server is down, or a filter is rejecting this particular sender.
Refusal at the greeting
Error code
The receiver returned an error at the very first step of the conversation — usually 4xx: busy, temporarily not accepting mail or not allowing this connection.
The receiver went silent mid-conversation
Error code
The connection is established, but the receiver stopped responding; the engine waits ten minutes, and this time is not configurable.
The receiver dropped the connection
Error code
The remote host unexpectedly closed the connection — the server was shut down or crashed, or this is how it responded to the message content.
Receivers summed across all sending addresses
Monitor screen
The busiest recipient domains by number of recipients: volume, open connections and the last error, plus a form for selecting a specific domain.
Sending addresses
Monitor screen
Sending addresses that have mail in the queue: recipients, volume, connections; each has a top domains page.