Decknative
Writing9 min

Mailbox warm-up: what actually matters

Mailbox warm-up means building a sending reputation by sending a small, steady volume of genuine mail and increasing it in steps. Reputation accrues from sending activity, not from elapsed time: Microsoft states that IP addresses which have never sent email "typically don’t have any reputation in our systems," and M3AAWG describes unknown reputation as "similar to bad." A mailbox connected three weeks ago that has sent nothing is on day zero of its ramp, not day twenty-one.

Warm-up is not a countdown. It is the accumulation of a sending history, and a mailbox only accumulates history on days it actually sends. Most warm-up schedules get this backwards: they count calendar days since the mailbox was connected, so an account that sat idle for a fortnight arrives at "day 15" holding a full daily allowance and no history whatsoever. Below is what the mailbox providers put in writing, what they deliberately do not, and where the line between the two sits.

What is mailbox warm-up, actually?

It is the practice of starting a new sending identity at low volume and raising it gradually while you watch how receivers respond. M3AAWG splits the process into two named phases in its Sending Domains Best Common Practices:

Building domain reputation occurs in two primary phases: the warm-up phase, which brings the sending domain from unknown to noticed, followed by the ramp-up phase, which allows the sender to gradually reach their planned, long-term sending volumes.

M3AAWG Sending Domains Best Common Practices, October 2019

The load-bearing word there is "unknown". A brand-new sending identity is not neutral, and the same document is blunt about what unknown is worth:

Reputation usually starts as unknown, which makes it similar to bad in that it does not yet have any positive sending history. A domain with history is generally considered better than if it has none; from the history an ISP can deduce the quality of the behavior over time (good or bad), while no history would cause the filter to treat the incoming message with more scrutiny and caution.

M3AAWG Sending Domains Best Common Practices, October 2019

That is the entire case for warming up. You are not waiting out a timer. You are manufacturing the evidence a filter needs in order to stop applying "more scrutiny and caution". Microsoft says the same thing about IP addresses, in its own words:

IP addresses that have never been used to send email typically don’t have any reputation in our systems. As a result, email from new sources are more likely to experience delivery issues. Once the IP address has built a reputation for not sending spam, Microsoft 365 typically allows for a better email delivery experience.

Microsoft Learn, "Troubleshooting mail sent to Microsoft 365"

What is sender reputation actually built on?

Microsoft publishes the ingredient list outright: "Many factors influence Microsoft 365 filtering. For example, the sending IP, domain, email authentication, list accuracy, complaint rates, content, and more. One of the principal factors in driving down a sender’s reputation and their ability to deliver email is their junk email complaint rate."

Google puts a number on the complaint half: "Keep spam rates reported in Postmaster Tools below 0.10% and avoid ever reaching a spam rate of 0.30% or higher." Google defines reputation in Postmaster Tools as "a rating of the quality of domains and IP addresses used to send email, and is determined by the sending behavior of a domain or IP address." Yahoo asks senders to keep spam rate below 0.3% and notes that "Each IP and DKIM domain has a reputation, which can impact the delivery of your email."

Do the arithmetic at cold-outbound volume and the ceiling gets uncomfortable fast. On a mailbox sending forty messages a day, a single spam complaint on a single day is a 2.5% daily rate — more than eight times the 0.30% figure Google tells senders never to reach. That is an illustration of sensitivity rather than a Postmaster Tools reading: Google computes the rate over Gmail mail alone, as "the percent of your messages that are delivered to engaged recipient’s Inbox and then marked as spam by the recipient", so on a list spread across many domains the denominator is a fraction of forty and the measured figure comes out worse, not better. Small volume does not make the percentage forgiving. It makes it violently sensitive to one annoyed recipient.

If you send through Microsoft 365 or Gmail, what are you warming?

Not an IP address. When mail leaves a hosted tenant it leaves from the provider’s shared outbound pool, and that pool is published in DNS because SPF requires it to be. You can read the whole thing from a terminal.

Real output, 2 September 2026. Two shared outbound pools, exactly as published.
$ dig +short TXT spf.protection.outlook.com
"v=spf1 ip4:40.92.0.0/15 ip4:40.107.0.0/16 ip4:52.100.0.0/15 ip4:52.102.0.0/16 ip4:52.103.0.0/17 ip4:104.47.0.0/17 ip6:2a01:111:f400::/48 ip6:2a01:111:f403::/49 ip6:2a01:111:f403:8000::/51 ip6:2a01:111:f403:c000::/51 ip6:2a01:111:f403:f000::/52 -all"

$ dig +short TXT _spf.google.com
"v=spf1 ip4:74.125.0.0/16 ip4:209.85.128.0/17 ip6:2001:4860:4864::/56 ip6:2404:6800:4864::/56 ip6:2607:f8b0:4864::/56 ip6:2800:3f0:4864::/56 ip6:2a00:1450:4864::/56 ip6:2c0f:fb50:4864::/56 ~all"

