Traffic Shaping
What Is Traffic Shaping?
Traffic shaping is the practice of controlling the rate, timing, and distribution of your outbound email to match the acceptance capacity and preferences of each receiving mailbox provider.
Without traffic shaping, a sender blasting 500,000 emails at maximum speed will overwhelm receiving servers, trigger rate limits, and see a significant portion of messages deferred or rejected. With proper traffic shaping, the same 500,000 emails deliver smoothly because they arrive at a pace each provider is willing to accept.
Traffic shaping operates at two levels:
- Connection management — How many simultaneous SMTP connections you open to each provider
- Message rate control — How many messages per minute/hour you send to each provider
Why Providers Throttle
Mailbox providers impose rate limits for several reasons:
Resource protection: Each incoming SMTP connection consumes server resources. A sender opening 100 simultaneous connections monopolizes resources that could serve other senders.
Spam prevention: Spammers send as fast as possible. Legitimate senders can afford to pace their delivery. Rate limiting forces all senders to slow down, disproportionately impacting spam operations.
Reputation evaluation: When a provider defers a message with a 4xx code and asks you to retry later, they’re buying time to evaluate your reputation. The retry pattern itself becomes a signal — legitimate MTAs retry gracefully; spam bots either don’t retry or retry aggressively.
Volume anomaly detection: If your usual daily volume is 10,000 and you suddenly try to deliver 100,000, the spike itself is suspicious regardless of content quality. Throttling limits the damage from compromised accounts or sudden sending of bad lists.
Understanding Provider Rate Limits
Gmail
Gmail’s rate limits are dynamic and based on sending reputation:
| Sender Reputation | Approximate Limits |
|---|---|
| New/Unknown IP | ~20 messages/min, 2–5 connections |
| Low reputation | ~50 messages/min, 5–10 connections |
| Medium reputation | ~200 messages/min, 10–20 connections |
| High reputation | ~500+ messages/min, 20+ connections |
Gmail-specific behaviors:
- Gmail responds with 421 when you exceed rate limits (deferral, not rejection)
- Limits apply per IP address — multiple IPs can deliver in parallel
- Gmail doesn’t publish exact limits; they adjust dynamically
- Repeated rate limit violations can reduce your limit further
Microsoft
Microsoft (Outlook.com, Hotmail, Live) rate limits:
| Scenario | Behavior |
|---|---|
| New IP | Very restrictive — 5–10 messages/min |
| Established IP | Higher limits based on reputation |
| Volume spike | Immediate throttling with 421 responses |
Microsoft-specific behaviors:
- Microsoft is more aggressive than Gmail in rate limiting new IPs
- SNDS status correlates with rate limit generosity
- Microsoft tends to defer with 421 before blocking with 550
Yahoo
Yahoo has the most aggressive rate limiting:
| Scenario | Behavior |
|---|---|
| Unknown sender | Very low limits — 2–5 connections |
| Known sender | Higher but still conservative |
| Volume spike | Aggressive deferral or temporary blocking |
Yahoo-specific behaviors:
- Lower per-IP connection limits than Gmail or Microsoft
- Sensitive to connection patterns (too many connection attempts, even if below message limits)
- Tends to block entire IP ranges when one IP misbehaves (shared IP risk)
Implementing Traffic Shaping
MTA Configuration
Most MTAs (Postfix, PowerMTA, Momentum, Halon) support per-domain delivery settings:
Key parameters to configure per destination domain:
Maximum concurrent connections: How many simultaneous SMTP connections your MTA can open to one domain’s MX servers.
# Example: Postfix-style configuration concept
# Gmail: up to 20 concurrent connections
# Yahoo: up to 5 concurrent connections
# Microsoft: up to 10 concurrent connections
Maximum messages per connection: How many messages to send before closing and re-opening a connection. Some providers prefer short-lived connections (10–50 messages), while others are fine with long-lived connections (100+).
Maximum messages per hour/day: A hard cap on total messages to a specific domain within a time period. This is your safety net against accidental over-delivery.
Retry schedule: When a message is deferred (4xx response), how long to wait before retrying:
- First retry: 15 minutes
- Second retry: 30 minutes
- Third retry: 1 hour
- Subsequent retries: exponential backoff up to 4 hours
- Maximum retry period: 48–72 hours
Connection pooling: Reusing established SMTP connections for multiple messages is more efficient than opening a new connection per message. Most providers prefer connection reuse within reasonable limits.
Adaptive Throttling
Modern MTAs (PowerMTA, Momentum) and ESPs implement adaptive throttling — automatically adjusting sending rates based on provider responses:
How it works:
- Start at a baseline sending rate
- Monitor response codes from the receiving server
- If receiving 2xx (success): maintain or increase rate
- If receiving 4xx (deferrals): decrease rate and extend retry intervals
- If receiving 5xx (blocks): stop sending and alert
- Gradually increase rate when deferrals resolve
Benefits:
- No manual tuning required per provider
- Automatically adapts to changing provider limits
- Prevents over-delivery during reputation fluctuations
- Maximizes throughput within provider tolerance
Time-Based Distribution
Spreading sends across time windows improves delivery:
Instead of: 9:00 AM → Blast 200,000 emails in 30 minutes
Do this:
- 9:00 AM → Send 50,000
- 10:00 AM → Send 50,000
- 11:00 AM → Send 50,000
- 12:00 PM → Send 50,000
Or even better, continuous drip:
- 9:00 AM–5:00 PM → Send ~25,000 per hour
This approach:
- Avoids per-hour rate limits at any single provider
- Creates a smoother volume profile (less suspicious to providers)
- Distributes server load more evenly
- Allows time to detect and respond to problems before the full campaign is sent
Queue Management
Queue Monitoring
Your MTA’s message queue is the buffer between your sending intent and actual delivery. Monitor it closely:
Healthy queue indicators:
- Queue drains steadily (messages leaving the queue at a consistent rate)
- Queue size peaks after a campaign send and returns to near-zero within 2–4 hours
- Deferred messages in the queue eventually deliver (queue shrinks over time)
Unhealthy queue indicators:
- Queue grows continuously without draining → Delivery rate is lower than sending rate
- Large number of messages stuck in “deferred” state → Provider is throttling you
- Messages aging beyond 24 hours in queue → Delivery problems need investigation
Queue Prioritization
Not all messages are equally urgent. Configure your MTA to prioritize:
Priority 1: Transactional email Password resets, order confirmations, two-factor authentication codes. These must deliver within seconds. They should bypass marketing queues entirely.
Priority 2: Triggered/automated email Welcome emails, abandoned cart reminders, behavior-based triggers. Timely but not instant.
Priority 3: Marketing campaigns Newsletters, promotions, announcements. Can be spread across hours without impact.
Priority 4: Re-engagement/bulk Win-back campaigns, list-wide announcements. Lowest priority, most tolerant of delays.
Deferred Message Handling
When messages are deferred:
- Your MTA moves them to a retry queue
- Retries happen at increasing intervals (exponential backoff)
- After the maximum retry period, undeliverable messages are reported as failed
Best practices:
- Don’t increase retry aggressiveness when deferral rates spike (this makes it worse)
- Allow the provider’s rate limit to relax before retrying
- Monitor the retry queue for patterns (same provider, same error, same time of day)
- If a significant portion of deferred messages never deliver, investigate the root cause
Traffic Shaping for Shared IPs
If you’re on a shared IP (common with ESPs), traffic shaping is largely managed by the ESP. However, you can influence it:
What you control:
- Send timing (don’t send at peak hours when other senders are also sending)
- Volume spikes (gradual increases are better than sudden blasts)
- List quality (your poor list quality affects the shared IP’s reputation)
What your ESP controls:
- Per-provider rate limits for the shared IP
- Connection management
- QueuePriorityization across senders
When shared IP throttling becomes a problem: If your ESP’s shared IP is being throttled by a provider, and it’s affecting your delivery:
- Ask your ESP about the IP’s current reputation status
- Request moving to a different shared IP pool or a dedicated IP
- Consider a dedicated IP if your volume justifies it (50,000+/month)
Monitoring Traffic Shaping Effectiveness
Metrics to Track
| Metric | Healthy | Investigate |
|---|---|---|
| Deferral rate (overall) | < 5% | > 5% |
| Deferral rate (per provider) | < 10% | > 10% |
| Average queue age | < 2 hours | > 4 hours |
| Queue size trend | Draining | Growing |
| Retry success rate | > 90% | < 80% |
| Messages exceeding 24h in queue | < 1% | > 2% |
Provider Response Monitoring
Track the distribution of response codes per provider over time:
- 2xx trending up: Delivery improving, throttling decreasing
- 4xx trending up: Provider is throttling more aggressively — check reputation
- 5xx trending up: Move from throttling to blocking — reputation problem
- Connection errors trending up: Network or IP-level blocking
Traffic shaping is operational infrastructure that sits between your sending intent and the receiving provider’s willingness to accept. Getting it right means maximizing delivery speed while staying within each provider’s comfort zone. Getting it wrong means wasted retries, delayed delivery, and escalating reputation damage. Invest in proper traffic shaping configuration once, monitor it continuously, and adjust as your volume and provider relationships evolve.