Knowledge base

Connection problem

bad-connection
Soft — retry later

The connection to the receiver failed or was broken.

Response codes — 4.X.X. The category is assigned by a pattern on the receiver’s reply text, not by the code itself: the pattern list can be extended with your own patterns and your own names (bounce-category-patterns).

A transport problem. If it persists for a long time, it is worth checking whether the problem is in our network, and comparing with other receivers.

A category is an interpretation, not a fact. It was chosen by a pattern that matched the reply text against an expression. The same reply from another receiver may land in another category, and our own pattern would override it altogether. A decision about an address should be built on the receiver’s words, with the category read as a hint.
What the Hub does. It does not count it as hard: the mailbox exists, the message just was not accepted right now. The address is not removed for it, and the share of such bounces affects the rate.
Recommended values

What to do with this bounce: retry later.

Question Answer
what the bounce is about not the address
our axis soft
will a retry help yes, that is what retries are for

Look at the reply text, not just the category — the cause is in it, while the category only sorts bounces onto shelves.

The assignment to our axis and the recommended action are ours. From the manual come the category’s definition and its response codes.
Example configuration
# the receiver's reply the category is assigned by
421 4.4.2 Connection timed out
A transport problem. If it persists for a long time, it is worth checking whether the problem is in our network.
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 ends3 mistakes▶

Removing an address on a soft bounce

§ 12

What it costsThe mailbox exists, the message just was not accepted right now. Removing the address means losing a live recipient over a temporary cause.
How to spot itAddresses that used to receive messages properly leave the database.
How to do it rightRemove addresses only on bounces that mean the address does not exist. Soft ones are treated with retries and pace.

Raising the rate after the bounces disappear

§ 12

What it costsA soft bounce was a request to slow down. Returning to the previous speed right after the receiver stopped refusing usually leads to the same result a few hours later.
How to spot itBounces from the receiver come back in cycles of roughly equal length.
How to do it rightBring the rate back in steps and watch the bounce share at each one.

Reading the category instead of the reply text

§ 12

What it costsThe category sorts bounces onto shelves, while the cause is written in words. Without the text an investigation stops at “there are many bounces” and goes no further.
How to spot itThe investigation ends with a statement of the bounce share.
How to do it rightLook at the queue’s latest errors — the receiver’s words are there, not their classification.
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.
How to check on the node
Where this bounce shows up:
pmta show queues --errors example.com
pmtastats bounce-categories --bounceCat bad-connection /var/log/pmta/acct-*.csv
The first prints the queue’s recent errors — the receiver’s words are there. The second counts how many bounces fell into this category over the accounting period.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Bounce classification