Multiple Sending Servers in AcelleMail — Add, Mix, Route

Spread your volume across several SMTP and API senders for failover, reputation isolation, and headroom past any single vendor's cap. This guide walks the real screens: the type picker, the connect form, the per-campaign "Use all servers" toggle, and the admin pool view.

Why more than one sending server

A single sending server is a single point of failure: one vendor outage halts your campaigns, one reputation hit poisons everything you send. Running 2-4 servers from different vendors buys you breathing room. Concrete reasons:

Goal What multi-server gives you
Survive a vendor outage When one server is paused or rejected, the rest of the pool keeps sending.
Isolate marketing from transactional Put marketing on one server and one-off/notification mail on another, so a blocked marketing IP can't drag everything else down.
Grow past a per-vendor cap New SES and similar accounts start with a low daily ceiling. Add a second vendor and your combined headroom goes up immediately.
Build reputation in parallel Warm a new vendor's IPs at low volume while an established server carries the bulk of the load.

Add a second server (customer side)

Open the Sending servers screen

In the sidebar, go to Sending → Sending servers. The page is titled Sending Servers with the subtitle "Manage SMTP and API servers that power your email delivery." Your current servers show in the table, with a search box and Active / Inactive + type filters above it.

Customer sending-server list

The right rail shows your vendor mix, total hourly throughput, and warmup status at a glance — a quick way to see how concentrated your sending is on a single vendor.

The green Add server button only appears if your plan allows you to run your own sending servers. On a plan where the administrator manages the pool for you, you won't see it — skip to Choosing which server a campaign uses below.

Click "Add server" → pick a type

The top-right Add server button opens the type picker, titled Choose a server type. It's a card grid of every provider this install supports — generic SMTP, Amazon SES (API or SMTP), SendGrid, Mailgun, SparkPost, Elastic Email, Sendmail, Gmail OAuth, and any provider added by a plugin (those appear in a separate section).

Sending-server type picker — "Choose a server type"

Click the provider and integration type you want. The connect form opens with fields specific to that type.

Fill in the connection and save

For generic SMTP, the form (Connect sending serverConnection settings) asks for host, port (defaults to 587), encryption (TLS / SSL / None), username, and password:

SMTP connect form

Pick an API type instead and the fields change to match. Amazon SES (API), for example, asks for an AWS access key ID, AWS secret access key, and an AWS region:

Amazon SES API connect form

Click Add server. AcelleMail saves the credentials and drops you on the new server's detail page. The server isn't probed automatically on save — you confirm it works in the next step.

Test the connection

On the server detail page, use Test connection. AcelleMail tries to connect with the credentials you entered and reports back inline — "Connection successful." or "Connection failed." There's also a test-send option to push a single message through and check your own inbox ("Test email sent — check your inbox.").

Server test modal

If the test fails, click into the server, fix the host / port / credentials, save, and test again. A server stays Inactive until you've got a clean connection and enabled it.

Choosing which server a campaign uses

By default a campaign uses all of the sending servers available to you, picked at random per message — that's the redundancy you want most of the time. You control this per campaign in the Sending servers section of the campaign setup step (under Show advanced settings).

  • The Use all servers randomly toggle is ON by default. Leave it on and every message goes through a random pick from your whole pool.
  • Turn it OFF to narrow the campaign to specific servers. Flip the include switch on the servers you want this campaign to use.
  • With a narrowed selection, Adjust weights lets you set how much traffic each chosen server carries relative to the others (drag a slider per server).

This is how you get deterministic-ish routing without leaving the app: a "newsletter" campaign narrowed to your bulk vendor, a "receipt confirmation" campaign narrowed to a clean transactional server. If every server you picked happens to be inactive at send time, AcelleMail stops the campaign with an error rather than silently falling back to the full pool — so a narrow always means what you said.

On a plan where the administrator manages the pool, this section is read-only: it lists the servers your plan grants and tells you they're shared and picked at random per message. You can't narrow it from the campaign — that's an admin-side decision (see below).

The admin pool view (self-hosted operators)

If you run a multi-tenant install, Admin → Sending Servers is the full pool across all customers. The top of the page shows three stat cards — Total, Active, and Inactive — over a searchable, filterable table of every server.

Admin pool — sending-server list

The admin-side server detail has more knobs than the customer one — connection, configuration (including the sending limit), identity / DKIM, warmup strategy, and bounce/feedback handling:

