<virtual-mta>
How much data the sending address will transfer per interval — in total, across all receivers at once. The other limits in the family count messages and recipients; this one counts bytes and therefore behaves differently: the same thousand messages will use it up differently if the messages differ in size.
Only what is delivered counts. The manual says so directly: the volume of successful deliveries is counted toward the limit. Bounces, retries and broken transfers bypass the counter, so the actual outgoing traffic from the node can be noticeably higher than what is allowed here.
The volume unit is written right in the value. b — bytes, k — kilobytes, m — megabytes, g — gigabytes, t — terabytes; without a suffix the number is taken as bytes. The denominator is d, h, m, s with an optional multiplier: 6g/10h is six gigabytes per ten hours.
It counts the address as a whole, not a queue. The neighbor in meaning max-data-volume-rate lives in the receiver block and limits one queue: with ten receivers it allows ten times what is written. There is no multiplication here — as much as is specified is what leaves the whole address.
The Hub holds the daily warm-up quota with its scheduler and counts it in messages, not in bytes: the plan knows how many messages to hand over today, can stop on the spam share and swap in an address from the reserve pool. A byte ceiling cannot do that — it will simply hold back the transfer without telling the plan anything. So the quota lives upstairs, and the engine gets the queue rate — max-msg-rate in the <domain> block inside the address.
Set it when the bottleneck is the channel, not the receiver. A byte ceiling fits where the node shares the bandwidth with something else or where the provider meters traffic. For deliverability it is almost useless: receivers look at messages and complaints, not at megabytes.
Recalculate it when templates change. The value is tied to the average message size, and a layout edit changes that size silently. It is wiser to take a margin of one and a half to two times the calculated volume than to fit the number tightly.
Do not confuse it with a daily quota. Bytes per hour do not replace a plan of “so many messages a day”: the limit stretches sending out, but it does not know how many messages are left and will not stop a mailing if the receiver has started complaining.
About 0. The syntax allows it as a separate value, but the manual does not explain what it does. By the grammar it is zero volume, that is, sending from the address stops; check it on a test bench.
# two ceilings of one address: one in messages, the other in bytes <virtual-mta mta-news-1> smtp-source-host 1.2.3.4 news1.example.com max-smtp-msg-rate 3000/h max-smtp-data-volume-rate 6g/10h</virtual-mta>
what people get wrong and how it ends3 mistakes▶
§ 3.3.12.3
§ 3.3.12.3
§ 3.3.13
4 relations
max-smtp-msg-rate<virtual-mta>The same address ceiling, only in messages. § 3.3.12.2
pmta show vmta-settings mta-news-1
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.