<domain>deprecated
The line limited the message rate to the receiver per hour. The manual gave it a one-sentence section — “deprecated, use max-msg-rate” — and gives no syntax or default for it.
The replacement differs in that the interval moved into the value. In max-msg-rate it is written as the denominator: 500/h — the same five hundred messages per hour, 500/d — per day, 100/15m — a hundred per fifteen minutes. The old name gave no such choice: the hour was the only one.
What the replacement counts. Not only delivered messages count, but attempts too: a temporary failure from the receiver uses the limit on a par with an accepted message. A triggered limit is visible in the web monitor as the line message rate limit reached (based on max-msg-rate in configuration) — it immediately shows which of four similar directives held sending back.
The migration is mechanical. max-msg-per-hour N becomes max-msg-rate N/h. The same value, the same behavior — only the notation changes.
The line is worth looking for in configurations assembled by hand before the move to the Hub: the engine accepts it, and next to the new form in the same file it reads as a second setting that does not exist.
What to set. Nothing: the line should be replaced.
| Value | When |
|---|---|
| do not write | always: the rate is set by the replacement |
| N | only in an old configuration that has not been migrated yet |
Migration. The number carries over as is, with /h appended. If after migration you want a different window, that is what the denominator is for: a day, a minute, fifteen minutes.
# this is how it was written before — the hour was the only window <domain yahoo.com> max-msg-per-hour 500</domain> # this is how it is written now — the window is chosen by the denominator <domain yahoo.com> max-msg-rate 500/h </domain>
what people get wrong and how it ends3 mistakes▶
§ 3.3.10.40
§ 3.3.10.42
§ 3.3.10.40
2 relations
grep -rn 'max-msg-per-hour\|max-msg-rate' /etc/pmta/ pmta show settings yahoo.com/mta-news-1
3 articles
◇Accept, route, deliverA message’s path inside the node: accept, decide where, deliver — and all the settings live between these three steps.◇Four value types the whole config is written inBoolean, domain pattern, regular expression and time interval — defined once in § 3.2 and then used by all directives.◇Reloading settings versus restarting the serviceThe configuration is read at startup, and after that edits are picked up by the reload command — except for the directives the manual marks as requiring a restart.