Knowledge base

max-smtp-out

<virtual-mta-pool>

The connection ceiling each address in the pool gets
in the configuration this is a linemax-smtp-out unlimitedinside the block <virtual-mta-pool>
The same name 2:<domain><virtual-mta><virtual-mta-pool>— some of them are other settings, some are the same one
A connection ceiling set once for the whole group

A convenience of notation, not a separate level of limitation: the value is written once in the pool and goes to each of its members as their own.

The pool does not divide the reserve but hands it out. The manual lists the directives a pool passes down and says of them “inherited by the member addresses.” So max-smtp-out 20 in a pool of five addresses means twenty connections for each, that is, up to a hundred from the pool, not twenty for all. A value written in the address itself overrides the pool one.

There is still an overall ceiling on the node — total-max-smtp-out, and it acts on top of everything. If you need a limit for a group of addresses as such, this is the only real boundary; the pool line does not replace it.

The line has no description of its own. The manual section refers to the definition in the recipient domain block — not to the neighboring section about the sending address, even though in meaning that is the one. Read literally, the reference would make the pool value a limit on one queue, which the example from the same section does not confirm. We read it by the example: it is the address ceiling written a level higher.

The main trap. The line is read as “this many connections from the pool,” but what you get is “this many from each.” Add a fifth address to the pool and total connections grow by a fifth, even though nothing changed in the configuration. It is checked with the command pmta show vmta-settings <address>: it prints the value already merged with the pool.
What the Hub does. In a pool it writes nothing but the member list: the connection ceiling is set for each address separately, in the <virtual-mta> block — the addresses in the fleet differ, and one under warm-up and an established one must not get the same value. That is also why there is no mode table on this page: the modes belong to the line the Hub writes a level lower.
Recommended values

Count as a product, not a sum. The number from the pool is multiplied by the number of members — this is what the recipient domains will see. A pool of five addresses at fifteen connections each is seventy-five fleet connections.

One value for the group suits only identical addresses. If the pool has both an address under warm-up and an established one, a common line will either choke the second or burn the first. This difference is exactly the reason to write the ceiling for each address separately.

The order of magnitude is the same as for the address line. Fifteen connections in normal mode, five in careful mode, forty in aggressive mode; an address under warm-up gets one.

The pool form has no default: a pool without this line simply adds nothing to its members. The order of magnitude is ours, from the address level.
Example configuration
<virtual-mta-pool pool-news>
    max-smtp-out 15    virtual-mta mta-news-1
    virtual-mta mta-news-2
</virtual-mta-pool>
Each of the two addresses will get fifteen rather than splitting it between them: up to thirty connections will come out of the pool.
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▶

Reading the pool line as a shared group reserve

§ 3.3.13

What it costsEach member gets the value in full, and the fleet opens as many connections as there are addresses in the pool. A pool of five at twenty each is a hundred.
How to spot itRecipient domains respond with 421 even though the configuration has a modest number, while the monitor shows the fleet’s total connections at a multiple of it.
How to do it rightCount it as a product. There is only one real limit for a group — the node ceiling; the pool line does not replace it.

Writing one value for a pool with addresses of different maturity

our experience

What it costsA common line serves both the same way, while they need different values — one for the warm-up, fifteen or so for the established one.
How to spot itThe address under warm-up collects complaints and goes to spam, while the established one delivers more slowly than it could.
How to do it rightKeep the ceiling on each address separately and leave only the member list in the pool — that is what the Hub does.

Editing the pool when the address has its own line

§ 6.3.22

What it costsThe member’s own line overrides the pool one, and the latter has no effect at all. Nothing reports this — both lines in the configuration look like they work.
How to spot itThe edit was applied, the configuration reread, but the address’s behavior has not changed by a single connection.
How to do it rightLook at the member’s settings output, not the configuration text: it shows the value after merging.
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
max-smtp-out <see-reference>
Values
a positive integer, the number of simultaneous connections; the form is the same as for the line of the same name at the sending address level
Default
unlimited § 6.3.22
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<virtual-mta-pool>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
The pool hands the value out to members, and a member’s own line overrides it. Above both is the node ceiling (total-max-smtp-out), below them the recipient domain queue limit, which is counted separately and adds up across all of the address’s queues. It is picked up by pmta reload.
How to check on the node
Check not the pool but a member — the command prints the value already after merging:
pmta show vmta-settings mta-news-1
If the address itself has its own line, the output will show it, while the pool line will not show up anywhere — that is how you can tell which value won. § 6.3.22
In the Hub
Managed at
Configurations → Delivery limits
Cost of a mistake
reversible: harms only while it is set
Scenarios
Sending address rotation