The six IPv4 ranges in Microsoft’s record cover 458,752 addresses; Google’s two cover 98,304. That is what each provider is authorised to send from rather than what is in rotation on a given day — SPF describes the boundary, not the occupancy — and it carries every tenant’s outbound mail. You cannot warm those. One tenant’s traffic is also a small enough share of the total that you are unlikely to move them far in either direction, though that is an inference from the scale rather than something either provider publishes.

What you can move is the reputation attached to your domain, your DKIM signing domain, and the behaviour of your individual account. Microsoft notes the two are linked in the other direction as well: "New IPs for domains with existing SPF records typically experience the added benefit of inheriting some of the domain’s sending reputation." So for a hosted mailbox, warm-up means domain and account warm-up. M3AAWG describes how that reputation forms in a single sentence: "Reputation is quickly built from sending activity performed on a subdomain." Sending activity. Not elapsed time.

Why is a ramp measured in calendar days wrong?

Because the input to reputation is messages, and calendar days do not produce messages. The failure mode is specific and common. You connect the mailbox on a Monday, then clean the list, argue about the ICP, get legal to read the footer, and two weeks disappear. On day fifteen the schedule says forty a day, so forty go out — and the first message the filter has ever seen from that account arrives as one of forty. That is exactly what Google tells senders to avoid: "Avoid introducing sudden volume spikes if you do not have a history of sending large volumes." A history of sending, not a history of existing.

The same schedule, counted two ways.
SituationCalendar-day rampSend-day ramp
What advances the counterEvery midnight, unconditionallyOnly a day on which the mailbox actually delivered at least one message
Mailbox idle for 14 days after OAuth connectArrives at day 15 with a full allowance and zero historyStill day 1; the allowance is still the day-1 allowance
Weekends, when most B2B ramps pauseBurns two days of the ramp for nothingCosts nothing; the counter simply waits
A week of holiday shutdownRamp completes while no mail is sentRamp resumes exactly where it stopped
Campaign paused mid-ramp for a rewriteAllowance keeps climbing against an empty queueAllowance is frozen at the level the history supports
What the receiving filter observesA first-ever send at or near the full allowanceA volume curve it has watched grow message by message
What the schedule optimises forElapsed timeAccumulated sending history

Microsoft’s own estimate of how long a ramp takes is explicitly conditional on sending, not on waiting: "A new IP can expect to be fully ramped within a couple of weeks or less depending on volume, list accuracy, and junk email complaint rates." Volume is the first variable in that sentence. A fortnight of sending and a fortnight of silence are not the same fortnight.

Why does steady daily volume beat bursts?

Google says it in two separate documents, in plain imperative English. The sender guidelines attach the advice to a qualifier — the bullets sit under "If you send large amounts of email, we recommend you:" — and then read: "Send email at a consistent rate. Avoid sending email in bursts." And: "Start with a low sending volume to engaged users, and slowly increase the volume over time." The Top 10 Gmail sender issues page carries no such qualifier. It has a section headed "Ramp up slowly" — "Increasing your sending volume too quickly can result in delivery issues." — and another headed "Maintain consistent sending volumes", which gives the intraday version: "Pace your email traffic to send at consistent volumes throughout the day and over several days to avoid random spikes in email sending volume."

M3AAWG ties consistency to the reputation itself. Reputation forms per sending segment, and each segment "can create and grow its own reputation, which requires sufficient and relatively consistent traffic volume. Lapses in sending or major fluctuations in traffic volume can impact both forming and sustaining sending reputation." Consistency is not politeness; the shape of the volume curve is itself an input. Why an abrupt step is read badly is not something any provider spells out — the usual explanation, that it looks like a compromised account, is reasonable but unpublished. What is published is the instruction, from Google and M3AAWG independently, to avoid the step. Microsoft is not a third voice here: it describes a new IP becoming "fully ramped", but publishes no guidance on how to pace one.

Microsoft documents a throttle of that shape, though it attributes the trigger only to "suspicious activity" and never names volume as the cause: the NDR "451 4.7.550 Access denied, please try again later", issued "because suspicious activity was detected from the source IP address. Mail from the source has been temporarily restricted while it’s being evaluated." That code is IP-scoped and unlikely to be yours on a hosted tenant, but the shape — throttle first, evaluate second — is what you are trying not to trigger.

One thing a ramp is definitely not: your provider’s published limit. Exchange Online allows 10,000 recipients per day and 30 messages per minute on the common Microsoft 365 plans, both per mailbox, with a separate tenant-wide cap on external recipients per day — the Tenant External Recipient Rate Limit — that scales with the tenant’s licence count. Google Workspace allows 2,000 messages a day for standard accounts. Those are abuse ceilings, not recommendations, and Microsoft says as much in the footnote to its own table: "Exchange Online isn’t suited to accommodate bulk-mailing scenarios." Treating the cap as a target is how a warm-up schedule turns into an incident.

