TL;DR: Authenticate first with SPF, DKIM, and DMARC, then start at 20 to 40 emails per day per inbox and ramp over three to four weeks while real recipients open and reply. Keep an eye on your spam rate in Google Postmaster Tools and hold it under 0.3 percent.

When hand-managing ramp schedules across many inboxes stops scaling, a warm-up service that supports custom SMTP (such as Warmy) can run the whole schedule for you.

How to Warm Up Custom SMTP Domains and Multiple Inboxes at Scale (2026)

Why self-hosted senders get filtered?

Self-hosted Postfix and Exim give you full control of your mail stream, which is exactly why mailbox providers treat a brand-new sending domain with suspicion.

A fresh domain has no track record, its IP often sits in a shared range with mixed history, and Gmail, Yahoo, and Microsoft now reject unauthenticated bulk mail at the SMTP layer instead of quietly filing it under spam.

Google moved from temporary 421 errors to permanent 550 rejections in November 2025, and Microsoft began returning 550 5.7.515 for non-compliant mail in May 2025.

The penalty is measurable. PowerDMARC’s 2026 analysis found that compliant senders average about 89% inbox placement, while non-compliant senders watch 22 to 34% of their mail get routed to spam.

Warm-up is how you build the reputation those filters are looking for: you send a small, steadily rising volume that real recipients open and reply to, which teaches the receiving side that your domain sends wanted mail.

Hunter.io study of more than 11 million cold emails shows why the sending identity carries weight, with custom-domain senders earning a 5.2 percent reply rate against 2.5 percent for free webmail addresses.

Set up authentication before you send anything

No warm-up tool can rescue a domain that fails authentication, so fix DNS first. Bulk senders, meaning 5,000 or more messages a day to Gmail counted across your whole primary domain, must pass SPF and DKIM, publish a DMARC record, transmit over TLS, and offer RFC 8058 one-click unsubscribe on commercial mail.

Below that threshold the same signals still decide placement. Google’s Email sender guidelines list the current requirements in full.

Verify each record from the command line before you trust it:

dig +short TXT example.com # SPF: expect v=spf1 …
dig +short TXT mail._domainkey.example.com # DKIM (mail = your selector)
dig +short TXT _dmarc.example.com # DMARC: v=DMARC1; p=none …
dig -x 203.0.113.10 +short # PTR/rDNS: must resolve to your FQDN

On Postfix, sign outbound mail with OpenDKIM. Generate a 2048-bit key, publish the TXT record it prints, and wire the milter into the MTA:

opendkim-genkey -b 2048 -s mail -d example.com
postconf -e ‘smtpd_milters = inet:localhost:8891’
postconf -e ‘non_smtpd_milters = $smtpd_milters’
systemctl reload postfix

Then send a real test and read the headers. swaks is the standard tool for this on Linux, and Gmail’s “Show original” view should report SPF, DKIM, and DMARC as PASS:

swaks –to [email protected] –from [email protected] –server 127.0.0.1:25

Exim senders check the same DNS records; the sending directives differ, and the Exim command reference on Command Linux documents the relevant flags.

A manual ramp schedule that works

Once authentication passes, ramp slowly. Data from FirstSales, cited by Signado, found that daily volume increases above roughly 20% correlate with spam filtering about 73% of the time, so the restraint is the whole point. A workable four-week schedule, measured per inbox:

WeekTotal emails/day per inboxReal (non-warm-up) sendsWhat to watch
120 to 40NoneBaseline opens and replies from the warm-up pool
250 to 80Up to ~20/day to engaged contactsSPF, DKIM, and DMARC still passing; spam rate flat
3100 to 150Ramp graduallyCompliance Status in Postmaster Tools v2
4+150 to 250 (mixed)Steady stateKeep low-volume warm-up running as maintenance

Treat these as starting points. A custom SMTP setup on a shared IP with mixed history can take the full four to six weeks to stabilize, and sender reputation decays roughly 12 to 15% a month once you stop, so even a fully warmed domain needs a steady trickle of activity to hold its standing.

Optimizing sending frequency

Frequency matters as much as raw volume. Firing 200 messages in one burst looks very different to a filter than 200 spread evenly across the day.

Postfix can pace delivery natively. Slow the rate to one message per second per destination domain and cap parallel connections:

postconf -e ‘smtp_destination_rate_delay = 1s’
postconf -e ‘smtp_destination_concurrency_limit = 2’
postconf -e ‘initial_destination_concurrency = 1’
postfix reload

Then watch what actually leaves the server, and keep an eye on the queue:

grep “status=sent” /var/log/mail.log | wc -l # messages sent today (Debian/Ubuntu)
postqueue -p # is anything stuck?

Hold bounces under 2% and manual spam complaints under 0.3%.

Scaling to multiple inboxes

A single inbox can only send so much cold mail safely, in practice around 40 to 50 messages a day once it is warm. To grow total volume, add capacity sideways rather than pushing one mailbox harder.

Create several sending mailboxes, and where you can, spread them across subdomains so each carries its own DKIM selector and earns an independent reputation. Postfix runs parallel sending stacks through multi-instance mode:

postmulti -e init
postmulti -I postfix-out2 -G mta -e create
postmulti -i postfix-out2 -e enable
postmulti -i postfix-out2 -p start

Warm every inbox at the same time, but stagger the schedules and vary the content so ten mailboxes are not sending identical patterns on the same clock.

Ten inboxes at 40 a day gives you 400 clean sends without any single address looking aggressive, which is the practical answer to sending at scale from self-hosted infrastructure.

Automating the ramp across many inboxes

Automating the ramp across many inboxes

Running this by hand is realistic for one or two domains. Across a fleet of inboxes, hand-tuning daily volumes and manufacturing genuine opens and replies stops scaling quickly.

A warm-up service that connects over SMTP and IMAP can automate the ramp: it exchanges real messages with a pool of live mailboxes, rescues anything that lands in spam, and adjusts each inbox’s pace from live reputation data.

Warmy’s email warm-up supports custom SMTP alongside Gmail, Outlook, and Amazon SES, which fits self-hosted Postfix and Exim admins who want the schedule handled for them while keeping full control of the mail server itself.

FAQs

How do I warm up a self-hosted SMTP domain?

Get authentication passed first: SPF, DKIM, DMARC, a valid PTR record, and TLS. Then send a small daily volume that real people open and reply to. Start at 20 to 40 messages a day, raise it gradually over three to four weeks, and monitor your Compliance Status in Postmaster Tools v2 while holding spam complaints under 0.3%.

How many emails per day should a new SMTP domain send?

Begin at 20 to 40 per inbox in week one, and avoid daily jumps larger than about 20 to 30%. For cold outreach, a warmed inbox sits comfortably around 40 to 50 real sends a day. Keep in mind that hitting 5,000 a day to Gmail across your domain classifies you as a bulk sender permanently, with stricter requirements attached.

Can I warm up several inboxes at the same time?

Yes. Warm them in parallel, but stagger the timing and content, give each mailbox its own selector or subdomain where possible, and keep per-inbox volume low. Manual management gets tedious past a handful of inboxes, which is where a warm-up tool earns its place.

Willie has over 15 years of experience in Linux system administration and DevOps. After managing infrastructure for startups and enterprises alike, he founded Command Linux to share the practical knowledge he wished he had when starting out. He oversees content strategy and contributes guides on server management, automation, and security.