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
Troubleshoot deliverability
entries in this scenario: 86
disable-acct-records
<domain>
critical
Directive
Disables the creation of accounting records of the chosen types — delivery, bounce, transient failure, queuing failure — for an individual queue.
record-fields
<acct-file>
critical
set by the Hub
Directive
The field list for one record type; the default is the star, meaning the default field set marked in the manual’s tables; it supports exclusions and arbitrary message headers.
retry-after
<domain>
critical
set by the Hub
Directive
It can be set as a sequence: 10m, 1h, 4h — and then the pauses grow from attempt to attempt.
smtp-proxy-source-host
Global
critical
Directive
The vendor’s way to send through a proxy — local address, proxy, client address and greeting name in one line.
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-notify
<domain>
set by the Hub
Directive
A message arrives for both events — entering backoff mode and leaving it.
backoff-retry-after
<domain>
set by the Hub
Directive
The retry schedule for the duration of backoff; set as a sequence.
bounce-category-patterns
<domain>
Directive
Puts your own reply parsing ahead of the general one — without changing whether the message bounced.
check-spf-outbound
<domain>
Directive
If it fails, the message is bounced on our side before it reaches the receiving server; a temporary error means a retry.
discard-as-bounce
<domain>
Directive
A discard queue still writes to accounting — this line decides with which letter.
name-server
Global
Directive
Sets name server addresses; the line is repeated, and the engine goes through them in rotation. If not set, the operating system’s resolvers are used.
precached-domains-file
<dns>
Directive
A text file with one domain per line; the listed domains are resolved regardless of whether there are messages for them in the queue.
precached-refresh-interval
<dns>
Directive
Sets a refresh schedule instead of the receiver’s record time to live: these domains’ own TTL is ignored.
proxy-retry-after
<domain>
Directive
The same retry step, but for the case when the connection through the proxy did not reach the receiver.
retry-recipients-after
<domain>
set by the Hub
Directive
A lower bound on the pause for an address that got a 4xx response — on top of the queue’s common schedule.
smtp-553-means-invalid-mailbox
<domain>
set by the Hub
Directive
A guess in place of what the receiver left unsaid — and whether the address ends up on the blocklist depends on it.
track-time-first-attempt
Global
set by the Hub
Directive
Enables tracking the time of the first attempt; it opens a field in accounting records and a delay metric. Off by default.
use-dane
<domain>
Directive
The node reads the recipient domain’s DANE records, requires encryption if the domain requires it, and checks the certificate against the fingerprint from DNS; the default is off.
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.
auth-password
<domain>
Directive
The second half of the pair; the hash sign is not allowed in it — the engine treats it as the start of a comment.
auth-username
<domain>
Directive
One of the two lines that enable outgoing authentication: either of them being non-empty is enough.
connect-timeout
<domain>
Directive
The first timeout of the conversation: things have not yet reached the greeting.
edns-udp-length
Global
Directive
Enables the EDNS extension and sets the maximum UDP response size; without it responses longer than 512 bytes are truncated, and the route may be assembled incompletely.
log-commands
<source>
set by the Hub
Directive
Writes the full exchange of commands and responses to the log; the vendor calls this the first step when investigating connectivity.
log-disabled-ips
<domain>
Directive
The only source of history: the list of disabled addresses shows “now,” the log shows “what happened.”
max-events-recorded
<domain>
Directive
Not a log but memory: the last ten errors for a domain, visible in the console and the web monitor.
max-msg-per-connection
<domain>
set by the Hub
Directive
The default is zero, no limit: it pays for the engine to send as much as possible over one connection.
max-rcpt-per-transaction
<domain>
Directive
Cuts a message with a large list into several transfers: more parallelism, but the body goes to the receiver as many times as there are pieces.
precached-max-domains
<dns>
Directive
A ceiling on the number of domains taken from the file; it cannot exceed the number of lines in the file, and extra lines are cut off silently.
retry-after-dns-error
<domain>
set by the Hub
Directive
A separate, shorter step: the receiver never saw this attempt, and haste does not threaten it in any way.
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.
time-first-attempt-domains-file
<prometheus-listener>
Directive
A list of receivers, up to a hundred names, for which the first attempt metric gets its own label; the rest fall into other.
track-outbound-perf-stats
Global
Directive
Enables counting the time from MAIL FROM to the end of DATA when sending; useful only together with the metrics listener.
track-recipient-events
<domain>
Directive
Off by default: the queue page says nothing about what happened to specific addresses.
use-unencrypted-plain-auth
<domain>
Directive
Both mechanisms transmit the password in the conversation; without encryption it goes over the network in the clear.
data-send-timeout
<domain>
Directive
The third wait of the conversation; the manual reminds: less than three minutes violates the mail standard.
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.
log-resolution
<domain>
Directive
Writes to the log the course of name and route lookup for the receiver; off by default.
log-transfer-failures
<domain>
set by the Hub
Directive
Writes a warning when the connection breaks while headers and body are being transferred; off by default.
max-rcpt-per-message
<domain>
Directive
The same splitting limit under another name — and a full namesake of the reception setting from the submission block.
replace-smtp-421-service-response
<domain>
Directive
Replaces the text after the 421 code with “service unavailable”, so that addresses from someone else’s reply do not get into the bounce report; pattern-based parsing keeps working.
smtp-greeting-timeout
<domain>
Directive
The second wait of the conversation: there is a connection, the receiver is silent.
The telemetry contract
critical
Mechanism
One block describes the accounting output in full: which record types, which fields, where they go, how files rotate and what gets anonymized.
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.
How the node responds to the receiving server's words
critical
Mechanism
Matches SMTP replies against regular expressions and changes the queue mode on a match — the very trigger that all of the backoff mode machinery waits for.
How an accounting record is structured
critical
Mechanism
How an accounting record is structured: the record type in the first column, then the fields, whose composition is configurable.
Backoff mode — the queue's second personality
critical
Mechanism
A queue that a receiver has started refusing switches to a parallel set of limits, retries and routes — ten directives that act only in this mode.
Complaints parsed by the node — and they are parsed second
critical
Mechanism
Mail that arrives at an address from the configured list is parsed as a complaint report; the parsing order matters — the complaint processor runs after the bounce processor.
What the node tells about itself and through which channels
critical
Mechanism
Seven observation surfaces: the web monitor, the console in four formats, the log, accounting, accounting search, metrics and export to external analytics.
Do not send what will fail the check at the receiver
critical
Mechanism
The node checks the SPF of its own mail before sending: if it fails, it bounces the message without waiting for someone else’s refusal.
Recipient events
critical
Mechanism
The last 50 delivery, bounce and deferral events per queue — enabled with
track-recipient-events
and visible in queue output.
Reputation monitoring inside the node
critical
Mechanism
The engine itself watches the receiving servers’ replies and changes the queue mode on a pattern match — a reaction within the connection, not through telemetry.
Seeding campaigns with control addresses
Mechanism
The engine mixes the vendor’s addresses into a mailing, and the result is viewed in the vendor’s deliverability tool; independent of event export.
Markup parsing and editing
Mechanism
Open and click tracking in
sparkpost
mode edits the message markup with the built-in gumbo-parser; by default a message whose markup could not be parsed is bounced.
Exposing metrics to a collector
Mechanism
Exposing the node’s metrics to an external collector in its format.
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 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.
Figure out why a queue to one receiver is growing
Procedure
First check the route and reachability with one command, then make the node attempt delivery with the session logged, and only for an intermittent problem enable per-receiver logging.
<dns>
Configuration block
The DNS precache block: a file with a list of domains, a ceiling on their number and a refresh schedule. Resolvers are set outside the block.
disable source
critical
Command
There is an option to bring it back automatically after an interval — without it the address stays disabled forever.
show queues
critical
Command
Shows the selected queues and, unless told otherwise, the last fifty deliveries, bounces and delays; selection is by connection, mode and pause state.
show settings
critical
Command
Prints the settings for a “receiving server and sending address” pair after all blocks have been merged.
resolve
Command
Queries a domain’s MX records and addresses and with
–connect
connects to the first available mail host.
show domains
Command
Prints recipient domains, summing up all sending addresses for each.
trace
Command
Opens a connection to a domain and tries to deliver one message from the queue, writing the SMTP conversation to the log.
pmtastats
Command
Computes throughput and traffic statistics from accounting files — for the node, sending addresses, jobs and domains.
acctfind
Command
Searches accounting files for records by fields and prints the selected fields in one of seven formats.
Details of one queue
critical
API endpoint
Returns one queue with short histories: the latest recipient events, errors and mode changes.
Details of one receiver
API endpoint
Returns the state of one recipient domain.
Delivered — the record everything is counted by
critical
Accounting record
Written for every recipient whose message the destination server accepted: the outcome, the time, the sending address, the job, transport security and the proxy.
Complaint
Accounting record
A complaint report was received and parsed by the configured processor.
Temporary failure
Accounting record
One delivery attempt failed, and the recipient stays in the queue until the next one.
Delivery notification
Accounting record
A delivery status notification that is not a bounce has arrived — for example, a delivery confirmation.
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 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.
Three short histories for each queue
critical
Monitor screen
The page of a single queue carries the last fifty recipient events, the last ten queue errors and the last ten mode changes.
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.
Spam traps
Monitor screen
The SparkPost Signals report on spam trap hits by day — as a count or as a share of the day’s volume.
The vendor analytics overview
Monitor screen
The SparkPost Signals overview: leaderboards by health score and spam traps broken down by campaign, pool and sending domain, for up to 90 days.
Service summary
Monitor screen
The SparkPost Signals report with sending metrics for a selected period, grouped by domains, campaign, address and pool.