<source>set by the Hub
The default is unlimited, that is, brute-forcing is not limited by anything. The value 0 means the same. The manual names the purpose directly: protection against password guessing.
The value is a rate: 5/min allows five failed attempts per minute. The syntax is shared with the other rate limits: N/[M]unit, where N is mandatory and non-zero, and M is optional and defaults to 1. The units are d/day, h/hr, m/min, s/sec.
The count starts from the first failure, not the last. The manual walks through an example: with 3/5m, failed attempts at 10:00, 10:01 and 10:02 close logins until 10:05 — five minutes from the first.
The manual also sets a condition: the directive applies only where login is required by the require-auth line. Engine 6.0 applies the threshold without it as well — verified on a Hub node (see below).
The second half is where the line goes. A failed attempt happens before the sender is identified, which means the named login source has not been chosen yet. The directive can work only in the block matched by address. In a named one it is useless.
The place is chosen correctly: a failed login happens before the named login source is selected. The Hub does not write require-auth into 0/0 — the node accepts complaints and bounces, which do not log in, through this same block. The threshold still works: on node 45.134.12.126 the log for Sep 15, 2026 has 13,348 refusals marked <source> smtp-max-auth-failure-rate reached, and there are no more than five failed attempts from one address per minute.
What to set. The threshold is chosen by how many failures your own clients have:
| Value | When |
|---|---|
| unlimited (default) | the submission port is restricted by range, and an outsider cannot reach it |
| 5/m | regular submission: your own platform errs rarely and not in a row |
| 3/5m | the port is open to the whole network, there are few logins, and passwords change rarely |
A threshold that is too strict is dangerous for your own platform: a restart after which it tries to log in several times in a row will close logins for the whole period. The count starts from the first failure, so the period is exactly the downtime.
# both lines in the address block: before login the named source has not been chosen <source 0/0> require-auth true smtp-max-auth-failure-rate 5/m</source>
what people get wrong and how it ends3 mistakes▶
§ 3.3.7.8
§ 3.3.7.8
our experience
2 relations
grep -n 'smtp-max-auth-failure-rate\|require-auth' /etc/pmta/config grep -i 'auth' /var/log/pmta/pmta.log | tail -20
3 articles
◇How the node selects a source and combines its settingsA connection falls under all source blocks whose addresses cover it, and they act merged — the narrow one overrides the wide one; named blocks are attached only by direct reference.◇Submission logins, plain-text passwords and per-user settingsA sender logs in with one of three methods; each login is a configuration block with a plain-text password, and that login’s named source overrides what its address would have given.◇A license for a fleet, not for a serverThe license is not bound to a server: it is installed on as many machines as the instance limit allows, and the nodes send volume statistics to the vendor every hour.