Admin server detail

To decide which customers can send through which servers, attach servers to plans under Admin → Plans → [plan] → Sending servers. Customers on that plan then send through the servers their plan grants — that's how you give a higher tier premium sending IPs while a basic tier shares a default pool.

Common UI signals and fixes

What you see What to do
New server stays Inactive Open the server → Test connection. Fix host / port / credentials based on the failure message, save, and test again.
Add server button is missing Your plan doesn't allow your own servers (or you've hit your server quota). The pool is managed for you under your plan.
A campaign sent through a server you didn't expect With Use all servers randomly on, picks are random per message. Turn it off in the campaign's Sending servers section and select only the servers you want.
Customer says they only see one server The other server isn't attached to their plan. Go to Admin → Plans → [plan] → Sending servers and add it.
Campaign won't send at all Either the customer's plan grants no active servers, or you narrowed the campaign to servers that are now all inactive. Re-check the plan's attached servers and each server's status.

What to do after

  • Run Test connection on every new server before you point a real campaign at it.
  • If you added a brand-new vendor or IP, start it at low volume — see IP warmup schedule for new sending servers.
  • Watch bounce and complaint rates after the first send from a new server — see the related article below.

Related articles

21 comments

8 comments

  1. sofia.costa.pt
    bookmarked. Going to share with the team — we've been winging warmup and it shows in the numbers.
    1. admin
      Thanks. Pass it along if it helps your team. tbh
    2. admin (edited)
      thanks. pass it along if it helps your team.
    3. admin (edited)
      Thanks for the kind words. We try to keep these source-grounded so they age well.
  2. phuong.mai.hn
    We hit a Spamhaus listing once. Self-service delisting was actually fast (< 24h) but the reputation recovery took weeks. Not the listing itself that hurt — the user complaints that caused it
  3. tranminh.devop…
    For very low-volume senders (< 5k/month), does warmup even matter? Or just send and let the provider's shared pool absorb the trickle?
    1. admin
      good question. the campaign:rerun audit writes to laravel.log only when the audit decides to force-resume — pure noop runs are silent. we'll add an info-level heartbeat in a future acelle release to make it easier to monitor.
    2. admin (edited)
      Yes — strict alignment requires the From: domain to match exactly. Subdomain-level (`bounce.example.com` vs `example.com`) passes relaxed but fails strict. Most operators run relaxed; the rare strict-DMARC setups need explicit subdomain DKIM configuration
  4. ravi.kumar.del…
    we warmed up a dedicated IP last fall. The 2-week ramp this article describes is on the aggressive side — Gmail in particular punishes anything faster than ~3-4 weeks. We did 4 weeks and had a clean ramp
    1. admin (edited)
      Thanks for sharing. The pattern you describe is exactly the use case we built that feature for — glad it landed for you.
  5. jmorrison.itop…
    Confirming the Postmaster Tools data lag — sometimes 48 hours, sometimes longer. Don't make decisions on a sinle day's data.
    1. admin
      Useful field report. The 'kill -9 was the only fix' edge case is rare but real — we'll note it as a fallback
  6. danrey.dev
    The Postmaster Tools section is gold. Most senders don't even know it exists.
  7. nadia.r.cl
    If you're warming a new IP after a known issue, consider seeding with transactional mail first (password resets, order confirmations). Higher engagement rate per send than marketing — helps the reputation ramp.
    1. admin
      Yep, same pattern works for us. Thanks for sharing.
    2. admin (edited)
      worth adding to the article. pr welcome if you want to author the addition
  8. rafa.silva.br
    Does engagement-based segmentation help during warmup? E.g. only sending to the most-engaged 20% during week 1?
    1. admin
      Short answer: yes — set the MySQL session variable from your worker's .env on boot and you'll get the longer timeout per connection. We'll add an explicit recipe in the next refresh
    2. admin (edited)
      Depends on your version. 5.x supports it natively; 4.x needs a config flag set in `.env`. We'll note this caveat in the article on the next pass.
    3. admin (edited)
      we tested this with up to 1M subscribers on a $40/mo VPS. Past that you start needing query optimization. Below that, the defaults are fine
    4. admin (edited)
      Suppression list import via CSV captures all opt-outs including preference-center ones if you exported with the right field set. The export filter defaults exclude some — check the 'include unsubscribed' checkbox on Mailchimp's export wizard.

More in Sending & Deliverability