Does domain age matter, and can anything speed it up?

Partly, and no. The well-documented part is short and absolute. Spamhaus operates a Zero Reputation Domain list whose entire premise is that a freshly registered domain is suspicious on sight: "This lists newly registered domains for 24 hours," on the reasoning that "New domains typically don’t send email in the first 24 hours." There is no appeal — "we do not accept requests for removal from this blocklist" — and "The domain will be automatically removed from the blocklist after 24 hours." The only exit is the clock. Note the scope: this bites only where the receiving mail system subscribes to that feed. It is not a rule of the internet.

Check your own domain’s registration date with RDAP, the machine-readable successor to whois. For .com the authoritative server is Verisign’s.

Real output, 2 September 2026. Swap in your own domain, uppercase or lower.
$ curl -s https://rdap.verisign.com/com/v1/domain/MICROSOFT.COM \
    | python3 -c "import sys,json;[print(e['eventAction'],e['eventDate']) for e in json.load(sys.stdin)['events']]"
registration 1991-05-02T04:00:00Z
expiration 2027-05-03T04:00:00Z
last changed 2026-01-29T18:46:57Z
last update of RDAP database 2026-09-02T00:54:09Z

Past the first twenty-four hours, be careful what you claim. Whether a filter still discounts a three-month-old domain against a ten-year-old one is asserted constantly and published by no major mailbox provider. Treat it as a reasonable prior, not a documented rule. What is documented is that sending history matters, and history takes time only because it takes sending. Buy a domain today and park it for six months and you have a six-month-old domain with the reputation of a brand-new one.

Do automated warm-up pools work?

The mechanic is straightforward. You hand a warm-up service access to your mailbox and it enrols you in a network of other participating accounts. It sends mail from you to them; they mark it not-spam, drag it out of the junk folder, and reply. The intent is to manufacture the engagement signals a filter reads.

Two structural problems are worth naming, without passing judgement on any particular vendor. The first is that the engagement is not from your recipients. Google’s instruction is to start "with a low sending volume to engaged users" — engaged with your mail, on the domains you will actually be mailing. Reciprocal traffic inside a pool is engagement with the pool, and whether a filter treats the two as equivalent is not verifiable from outside it.

The second is access. To open, file and reply to messages on your behalf, a pool needs read and write access to the mailbox — IMAP credentials, or OAuth scopes that can read and modify mail. On Google that means a restricted scope; delegated Mail.Send on Microsoft Graph cannot do it either. That is a real security decision, and a sharper one if the mailbox belongs to a client. It also cuts the other way as a design constraint: Decknative requests only gmail.send and delegated Mail.Send, which means it structurally cannot operate a warm-up pool, because it cannot read a message or move one between folders.

On detection, be honest about the evidence. The claim that providers identify and discount pool traffic is repeated in every article on the subject and documented in none of them. Reputation models at Gmail, Outlook and Yahoo are proprietary and unpublished; nobody outside those teams can demonstrate either that pool traffic is caught or that it is not. What you can read is the contract. The Google Cloud Acceptable Use Policy, which is the AUP published under the Google Workspace terms, prohibits using the services "to test or reverse-engineer the Services in order to find limitations or vulnerabilities, or to evade filtering capabilities, except as expressly permitted in the Agreement." Whether coordinated inbox activity designed to move a spam filter falls inside that sentence is a judgement call — but it is a call worth making deliberately, before you connect a mailbox you cannot afford to lose.

What should a warm-up schedule actually do?

  1. Count send-days, not calendar days. Increment the ramp only on a day the mailbox actually delivered at least one message. This is a one-line change in most schedulers and it removes the entire class of bug described above. Decknative counts a mailbox’s ramp this way for exactly that reason.
  2. Start low and step up rather than jump. M3AAWG’s directional guidance is "Start low and slow; increase sending volume slowly (consider 6 weeks of warm-up as an average)." That average is drawn from bulk sending programmes at far higher volumes than a single mailbox will ever reach, so treat it as a sense of pace, not a schedule to copy.
  3. Send on every working day of the ramp. A gap is a fluctuation, and M3AAWG names lapses in sending as something that harms both forming and sustaining reputation.
  4. Spread the day’s sends across the window instead of firing them at 09:00. Google asks for consistent volumes throughout the day, and a burst on the hour is the least human-looking pattern available.
  5. Get SPF, DKIM and DMARC alignment right before the first message, not during the ramp. Postmaster Tools reports reputation for domains sending DKIM-authenticated mail, falling back to SPF-authenticated mail where DKIM is absent — so unauthenticated mail earns you no attribution in the one dashboard Google does give you.
  6. Watch the constraint that actually binds at low volume, which is complaints, not volume. One complaint against forty sends is a 2.5% day. Prune the list before you raise the cap.
  7. Treat bounces and replies as your only real feedback. At forty a day the reputation dashboards stay empty, so hard-bounce rate and reply content are the instruments you have. List accuracy appears in Microsoft’s factor list for a reason.

