Email throttling — controlling the rate at which messages are injected into the delivery queue and the rate at which the MTA attempts delivery to each destination ISP — is one of the most technically nuanced aspects of high-volume email infrastructure management. Too much throttling and campaigns take 24+ hours to deliver, missing time-sensitive commercial windows. Too little throttling and ISP rate limits generate cascading 4xx deferrals that degrade delivery quality, delay campaigns, and can trigger ISP-level throttle blocks that take hours or days to clear. This guide covers the configuration, monitoring, and optimisation of email throttling for production commercial sending infrastructure.
Why Throttling and Rate Limiting Matter
ISPs limit how many connections and messages per second, hour, or day they accept from a single sending IP or domain. These limits serve two purposes: protecting ISP infrastructure from being overwhelmed by high-volume senders, and providing a lever to control senders whose reputation or complaint rates suggest their traffic is unwanted. When a sender exceeds an ISP's rate limit, the ISP responds with 4xx temporary rejection codes that tell the sending MTA to try again later. The MTA queues the deferred messages and retries on a schedule — but if the retry rate also exceeds the limit, messages can accumulate in the queue, creating delivery backlogs that extend campaign delivery windows from hours to days.
The correctly throttled MTA delivers campaigns in predictable, finite windows by matching its delivery rate to what each destination ISP will accept without generating significant 4xx deferrals. This requires knowing (or learning empirically) the per-ISP rate limits and configuring the MTA's per-domain connection and message rate settings accordingly.
ISP Rate Limits: What Each Major ISP Allows
ISP rate limits are not publicly documented and vary based on sender reputation — senders with High Gmail domain reputation receive significantly more generous rate limits than new or low-reputation senders. The following are empirical observations from production sending at established reputation levels, not guaranteed limits:
| ISP | Max concurrent connections | Max messages/connection | Daily IP ceiling | Throttle code |
|---|---|---|---|---|
| Gmail (google.com) | 15-20 | Unlimited (within rate) | ~2M per IP (High rep) | 421 4.7.0 |
| Yahoo / AOL | 10-15 | 100-500 | ~500K-1M per IP | 421 4.7.0 (TS01, TS02) |
| Microsoft (outlook.com/M365) | 10-12 | 100-500 | ~500K per IP (SNDS Green) | 421 4.7.0 |
| Apple iCloud | 5-10 | 100 | ~100K per IP | 421 |
| GMX / Web.de | 8-10 | 50-100 | ~200K per IP | 421 |
| Orange / La Poste | 5-8 | 50 | ~100K per IP | 421 |
These limits apply at established High or Medium reputation levels. New IPs or IPs with low reputation face significantly lower limits — 50-200 messages per hour at Gmail, 10-50 per hour at Yahoo — during the reputation-building phase. The rate limits described above represent the operational ceiling that well-warmed, high-reputation IPs can sustain without generating significant 4xx deferral rates.
PowerMTA Throttling Configuration
PowerMTA provides the most granular per-domain throttling control of any commercial MTA through its domain block configuration. Each domain block defines the delivery parameters for messages destined to that domain — number of concurrent SMTP connections, messages per connection, message rate per unit time, and retry behaviour:
<!-- /etc/pmta/config -- PowerMTA domain block for Gmail --> <domain gmail.com> max-smtp-out 20 <!-- Max concurrent SMTP connections --> max-msg-per-connection 500 <!-- Max messages per connection --> max-msg-rate 50/s <!-- Message rate cap: 50 messages/second --> retry-after 20m <!-- Base retry wait after 4xx --> retry-after-network 5m <!-- Retry after network error (connection refused) --> max-msg-rate-sustained 3000/h <!-- Sustained hourly rate (overall IP ceiling) --> bounce-handling-id gmail_bounces </domain> <!-- Yahoo domain block --> <domain yahoo.com> max-smtp-out 12 max-msg-per-connection 300 max-msg-rate 30/s retry-after 30m max-msg-rate-sustained 1500/h </domain> <!-- Microsoft domain block --> <domain hotmail.com> max-smtp-out 10 max-msg-per-connection 200 max-msg-rate 20/s retry-after 30m max-msg-rate-sustained 1200/h </domain> <domain outlook.com> use hotmail.com </domain> <domain live.com> use hotmail.com </domain>
The max-msg-rate-sustained parameter is the most important for preventing ISP rate limit events — it caps the total messages per hour to a level below the ISP's sustained rate limit. Without this parameter, PowerMTA can burst at max-msg-rate (50 messages/second = 180,000 per hour) until the ISP rate limiter triggers, then defer messages while waiting for the retry window. With max-msg-rate-sustained set to a value below the ISP's limit, the MTA self-limits and avoids the deferred message accumulation that causes delivery backlogs.
Handling 4xx Deferrals: The Backoff Strategy
When an ISP returns a 4xx temporary rejection, the MTA must wait before retrying — and the retry wait should increase progressively with each successive deferral (exponential backoff). Aggressive retry behaviour — retrying every 5 minutes after a rate limit deferral — continues to consume the ISP's rate limit and generates more deferrals, potentially triggering a longer-duration throttle block that the ISP applies to overwhelm-avoiding senders.
The correct 4xx handling strategy:
# PowerMTA retry configuration in domain block: retry-after 20m # First retry: 20 minutes after initial deferral # After first retry failure, PowerMTA automatically backs off exponentially: # Second retry: 40 minutes # Third retry: 80 minutes # Fourth retry: 160 minutes (approximately 2.7 hours) # ... continuing until maximal-backoff or queue-lifetime is reached # Global retry settings: <global> bounce-after 5d # Give up after 5 days of retry attempts retry-after 20m # Default retry for domains without specific block max-msg-rate-retry 1/m # During retry, send max 1 message/minute per connection </global>
Specific 4xx codes from major ISPs and their recommended response: Gmail 421 4.7.0 (general rate limit) — back off 20-30 minutes, reduce max-smtp-out by 25% until rate normalises. Yahoo 421 4.7.0 TS01 (domain reputation throttle) — back off 30-60 minutes; TS01 specifically indicates domain reputation concerns beyond just rate limiting. Yahoo 421 4.7.0 TS02 (sending too fast) — back off 15 minutes, reduce message rate. Microsoft 421 4.7.0 (general limit) — back off 15-30 minutes. Most 4xx codes from legitimate ISPs are transient — they clear within 1-4 hours with appropriate backoff.
Queue Management During Rate Limiting Events
When rate limiting events cause messages to accumulate in the delivery queue, active queue management prevents the backlog from growing uncontrolled and ensures time-sensitive messages (transactional email) are delivered preferentially over less urgent marketing messages:
Message priority in PowerMTA: Use priority settings in the virtual MTA configuration to ensure transactional messages (password resets, order confirmations) have higher delivery priority than marketing campaigns. Higher-priority messages are dequeued and delivered first when connections become available, preventing marketing campaign backlogs from delaying transactional email delivery.
Queue monitoring: Monitor the queue depth per destination domain in real time. A queue depth that is growing (more messages entering than leaving) for a specific ISP domain indicates the current throttle settings are above what that ISP is accepting. Reduce the domain block's max-msg-rate-sustained and max-smtp-out settings immediately to stop the queue from growing further, then investigate whether the ISP is signalling a rate limit or a reputation issue through its 4xx response text.
Campaign cancellation: For time-sensitive campaigns that have missed their delivery window due to a rate limiting event, PowerMTA allows queue flushing — removing all queued messages for a specific campaign ID from the delivery queue. If a promotional campaign that was intended to deliver by 10 AM is still in queue at 4 PM due to rate limiting, flushing the queued campaign messages and re-evaluating the campaign strategy is preferable to delivering a time-expired promotion hours after the intended window.
Postfix Rate Limiting Configuration
Postfix provides less granular throttling control than PowerMTA but offers the basic per-domain concurrency and rate limiting that prevents the most severe ISP rate limiting events:
# /etc/postfix/main.cf — per-domain concurrency and rate limits # Default limits for all domains default_destination_concurrency_limit = 5 default_destination_rate_delay = 0s # Per-domain overrides (must be defined in transport_maps or main.cf) gmail.com_destination_concurrency_limit = 15 yahoo.com_destination_concurrency_limit = 10 hotmail.com_destination_concurrency_limit = 8 outlook.com_destination_concurrency_limit = 8 # Message throughput limiting (throttle at queue level) # Use anvil rate limiting for per-IP sending rates: smtpd_client_message_rate_limit = 100 # Max messages per client per throttle period anvil_rate_time_unit = 60s # Count period (60 seconds) # Retry configuration maximal_queue_lifetime = 5d minimal_backoff_time = 300s # 5-minute minimum between retries maximal_backoff_time = 14400s # 4-hour maximum backoff (doubles from minimal each failure) queue_run_delay = 300s # Check deferred queue every 5 minutes
Throughput Math: Planning Campaign Delivery Windows
Planning how long a campaign will take to deliver requires calculating effective throughput per ISP based on throttle settings and the ISP distribution of the sending list. Example calculation for a 500,000-recipient list with typical consumer ISP distribution:
| ISP | Estimated recipients | Sustained hourly rate | Delivery time |
|---|---|---|---|
| Gmail | 200,000 (40%) | 3,000/hour | ~67 hours |
| Yahoo/AOL | 100,000 (20%) | 1,500/hour | ~67 hours |
| Microsoft | 100,000 (20%) | 1,200/hour | ~83 hours |
| Others | 100,000 (20%) | 1,000/hour (aggregate) | ~100 hours |
This calculation shows that with conservative throttle settings, a 500K-recipient campaign would take 67-100 hours to complete delivery — clearly unacceptable for time-sensitive promotions. The solution: either increase the per-IP throughput ceiling (requiring additional IPs if the ISP limit per IP is already being reached) or use multiple IPs in rotation across the campaign to multiply the effective throughput. With 4 sending IPs delivering to Gmail simultaneously, the effective Gmail throughput is 4 × 3,000 = 12,000/hour, reducing the Gmail delivery time to ~17 hours. Multi-IP rotation is the standard approach for large-volume commercial senders who need campaigns to complete within 4-8 hour windows.
Monitoring Rate Limiting Events
Throttling and rate limiting monitoring focuses on the deferral rate per destination ISP — the fraction of delivery attempts that result in 4xx responses rather than successful delivery. A healthy deferral rate (less than 10% at any major ISP) indicates the throttle settings are correctly calibrated below the ISP's rate limit. An elevated deferral rate (above 20%) at a specific ISP indicates either the throttle settings are too aggressive for the current sending volume/reputation or the ISP is applying non-standard restrictions due to reputation concerns.
PowerMTA's real-time dashboard and accounting log provide per-ISP deferral rate data. Parse the accounting log for 4xx events grouped by destination domain to identify which ISPs are generating elevated deferrals. A script that summarises the accounting log hourly and alerts when any ISP's deferral rate exceeds 15% provides the monitoring visibility needed to catch throttling issues before they cause significant campaign delivery delays.
Throttling configuration is an ongoing calibration exercise — the correct settings for today's sending volume and reputation may not be the correct settings after an IP warming event, a reputation change, or a volume increase. Establish a quarterly review of per-ISP deferral rates from the accounting log and adjust domain block settings when the data indicates miscalibration. The MTA that is continuously calibrated to actual ISP behaviour delivers campaigns faster, more reliably, and with fewer delivery anomalies than one configured once and left unchanged as the programme evolves.
Throttling vs Deliverability: The Relationship
Throttling and deliverability are related but distinct concerns. Throttling addresses delivery speed and queue management -- how quickly messages are delivered and how the MTA handles ISP rate limits. Deliverability addresses inbox placement -- whether delivered messages land in the inbox or spam folder. A poorly throttled MTA can deliver messages slowly (campaign takes 48 hours to complete) without any deliverability problem (all delivered messages land in the inbox). A well-throttled MTA can deliver messages quickly and still have poor inbox placement if the domain reputation is low. Both must be correctly managed; they do not substitute for each other.
The connection between throttling and deliverability: a MTA that generates excessive 4xx deferrals by sending too aggressively is signalling to ISPs that it does not respect rate limits -- which some ISPs treat as a negative reputation signal in addition to the rate limiting response. A sender that consistently respects ISP rate limits (by throttling correctly) builds a pattern of cooperative behaviour that ISPs can recognise and reward with more generous rate limits over time. The reputation benefit of correct throttling is indirect and gradual, but it is real -- and it compounds with the direct commercial benefit of predictable, fast campaign delivery windows that correctly calibrated throttling provides.
Configure throttling based on observed deferral rates, not theoretical ISP limit assumptions. Start conservatively (lower concurrency and message rates than the ISP's maximum), observe deferral rates from the accounting log, and increase limits incrementally until deferral rates rise above 5-10%. That observed threshold is the programme's practical ISP rate limit -- and staying comfortably below it through correct throttle configuration is the operational discipline that makes large-scale commercial email delivery reliable and predictable.