The task. A receiver starts rejecting or deferring messages from one sending address. A reaction on the next telemetry poll is minutes late; a reaction to the reply itself is instant, and only the node is capable of it.
What it is made of:
The parts have different scopes. The reply list is attached in the recipient block, and backoff values are set per recipient inside a sending address — the whole scheme is expressed in the narrowest scope PowerMTA has.
How they interact. The point is the division of labor. The node has the receiver’s reply in hand and acts before the next message. The Hub sees the same receiver across all addresses and nodes for weeks. That is why the Hub writes the rules and the node executes them. This works only if backoff values differ from normal ones: rate and retries match the normal values by default, and switching the mode without them changes nothing.
Reactions by strength:
| Reaction | Line | What happens |
|---|---|---|
| brake | backoff-max-msg-rate | fewer messages to the same receiver |
| pause | backoff-retry-after | less frequent attempts |
| reroute | backoff-reroute-to-virtual-mta | the queue’s messages, including new ones, go out from another address until the mode ends |
<smtp-pattern-list blocking-errors> reply /421 .*(rate|too many)/ mode=backoff</smtp-pattern-list> <domain [*.]yahoo.com> smtp-pattern-list blocking-errors backoff-max-msg-rate 50/h backoff-reroute-to-virtual-mta vmta-reserve </domain>
pmta show queues --mode=backoff