Knowledge base

deliver-unmatched-email

<bounce-processor>set by the Hub

Whether to deliver messages not recognized as bounces
in the configuration this is a linedeliver-unmatched-email true if forward-unmatched-to is not specifiedinside the block <bounce-processor>
The same name 1:<bounce-processor><feedback-loop-processor>β€” some of them are other settings, some are the same one
The fate of unrelated mail

The processor catches messages by an address list but recognizes only bounces among them. This line decides what to do with the rest. The default is true, that is, deliver as regular mail.

πŸ”΄ The value false means β€œdiscard silently.” No refusal to the sender, no accounting record: the message simply disappears. For an address with no mailbox behind it this is sensible β€” but for an address people or services write to, it is a loss.

And it is also the condition for forwarding. The manual says it directly: with forward-unmatched-to set, this line must be true β€” otherwise the message is discarded before forwarding, and the forwarding address does not work.

Hence three possible outcomes for a message that was not understood: deliver (by default), discard (false without forwarding), forward (true plus a forwarding address).

The main trap is discarding what was expected. The processor’s address receives not only what it was set up for: non-standard reports, replies from people, messages from services. With the value false all of this disappears, and there is no way to learn about the loss β€” no record is left anywhere.
What the Hub does. It writes no, that is, unrecognized mail is discarded.

Our processor catches bounce@bounce.<domain> and the role addresses dmarc@, postmaster@, abuse@.

πŸ”΄ And for bounces this is worth revisiting. We accept role addresses on the same processor β€” dmarc@, postmaster@, abuse@. The bounce processor does not recognize bounces in them, and with no the daily DMARC aggregate reports we ourselves requested with the rua record are discarded. Along with them go messages from complaint services to abuse@ and everything written to postmaster@. The cure is a pair: true plus forward-unmatched-to to a live mailbox.

Recommended values

Three outcomes, chosen between with two lines:

What is needed deliver-unmatched-email forward-unmatched-to
deliver as regular mail true (default) do not set
discard silently false do not set
forward to a person true a mailbox address

The combination of false plus a forwarding address does not work β€” the message is discarded earlier.

The true default, discarding with false and the requirement of true for forwarding to work come from the manual (Β§ 3.3.3.1). The analysis of what we lose is based on the Hub’s configuration.
Example configuration
# forward instead of discarding: the two lines work only together
<bounce-processor>
    deliver-unmatched-email true    forward-unmatched-to postmaster@example.com
</bounce-processor>
With the value no and forwarding set, the message is discarded anyway: forwarding never gets to it.
yellow β€” β€” directive names, blue β€” blocks. They are highlighted the same way in the text of the card.
β–²

Common mistakes and problems

what people get wrong and how it ends2 mistakesβ–Ά

Setting forwarding while leaving discarding on

Β§ 3.3.3.1

What it costsThe message is discarded before forwarding. The forwarding address is in the configuration, the mailbox has no messages, and there is no error either.
How to spot itThe forwarding mailbox is empty while the processor is working.
How to do it rightSet true β€” it is the condition for forwarding to work.

Discarding all unrecognized mail at an address people write to

our experience

What it costsOn role addresses like postmaster@ and abuse@ the processor recognizes almost nothing. With the value false you can write there as much as you like β€” nobody will see it.
How to spot itNobody answers messages sent to the support service at abuse@.
How to do it righttrue plus forward-unmatched-to to a live mailbox.
Compatibility
PowerMTA 6.0
described in the manual of this version Β· platform: any
The vendor does not state the first version for every directive β€” there is no note here. The name also appears in the 5.0 edition of the manual.
Reference data
Syntax
deliver-unmatched-email <boolean>
Values
yes | no | true | false
Default
true if forward-unmatched-to is not specified Β§ 3.3.3.1
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<bounce-processor>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
There is no inheritance: the line lives inside its <bounce-processor> and decides the fate of messages caught by its address list. The neighboring processor has its own such line and its own list.
How to check on the node
There is one check β€” send the processor’s address a message it certainly will not recognize:
grep -i "unmatched\|discard" /var/log/pmta/log | tail -20
With false the message will disappear without a trace β€” that is what to expect. With true it will either reach the mailbox or go to the forwarding address.
In the Hub
Managed at
Analytics β†’ Node accounting
Value
The Hub picks it itself β€” pace, warm-up stage, metrics
Cost of a mistake
reversible: harms only while it is set
Scenarios
Receiving inbound mail