Per-ISP rate limits enforced
Why it matters
Mailbox providers impose strict per-IP connection and message limits that differ significantly: Gmail accepts roughly 250 SMTP connections per hour from a new IP, Yahoo and AOL limit to around 20 connections per hour per IP, and Outlook uses session-based hourly quotas. RFC5321-s4.5.3 makes clear that exceeding these limits results in 421 temporary deferrals. When all recipients are throttled identically — ignoring which ISP is receiving — the system will inevitably over-deliver to restrictive providers, accumulating 421 responses that reduce effective throughput and signal poor sending behavior, eroding IP reputation at the exact providers where limits are tightest.
Severity rationale
High because ISP-agnostic throttling causes 421 deferrals and throughput reduction at Yahoo and Outlook specifically, where per-IP limits are tightest, with repeated deferrals contributing to IP reputation degradation.
Remediation
Map receiving domain to ISP and enforce per-ISP limits before dispatching. This configuration covers the three mailbox providers responsible for the majority of consumer email:
const ISP_LIMITS: Record<string, { maxPerHour: number; maxConcurrent: number }> = {
'gmail.com': { maxPerHour: 250, maxConcurrent: 10 },
'yahoo.com': { maxPerHour: 100, maxConcurrent: 5 },
'aol.com': { maxPerHour: 100, maxConcurrent: 5 },
'outlook.com': { maxPerHour: 150, maxConcurrent: 8 },
'hotmail.com': { maxPerHour: 150, maxConcurrent: 8 },
'live.com': { maxPerHour: 150, maxConcurrent: 8 },
'default': { maxPerHour: 200, maxConcurrent: 10 },
}
export function getIspLimit(recipientDomain: string) {
return ISP_LIMITS[recipientDomain.toLowerCase()] ?? ISP_LIMITS['default']
}
Bucket your queue workers by recipient ISP and apply a Bottleneck or similar rate limiter per bucket. Cross-reference deliverability-engineering.sending-throttling.adaptive-throttling — per-ISP limits are the static floor; adaptive throttling handles dynamic 4xx signals on top.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Deliverability Engineering Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · RFC5321-s4.5.3 — SMTP — Sizes and Timeouts (connection-level rate guidance)
- iso-25010:2011 · performance-efficiency — ISO 25010 Performance Efficiency characteristic
Taxons
History
- 2026-04-18·v1.0.0·Initial import from deliverability-engineering·automated