450 4.7.1
communication
runtime_error
ai_generated
true
450 4.7.1 Requested action not taken: rate limit exceeded
ID: communication/smtp-rate-limit-exceeded
82%Fix Rate
84%Confidence
1Evidence
2023-07-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| Postfix 3.7 | active | — | — | — |
| Exim 4.96 | active | — | — | — |
| Sendmail 8.17 | active | — | — | — |
Root Cause
The SMTP server has a per-connection or per-sender rate limit that has been exceeded, often due to sending too many emails in a short period.
generic中文
SMTP 服务器每连接或每发件人的速率限制已超出,通常由于短时间内发送过多邮件。
Official Documentation
https://tools.ietf.org/html/rfc5321#section-4.2.5Workarounds
-
82% success Implement exponential backoff with jitter: wait 2^retry seconds + random(0-1s) before retrying. Example in Python: `time.sleep(min(2**attempt + random.uniform(0, 1), 60))`.
Implement exponential backoff with jitter: wait 2^retry seconds + random(0-1s) before retrying. Example in Python: `time.sleep(min(2**attempt + random.uniform(0, 1), 60))`.
-
78% success Throttle sending rate to N emails per second per connection (e.g., 10 emails/s) using a token bucket algorithm.
Throttle sending rate to N emails per second per connection (e.g., 10 emails/s) using a token bucket algorithm.
中文步骤
Implement exponential backoff with jitter: wait 2^retry seconds + random(0-1s) before retrying. Example in Python: `time.sleep(min(2**attempt + random.uniform(0, 1), 60))`.
Throttle sending rate to N emails per second per connection (e.g., 10 emails/s) using a token bucket algorithm.
Dead Ends
Common approaches that don't work:
-
70% fail
Increasing connection pool size without throttling may hit per-sender limit faster.
-
90% fail
Switching to a different SMTP port (e.g., 587 vs 465) doesn't bypass rate limits.
-
60% fail
Adding more sender addresses without reducing per-address rate still triggers limits on each.