Knowledge base

PMTA knowledge base›Block <domain>›Directive§ 3.3.10.44

max-data-volume-rate

<domain>set by the Hub

How many bytes per interval, counting only successful deliveries
in the configuration this is a linemax-data-volume-rate unlimitedinside the block <domain>
A limit by volume, not by number of messages

How many bytes per unit of time go to this recipient. It is needed where messages are heavy: a hundred one-megabyte messages load a receiver differently than a hundred ten-kilobyte ones, and max-msg-rate does not see that difference.

Only successful deliveries are counted — unlike the message limit, where failed attempts use it up too. That is what the manual says, and it makes the directive an honest measure of traffic handed over.

The main trap. A volume limit silently limits the number of messages too if messages are heavy — and vice versa. When both limits are set, whichever is hit first applies, and in the monitor it looks the same: the queue is held back without refusals.
What the Hub does. It does not set it by default: with ordinary messages the message limit is reached first. The directive is needed for mailings with attachments, and there the value is calculated from the message size and the target rate.
Recommended values

It counts only what is delivered. Retries and broken transfers fall outside the count: the actual outgoing traffic ends up above the allowed amount, and the more so the higher the share of failures.

It is needed where messages are heavy. With ordinary messages the count limit is reached first, and the byte limit plays no part. It starts to matter for mailings with attachments and heavy layouts.

Recalculate it when templates change. The value is tied to the average message size, and a layout edit changes that size silently.

The advice to recalculate when the layout changes is ours. From the manual here come the value grammar with units, the unlimited default and the fact that only the volume of successful deliveries counts.
Example configuration
# a byte limit next to a message limit
<domain *>
    max-msg-rate 500/h
    max-data-volume-rate 2g/h</domain>
Whichever is reached first applies. With an average message of 60 KB, five hundred messages are about 30 MB, so sending will hit the upper line. The lower one becomes the bottleneck only when a message grows almost seventy times heavier — up to four megabytes.
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 ends2 mistakes▶

Limiting traffic with this line

§ 3.3.10.44

What it costsOnly successfully delivered volume counts. The limit does not see retries and broken transfers — the actual traffic ends up above the allowed amount.
How to spot itThe provider shows a volume above the set ceiling; the gap grows with the share of failures.
How to do it rightLimit the channel with the node’s own means. This limit is about what was delivered, not what was transferred.

Setting the limit for ordinary messages

§ 3.3.10.44

What it costsThe message limit is reached first, and the byte limit plays no part. The line is there, but the behavior is the same — and this is taken for a non-working setting.
How to spot itA byte limit is set, and it has never fired.
How to do it rightEstimate: the number of messages times the average size. If the result is well below the limit, the line is superfluous.
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-data-volume-rate <rate>
Values
unlimited · 0 · N with a unit b|k|m|g|t and a denominator /[X] and d|h|m|s — for example 6g/10h
Default
unlimited § 3.3.10.44
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<domain>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
It merges across matching <domain> blocks from general to specific and across the node, pool and sending address levels. Like the other queue limits, it goes to each pair separately. It is picked up by pmta reload.
How to check on the node
The effective value is printed by the queue settings command:
pmta show settings gmail.com/mta-news-1
The max-data-volume-rate line in the queue settings. A volume ceiling for a whole sending address is a different directive, and it is visible only in the address settings.
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