<virtual-mta>
How many recipients the sending address undertakes to serve per interval — in total, across all receivers at once. Both delivered messages and mere attempts count: a temporary refusal from a receiver uses up the limit just like an accepted message.
It counts the address, not the queue — and that is the whole difference. Its close relative max-msg-rate lives in a receiver block and acts on one queue: 500/h with ten receivers means five thousand messages an hour from the address, not five hundred. Here it is the opposite: 500/h means five hundred, no matter how many receivers there are. If you need a ceiling for the address as such, there is no other way to set it.
What triggering looks like. The web monitor writes message rate limit reached (based on max-smtp-msg-rate in configuration) — the text immediately shows which directive held back sending, and there are five similar ones in this family. Messages are neither refused nor lost: the limit stretches sending out over time rather than cutting it off.
The manual advises measuring first. The advice there is direct: take a baseline without the limit and make sure the limit improves deliverability rather than merely slowing down sending. It is not superfluous — a receiver sees only its share of the flow, and a ceiling for the whole address does not always help: it fits when the address is young or when several senders send from one node, and is useless when the bottleneck is not the address but a specific queue.
If you set it by hand, keep in mind that 1/h in a receiver block and 1/h here are different quantities: the first is multiplied by the number of receivers, the second is not.
Baseline first, then the limit. This is not our saying but a direct recommendation of the manual: as long as it is unknown how much the address sends without a limit, any number will turn out either unreachable or slowing things down for nothing.
How to calculate. Take the daily volume you plan from this address and spread it over the sending window, not over the whole day: three thousand messages from eight in the morning to eight in the evening is 250/h, not 125/h. The number here is not multiplied by anything, so it is easier to calculate than a queue rate.
The denominator accepts a multiplier. N/[M]unit: 100/15m means a hundred messages in fifteen minutes, 83/5s — eighty-three in five seconds. The multiplier appeared in PowerMTA 5; earlier versions only allow 100/m. It is useful when the natural window does not fit a minute or an hour.
About 0. The syntax allows it as a separate value, but what exactly it does the manual does not explain — by the grammar it is a zero rate, that is, sending from the address stops. Try it on a test bench, not on a production address.
# two limits in one block — they are about different things <virtual-mta mta-news-1> smtp-source-host 1.2.3.4 news1.example.com max-smtp-msg-rate 3000/h <domain *> max-msg-rate 500/h </domain> </virtual-mta>
what people get wrong and how it ends3 mistakes▶
§ 3.3.12.2
§ 3.3.13
§ 3.3.12.2
2 relations
pmta show vmta-settings mta-news-1 pmta show vmtas
3 articles
◇Four ways to say “slower”Messages, data volume, connection rate and number of connections — each has its own limit, and each has a “per source address” variant and a backoff mode twin.◇A queue is a receiving server together with a sending addressThe engine groups messages by the “recipient domain plus sending address” pair: one domain from two addresses is two independent queues with their own counters, connections and mode.◇Three pool rules the manual states directlyRotation-based distribution, inheritance of settings by members with the member’s own values overriding, and a namespace shared with sending addresses.