Knowledge base

max-smtp-out

<virtual-mta>set by the Hub

How many simultaneous connections to hold from this whole address
in the configuration this is a linemax-smtp-out 15inside the block <virtual-mta>
The same name 2:<domain><virtual-mta><virtual-mta-pool>— some of them are other settings, some are the same one
A connection ceiling for the whole sending address

How many simultaneous connections this sending address holds in total across all recipient domains. It works a level above the directive of the same name in a recipient domain block: that one limits one queue, this one — all queues of this address.

Three identical names, three different settings. max-smtp-out lives in a recipient domain block, in a sending address and in a pool; each has its own default and its own scope. Look at the block, not at the name.

Without the line there is no limit. The manual names no default for this level, and the settings output prints unlimited. An address without the line is limited only by its queues’ limits and the node ceiling — this is not the same as the default of twenty in a recipient domain block.

The main trap. The address limit is shared among all its recipient domains. If the address sends to ten domains with a queue limit of fifteen each, together they will want a hundred and fifty connections — and will get as many as allowed here, silently splitting them among themselves.
What the Hub does. It sets the number from the chosen rate — 5, 15 or 40 connections; if a custom value is set in the node’s detailed settings, that one is used. An address under warm-up gets one, and next to it sits a block with WARMUP-MANAGED markers where warm-up holds the rate; the whole file is rewritten on every apply. The backup address that backoff mode moves the queue to gets 1, 2 or 5 — by the same rate: it receives the messages the receiver has already refused. The Hub calculates nothing from the number of recipient domains — the value is taken from the preset as is.
Recommended values
Mode Per address (vMTA) In the provider rule When this is your case
Warm-up, cold address 1 1 An address younger than 4–6 weeks or back from a pause
Careful 5 2 Strict receivers, questionable reputation, the first weeks after warm-up
Balanced default 15 5 Normal operation of an established fleet
Aggressive 40 10 Warmed-up addresses, friendly receivers, urgent volumes
PowerMTA default unlimited — If the directive is not written at all

Count from the number of recipient domains, not at random. The address sends to several domains, and each queue has its own limit. If there are ten queues and each is allowed fifteen connections, together they will want a hundred and fifty — and that is how many the address will open if nothing is written here.

The backup address gets the fewest. The one backoff mode moves the queue to holds 1, 2 or 5 connections — by the chosen rate. There is no reason to push on a receiver that has already refused.

The Hub does not set the queue limit separately. The general recipient block inside the address has no such line: each queue lives with the vendor’s twenty under the address ceiling. Only the mailbox provider rule gets its own, noticeably lower number — 2, 5 or 10.

The mode numbers are ours, proven on the fleet. The vendor names no default for this level — the settings command prints unlimited.
Example configuration
<virtual-mta mta-news-1>
    smtp-source-host 203.0.113.10 mail.example.com
    max-smtp-out 15    <domain *>
        max-msg-rate 10/m
    </domain>
</virtual-mta>
Fifteen connections for the whole address: no matter how many recipient domains it serves, there will be no more than fifteen conversations at once.
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 ends4 mistakes▶

Leaving the line empty and relying on queue limits

§ 6.3.22

What it costsWithout this line the address has no limit at all, and the queue limits add up. Ten recipient domains at fifteen connections each is a hundred and fifty from one address, and it is the whole address that loses reputation, not one queue.
How to spot itReceivers start responding with 421 for several domains at once, and the monitor shows the address holding more than a hundred connections. Yet every individual queue stays within what was written.
How to do it rightWrite an address ceiling and keep it well below the sum of the queues: all queues rarely work at once, and headroom for a peak is harmful here.

Giving the address less than its queues are allowed

§ 6.3.16

What it costsThe address ceiling triggers first, and nothing says that this is what was hit. The queue does not get connections, and it looks like a slow receiver.
How to spot itQueues do not use up their limit, there are no refusals, delivery is simply steadier and slower than expected. Meanwhile the queue settings show what was written.
How to do it rightLook at both levels at once — pmta show settings <domain>/<address> prints both the address limit and the queue limit in one output.

Editing the value on an address under warm-up

our experience

What it costsThe warm-up block is marked with markers and rewritten by the Hub in full, so the edit is lost. And if it did survive — warm-up is warm-up precisely because the provider judges a new address most strictly in the first weeks.
How to spot itAfter the next configuration apply the value is one again, even though nobody reverted the edit.
How to do it rightChange the warm-up stage, not the line in the configuration.

Expecting the address ceiling to be split evenly among recipient domains

§ 3.3.12.12

What it costsThe manual promises nothing about the split — it only says how many connections the address will open in total. A queue that has something to carry takes free connections first, and a quiet recipient domain waits.
How to spot itMessages to small domains go out with a delay, even though those domains do not refuse and their queues do not empty.
How to do it rightLimit not the affected queue but its neighbors — with their limit in the recipient domain block; or split the recipient domains across different sending addresses.
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 <integer>
Values
a positive integer, the number of simultaneous connections; without the line there is no limit — the settings output shows unlimited
Default
unlimited § 6.3.22
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<virtual-mta>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
The address value overrides the pool one, and the pool one overrides the node-wide one. The recipient domain limit (<domain> inside the address) does not replace it but works beneath it: first the queue limit is checked, then the overall address limit, then the node ceiling. It is picked up by pmta reload.
How to check on the node
What the address ended up with after merging with the pool and the node is printed by the address settings command:
pmta show vmta-settings mta-news-1
The max-smtp-out line in the output header. How many connections are in use right now is shown by pmta show vmtas — the conn column for each address. § 6.3.21, § 6.3.22
In the Hub
Managed at
Configurations → Delivery limits
Value
The Hub picks it itself — pace, warm-up stage, metrics
Cost of a mistake
reversible: harms only while it is set
Scenarios
Address warm-up · Tune the pace for a provider