Which parts of warm-up advice are folklore?

Reputation systems are proprietary, unpublished and actively defended against reverse engineering, so a large share of public warm-up advice is inference presented as fact. Sorting it is the most useful thing you can do with an afternoon.

Documented by a provider, versus inferred by the industry.
Common claimStatus
Keep Gmail spam complaints under 0.10%, never reach 0.30%Documented. Google states both figures in its sender guidelines.
Increase volume gradually and avoid spikesDocumented as an instruction by Google and by M3AAWG. Microsoft describes a new IP becoming "fully ramped" but publishes no pacing guidance of its own.
A brand-new sending identity has no reputation and gets extra scrutinyDocumented. Microsoft says it for IP addresses; M3AAWG says it for domains.
Newly registered domains are blocked for their first 24 hoursDocumented for the Spamhaus ZRD, and only where the receiver subscribes to that feed. Not a universal rule.
Send exactly N on day one, N+5 on day two, and so onFolklore. No mailbox provider publishes a ramp schedule. The numbers differ between articles because there is no source to differ from.
Domain age keeps mattering for months or yearsWidely assumed. Not published by Gmail, Outlook or Yahoo. Plausible, unverifiable.
Warm-up pool traffic is detected and discounted by filtersAsserted everywhere, documented nowhere. Both the claim and its denial are unfalsifiable from outside.
Postmaster Tools will show your reputation at cold-outbound volumeUsually false. Google warns the dashboard "might not include all data on days when outgoing email volume is low."

The honest summary is narrow, which is what makes it worth trusting. Providers document that history matters, that unknown senders get more scrutiny, that consistency helps, that spikes hurt, and that complaints are the fastest way down. They publish no ramp numbers, presumably because they do not want senders optimising against a curve. Past that boundary everything is a guess, and the useful guesses follow from the documented parts: send a little, send it every day you said you would, and count the days you actually sent.

Common questions

How long does mailbox warm-up take?
No mailbox provider publishes a schedule. M3AAWG suggests treating roughly six weeks as an average for warming a sending domain, and Microsoft says a new IP "can expect to be fully ramped within a couple of weeks or less depending on volume, list accuracy, and junk email complaint rates." Both figures are conditional on actually sending throughout the period, so neither is a countdown you can start and ignore.
Does a mailbox warm up while it is sitting idle?
There is no documented mechanism by which it would. M3AAWG states that reputation is built from sending activity, and Microsoft states that identities which have never sent have no reputation in its systems. Idle time produces no messages, so it produces no history for a filter to read. A mailbox connected a month ago and never used is on day zero.
Do I need to warm up an IP address if I send through Microsoft 365 or Gmail?
You cannot, because you do not have one. Outbound mail from a hosted tenant leaves from the provider’s shared pool — 458,752 IPv4 addresses published in spf.protection.outlook.com and 98,304 in _spf.google.com as of September 2026. What you are warming is your sending domain, your DKIM signing domain and the behaviour of your individual account.
What is a safe number of emails to send on day one?
No provider publishes one, and any article giving you an exact figure is quoting another article. The documented guidance is directional: start low, raise it in steps, keep the daily rate consistent. A practical constraint is complaint arithmetic — pick a starting volume large enough that a single spam report does not put your daily rate an order of magnitude above Google’s 0.30% ceiling.
Are automated warm-up pools against provider rules?
No major provider addresses warm-up pools by name in its published policy. The Google Cloud Acceptable Use Policy, published under the Google Workspace terms, does prohibit using the services "to evade filtering capabilities," and whether coordinated inbox activity intended to move a spam filter falls under that wording is a judgement call rather than a settled question. This is not legal advice; read the terms attached to your own tenant.
Does the age of my domain matter?
For the first twenty-four hours it demonstrably does, at least for receivers using the Spamhaus Zero Reputation Domain feed, which lists newly registered domains for that period with no removal requests accepted. Beyond that window, the belief that age keeps mattering is widely held and not published by any major mailbox provider. Age alone also builds nothing: a parked domain accumulates no sending history.
Why is my Google Postmaster Tools dashboard empty?
Almost certainly volume. Google states that "To protect the privacy of Gmail users, the dashboard might not include all data on days when outgoing email volume is low." Cold outbound from a single mailbox sits far below the threshold where useful data appears. Watch SMTP response codes, hard bounces and replies instead, and check that your mail is DKIM-signed so any reputation that does appear is attributed to you.

Sources

Read next