Rate Limits
What it does
Operator-defined rate limits, enforced live — no config rebuild. Each rule is a leaky bucket keyed by whatever selector you choose: a sending IP, an ASN, a sender domain, or an authenticated user.
The live viewer shows who is throttled right now, in readable form rather than as an opaque hash, and lets you release a bucket for a sender who tripped a limit they shouldn't have.
Adaptive limits and outbound caps
A fixed rate is a blunt instrument: the right limit for a bulk sender is wrong for everyone else. Adaptive mode holds each selector value to its own learned baseline, with your configured rate as the cold-start fallback until that baseline exists.
The obvious application is outbound abuse: cap each authenticated user at a sane hourly volume, and a compromised account stops being an open relay before anyone notices the password was stolen.

Example: a compromised account, contained
An outbound rule caps each authenticated user at 200 messages per hour. A phished account starts sending at 4,000/hour at 0300. The bucket fills within minutes and the rest is throttled; the live viewer names the account. The operator releases the bucket after the password reset. No config file was edited, and no other user was affected.



