Traffic Shaping
Control sending speed and patterns to stay within mailbox provider thresholds.
Traffic shaping means controlling how fast, when, and in what order your email leaves your server, so each mailbox provider gets it at a pace it accepts. Send too fast and providers tell you to “try again later”, your mail piles up, and your reputation suffers. This article explains why providers slow senders down, how to set limits for each one, and how to read your mail queue.
What traffic shaping is
Say a shop sends a 500,000-email newsletter at full speed. It hits rate limits (caps on how much one sender can deliver in a given time). Many messages get deferred: the receiving server asks you to retry later. Some get rejected. The same newsletter, sent at a steady pace, arrives smoothly.
You shape traffic with two controls:
- Connections. SMTP is the language mail servers use to pass email to each other. You choose how many SMTP connections (open lines to the receiving server) you keep open to each provider at once.
- Message rate. You choose how many messages you send to each provider per minute or per hour.
Why providers slow you down
- To protect their servers. A sender that opens 100 connections at once takes capacity other senders need.
- To make spamming harder. Spammers send as fast as they can. Real senders can afford to wait.
- To buy time to judge you. A reply code starting with 4 (a “4xx” code) is a temporary error meaning “try again later”. It gives the provider time to check your reputation. How you retry is a signal too: proper mail servers retry calmly, while spam tools often never retry or retry far too fast.
- To catch sudden spikes. If you usually send 10,000 emails a day and suddenly send 100,000, the jump looks like a hacked account or a bought list, even if the content is fine.
How the big providers behave
None of them publish exact limits, and the limits change with your reputation. Treat these as patterns, not numbers.
Gmail
- Your limits rise and fall with the reputation of your IP address and your domain.
- When you send too fast, Gmail answers with a temporary 4xx code, often
421. That’s a deferral, not a rejection. - More IP addresses can deliver in parallel, but they don’t get around a domain with poor reputation.
- If you keep hitting the limit, Gmail can lower it further.
Microsoft (Outlook.com, Hotmail, Live)
- Microsoft is stricter than Gmail with new IP addresses.
- SNDS (Microsoft’s free dashboard showing how it sees your IPs) tends to match how generous your limits are.
- It usually defers with
421before it blocks with550.
Yahoo
- Yahoo is cautious with senders it doesn’t know, and allows few connections per IP.
- Too many connection attempts can trigger deferrals, even when you send few messages.
- When volume or complaints look unusual, it defers with codes like
421 4.7.0 [TSS04].
Setting limits on your sending server
The software that sends your mail is an MTA (mail transfer agent), such as Postfix, PowerMTA, Momentum or Halon. Most let you set these limits for each receiving domain.
Connections at once. For example:
# Starting points for connections at once (adjust to your reputation)
# Gmail: up to 20 connections at once
# Yahoo: up to 5 connections at once
# Microsoft: up to 10 connections at once
This is a sketch, not real configuration. Each line sets a ceiling for one provider. Yahoo gets the lowest because it reacts most to connections. Start low, and raise the numbers while deferrals stay rare.
Messages per connection. How many messages to send before you close a connection and open a new one. Some providers prefer short connections (10–50 messages), others accept 100 or more. Reusing a connection for several messages is more efficient than opening one per message.
Messages per hour or day. A hard cap per provider. It’s your safety net if something sends far more than planned.
Retry schedule. When a message is deferred, your MTA waits and tries again. A typical schedule:
- retry after 15 minutes, then 30 minutes, then 1 hour
- after that, wait longer each time, up to about 4 hours between tries
- give up after one to five days (the SMTP standard suggests at least four to five; many services stop sooner)
Automatic speed control
Many MTAs and ESPs (email service providers, companies that send your mail for you) adjust the pace for you. This is called adaptive throttling.
- Start at a base rate.
- Read every reply code from the receiving server.
- 2xx (accepted): keep the pace, or raise it.
- 4xx (deferred): slow down and wait longer between retries.
- 5xx block: stop sending to that provider and alert someone.
- Speed up again, slowly, once deferrals stop.
Not every 5xx code is a block. 550 5.1.1 means one address doesn’t exist: a bounce for one reader, not a reason to
stop. A block is a 5xx reply that refuses your mail because of reputation or policy.
Spreading sends over time
Instead of sending 200,000 emails in 30 minutes at 9:00 AM, send 50,000 an hour from 9:00 to 12:00. Or send a steady trickle of about 25,000 an hour from 9:00 AM to 5:00 PM.
Spreading your send keeps you under hourly limits, looks less suspicious, and spreads the load on your own servers. It also gives you time to spot a problem before the whole campaign has gone out.
Your mail queue
The queue is the waiting line of messages your server hasn’t delivered yet.
Healthy and unhealthy queues
A healthy queue drains at a steady rate. It peaks after a campaign, then falls back to near zero within a few hours.
An unhealthy queue:
- keeps growing, because you add mail faster than it leaves
- holds many deferred messages, because a provider is slowing you down
- has messages older than 24 hours, which need investigating
Priorities
Not all mail is equally urgent. Send in this order:
- Transactional mail: password resets, order confirmations, two-factor codes. These must arrive within seconds. Give them their own queue so they never wait behind marketing.
- Triggered mail: welcome emails, abandoned-cart reminders. Timely, but not instant.
- Campaigns: newsletters, offers, announcements. These can spread over hours.
- Re-engagement and bulk mail: win-back campaigns, list-wide announcements. Delays barely matter.
Deferred mail
Your MTA moves a deferred message to a retry queue and retries it with longer gaps each time. After the maximum retry time, it gives up and reports the message as failed.
- Don’t retry more often when deferrals rise. That makes it worse.
- Look for patterns: the same provider, the same error, the same time of day.
- If many deferred messages never arrive, find the cause. Read the error codes in your logs, or test a connection to the provider’s mail server with the SMTP probe.
On a shared IP
A shared IP is an IP address your ESP uses for many customers at once. The ESP sets the limits, the connections, and whose mail goes first. You still control:
- When you send. Avoid the busiest moments, like exactly on the hour.
- Volume jumps. Grow step by step instead of sending a sudden blast.
- List quality. A poor list hurts the shared IP and everyone on it.
If throttling on a shared IP hurts your delivery, ask your ESP about the IP’s reputation, or ask to move to another pool. A dedicated IP (one only you use) makes sense only if you send enough, steadily, to keep it warm. A common rule of thumb is 50,000 or more emails a month.
What to measure
These thresholds are rules of thumb:
| Metric | Healthy | Investigate |
|---|---|---|
| Deferral rate, overall | Under 5% | Over 5% |
| Deferral rate, per provider | Under 10% | Over 10% |
| Average time in queue | Under 2 hours | Over 4 hours |
| Queue size trend | Shrinking | Growing |
| Retries that succeed | Over 90% | Under 80% |
| Messages over 24 hours in queue | Under 1% | Over 2% |
Also track reply codes per provider over time:
- More 2xx: delivery is improving.
- More 4xx: the provider is slowing you down harder. Check your reputation.
- More 5xx: the provider has moved from slowing you to blocking you. You have a reputation problem.
- More connection errors: you may be blocked at the network or IP level.
Checklist
- Set connection, rate and daily limits for each major provider. Start low.
- Retry with growing gaps, and give up after one to five days.
- Turn on adaptive throttling if your MTA or ESP offers it.
- Give transactional mail its own queue, ahead of everything else.
- Spread large campaigns over hours, not minutes.
- Watch queue size, deferral rate and reply codes for each provider.