MailWizz PowerMTA Integration

MailWizz PowerMTA integration connects MailWizz, the campaign application, to PowerMTA, the delivery engine, over SMTP — so MailWizz builds and queues campaigns while PowerMTA does the sending, throttling, and bounce and feedback-loop handling. The basic wiring (a MailWizz Delivery Server pointing at a PowerMTA listener) is simple; what is hard, and where most setups break, is the bounce and FBL pipeline and the per-ISP throttling that keep deliverability healthy. MCSNET wires the whole integration — virtual-MTA pools, the header mapping, and the complete bounce path including the part most people miss — on our own IPs, from Toronto.

Key takeaways

  • MailWizz is the campaign UI; PowerMTA is the delivery engine — they connect over SMTP, with MailWizz relaying campaigns and PowerMTA sending, throttling and logging.
  • PowerMTA's power is virtual-MTA pools — mapping streams, tenants or risk tiers to dedicated IPs, with per-ISP throttling and backoff tuned per provider.
  • The basic Delivery Server wiring is easy; the bounce and FBL pipeline is where most integrations break, especially the out-of-band bounces PowerMTA's logs never see.
  • Bounces map back to the exact subscriber through headers like X-Mw-Subscriber-Uid — the glue that lets a PowerMTA bounce unsubscribe the right MailWizz contact.
  • Setup is easy; running it is the expertise — tuning throttling and keeping bounce mapping reliable at scale, which we do on owned IPs under PIPEDA.

MailWizz and PowerMTA are the classic self-hosted email stack — a capable campaign application in front of an enterprise delivery engine — and pairing them is how a great many serious senders and ESPs run. It is also an integration that looks simple and is not. Connecting the two takes minutes; making the connection deliver well, stay off blocklists, and reliably feed bounces and complaints back into MailWizz takes real expertise, and the gap between those two states is where most setups quietly fail. This page walks through how the integration actually works, where it breaks, and the parts — especially bounce processing — that separate a working stack from one that looks fine until reputation collapses.

How do MailWizz and PowerMTA fit together?

They occupy two different layers of the same stack. MailWizz is the application — it builds campaigns, manages lists and subscribers, runs automation, and produces the mail. PowerMTA is the delivery engine — it accepts that mail over SMTP and does the actual sending, with fine-grained control over IP pools, per-ISP throttling, retries, and bounce and feedback-loop handling. The relationship is exactly the one PowerMTA’s own documentation describes: it sits beneath your applications as the engine, not the car. MailWizz relays each campaign to PowerMTA over an authenticated SMTP connection; PowerMTA enqueues, applies its policies, sends, and logs everything; and the results — deliveries, bounces, complaints — flow back into MailWizz so its reporting and suppression stay accurate. Understanding that division is the whole foundation, because nearly every integration problem is really a problem at the seam between these two layers.

Connecting them: the Delivery Server

The connection itself is made through a MailWizz Delivery Server. In MailWizz you create an SMTP delivery server that defines the host, port, authentication method and encryption pointing at PowerMTA, and on the PowerMTA side you configure an SMTP listener set to accept authenticated connections from the MailWizz application server’s address. Once that handshake works, MailWizz hands every campaign to PowerMTA over SMTP, and PowerMTA takes over delivery. This is the part that is genuinely easy — it is a standard SMTP relay configuration, and a basic version works in minutes. The mistake is thinking that because the connection is simple, the integration is done. The Delivery Server is the doorway; everything that determines whether your mail lands and whether your list stays clean is on the other side of it, in how PowerMTA is configured and how bounces find their way home.

Virtual MTAs and pools: where the power is

PowerMTA’s real value is in its virtual-MTA system, and using it well is most of what separates a serious integration from a basic relay. A virtual MTA binds sending to a specific IP and EHLO hostname, and virtual-MTA pools group those together, so you can map different kinds of traffic to different sets of IPs. That mapping is what enables every advanced pattern: a “gold” pool for your most engaged lists separated from a “standard” pool, transactional mail isolated from marketing, or — in a multi-tenant ESP — each customer or risk tier confined to its own pool so one sender’s reputation cannot bleed into another’s. Layered on top is per-ISP control: PowerMTA lets you set concurrency, sending rates and backoff behaviour individually for Gmail, Yahoo, Microsoft and other major providers, which is how you send fast without tripping their limits. MailWizz feeds these pools by aiming Delivery Servers at the right ports; PowerMTA does the routing and shaping underneath. The pools are where deliverability strategy becomes configuration.

How do you separate streams and tenants?

Through ports and pools working together, which is one of the most useful things this integration enables. Because you can create multiple Delivery Servers in MailWizz, each pointing at a different PowerMTA port, and configure PowerMTA to route each port to a different virtual-MTA pool, you get clean stream separation: transactional mail down one path to its own isolated IPs, bulk marketing down another to different IPs. MailWizz Delivery Server Groups and weighted rotation then let you distribute a campaign across several servers — sixty percent through one pool, forty through another — to balance volume. The same mechanism builds per-tenant isolation in an ESP: each customer’s sending routes to a pool dedicated to them or to their risk tier, so a complaint spike from one tenant stays contained. This is the practical expression of the multi-IP and isolation principles deliverability depends on, implemented at the seam between the two systems.

Why does per-ISP throttling need constant tuning?

Because the providers’ tolerances are not fixed, and the right settings are a moving target. PowerMTA makes per-ISP throttling easy to configure — concurrency, rates and backoff per provider — but the difficulty, as experienced operators put it, is not writing the configuration; it is monitoring the accounting logs and adjusting those domain settings to back off quickly enough when a provider starts deferring, while still keeping throughput high. Send too aggressively into Gmail and you collect deferrals and reputation damage; send too cautiously and you waste capacity and delay campaigns. The correct settings depend on your IP reputation, your volume, and the provider’s current mood, all of which change, so a configuration that was perfect last month throttles wrong this month. This ongoing analysis-and-adjustment loop is the real work of running PowerMTA, and it is the part that rewards experience rather than a one-time setup — the engine runs itself, but the tuning does not.

The headers that glue it together

The integration depends on a small set of headers that let a bounce or complaint find its way back to the exact subscriber, and they are easy to overlook until bounce processing fails. MailWizz injects identifying headers into every message — most importantly a subscriber UID, along with the list identifier and the standard List-Unsubscribe header — and PowerMTA logs these in its accounting records. When PowerMTA later records a bounce or a feedback-loop complaint, those logged headers are what allow a handler to map the event back to the specific MailWizz subscriber and list, so the right contact gets unsubscribed rather than a guess. Feedback-loop records carry an FBL identifier that serves the same purpose for complaints, and Microsoft even tucks the original recipient into its own header that has to be mapped back. Without this header mapping, a bounce is just an address with no home; with it, the pipeline can act precisely. Getting these headers flowing and parsed correctly is a quiet prerequisite for everything downstream.

Why is bounce processing the hard part?

Because there are several ways to do it, none of them is automatic, and the one most people choose has a hidden hole. There are three approaches to getting bounces from PowerMTA into MailWizz, and each has trade-offs.

ApproachHow it worksTrade-off
IMAP/POP3 bounce mailboxMailWizz polls a return-path mailbox for DSNsSimple, native; IMAP polling is slow and heavy
Accounting-file handlerA script reads PowerMTA logs, calls the MailWizz APIFast and accurate; needs scripting and upkeep
PowerMTA webhooksPowerMTA pushes bounce records to an endpointModern, real-time; misses out-of-band DSNs

The accounting-file and webhook approaches are faster and more precise than polling a mailbox, since they read PowerMTA’s own classification of each bounce. But choosing one of them and stopping there is exactly the mistake that breaks most setups, because of what they do not see.

The bounce gotcha most setups miss

Here is the detail that catches nearly everyone, and it is worth stating plainly: a large share of bounces never appear in PowerMTA’s logs at all. When a receiving server accepts a message and then rejects it later, it sends an asynchronous DSN back to your return-path address — and because that bounce arrives after the SMTP connection closed, PowerMTA’s accounting logs and webhooks never record it. Operators consistently find this is 40 to 60 percent of their bounces. A setup that relies only on the accounting-file handler or only on webhooks therefore silently misses half its bounces, leaving dead addresses on lists, inflating future bounce rates, and slowly poisoning sender reputation while the dashboards look fine. A complete pipeline processes both sources: PowerMTA’s in-band logged bounces and the out-of-band DSNs landing in the return-path mailbox. This is the single most common reason a MailWizz-plus-PowerMTA integration looks healthy and is quietly degrading, and building it correctly means handling both paths from the start rather than discovering the gap months later.

MailWizz+ subscriber-uidPowerMTAvmta poolsProvidersSMTPin-band: logs / webhookPowerMTA sees theseout-of-band DSNs (40-60%)return-path · NOT in logshandler reads BOTH → maps by uid → unsubscribes in MailWizzmissing either path silently poisons the list
Bounces arrive on two paths. A pipeline that reads only PowerMTA’s logs misses the 40–60% that go to the return-path.

FBL processing and anonymized recipients

Feedback-loop complaints need the same care as bounces and add one more wrinkle. PowerMTA captures complaints through its feedback-loop records, each carrying an FBL identifier that, together with the subscriber UID, lets a handler map the complaint back to the right MailWizz subscriber and suppress them — because a complainer who keeps receiving mail is a fast route to a blocklist. The wrinkle is that some feedback-loop providers anonymise the recipient address in their reports, stripping out the very email you would use to identify the complainer. This is exactly why the injected subscriber UID and list identifier matter: when the recipient address is hidden, those headers are the only way to know who complained and unsubscribe them. A feedback-loop setup that does not preserve and parse these identifiers cannot act on anonymised complaints at all, which means complaints accumulate invisibly. Handling FBLs properly, including the anonymised case, is part of the same pipeline discipline that makes bounce processing reliable.

The multi-tenant scale problem

Running this stack as a multi-tenant ESP introduces a scale problem that naive setups cannot handle. You cannot realistically maintain a separate API key, bounce mailbox and list configuration for each of a thousand customers — the per-customer approach simply does not scale. The standard solution is a single handler that reads the subscriber UID directly from PowerMTA’s logged headers and calls the MailWizz API to unsubscribe the correct contact regardless of which customer owns them, so one pipeline serves every tenant. Some operators pair this with catch-all return paths that encode the subscriber UID in the address itself, extracting it to drive suppression. On the sending side, the virtual-MTA pools isolate each tenant’s reputation, and generating the PowerMTA configuration for hundreds or thousands of IPs and VMTAs becomes its own engineering exercise that operators automate. None of this is in the basic documentation; it is the accumulated practice of people who have run these stacks at scale, which is precisely the knowledge a managed integration brings.

How we build and run your MailWizz + PowerMTA integration

With MCSNET, the integration is built the way experience says it should be, not assembled from forum threads. We wire the MailWizz Delivery Servers to PowerMTA’s listeners, design the virtual-MTA pools for your streams, tenants or risk tiers, and tune the per-ISP throttling and backoff so you send fast and stay under provider limits — then keep tuning it as conditions change. We make sure the identifying headers flow and are parsed, and we build the complete bounce and feedback-loop pipeline, processing both PowerMTA’s logged bounces and the out-of-band DSNs that simple setups miss, mapping every bounce and complaint back to the right subscriber for reliable suppression. All of it runs on PowerMTA on our own IPs, with reverse DNS, authentication and warming handled, so the MailWizz front end sits on delivery infrastructure that actually performs. You get the integration done right the first time, rather than the version that works until reputation quietly erodes.

# mcsnet · mailwizz + powermta integration · brand.example
delivery srv   port 587 → vmta pool: transactional  ok
delivery srv   port 2525 → vmta pool: marketing  ok
per-isp        gmail/yahoo/outlook throttling tuned
headers        subscriber-uid + list-id flowing  ok
bounce: in-band  accounting logs → api unsubscribe  ok
bounce: out-band return-path mailbox parsed  ok
fbl            complaints → suppress (uid-mapped)  ok
status         both bounce paths live · nothing lost

Why work with us?

Because we have built this exact integration many times, and we know where it breaks. The connection is easy; the parts that take others months of trial and error — virtual-MTA pool design, per-ISP throttling that needs constant tuning, and a bounce pipeline that catches the out-of-band DSNs most setups silently lose — are ones we wire correctly from the start. We run it on PowerMTA on IPs we own, so reverse DNS, authentication and warming are handled rather than left to you, and the whole stack stays resident in Canada under PIPEDA with a permission-based, CASL-aware approach. We bring the deliverability and operations culture PowerMTA rewards, so you get the campaign flexibility of MailWizz on a delivery engine that is tuned, monitored and correctly integrated — instead of a stack that sends fine and degrades invisibly.

Who this is for, and who it is not

It is for senders and ESPs who run, or want to run, MailWizz on PowerMTA and need the integration done by people who have done it before — operators scaling past what a casual setup can handle, or anyone whose existing stack is losing bounces, tripping ISP limits, or drifting toward blocklists. It is for white-label operators needing per-tenant pool isolation and a bounce pipeline that scales across customers. It is not for a non-technical sender who wants a drag-and-drop platform with no engine to understand — PowerMTA is the engine, not a Mailchimp interface, and a simpler stack or managed platform may suit better, which we will say honestly. The integration pairs the MailWizz application with the PowerMTA delivery layer and the feedback-loop and bounce processing that keep it clean. Wired correctly, tuned continuously, and built with the complete bounce pipeline from the start, MailWizz and PowerMTA become the high-volume stack they are meant to be — instead of one that quietly poisons its own lists.

Frequently asked questions

How does MailWizz connect to PowerMTA?
Through a Delivery Server. In MailWizz you add an SMTP Delivery Server defining the host, port, authentication method and encryption pointing at PowerMTA, and on the PowerMTA side you configure an SMTP listener that accepts authenticated connections from the MailWizz application server. MailWizz then relays each campaign to PowerMTA over SMTP, and PowerMTA delivers it from the appropriate virtual-MTA pool with all its throttling and routing applied. That basic connection is straightforward and well-documented. What turns a working connection into a working email operation is everything around it — the pool design, the per-ISP throttling, and above all the bounce and feedback-loop processing — which is where the real engineering lives.
How do I separate transactional and marketing mail in MailWizz and PowerMTA?
By pointing different MailWizz Delivery Servers at different PowerMTA ports, and mapping each port to a different virtual-MTA pool. You configure PowerMTA so that one port routes to a transactional pool on its own IPs and another routes to a bulk-marketing pool on different IPs, then create two Delivery Servers in MailWizz aimed at those ports. The result is that your time-critical transactional mail sends from a pool whose reputation is insulated from your marketing, so a complaint spike on a campaign cannot affect order confirmations. MailWizz Delivery Server Groups and weighted rotation let you distribute and balance across pools, which is also how per-tenant isolation is built in a multi-tenant setup.
Why do bounces not show up correctly in MailWizz with PowerMTA?
Almost always because of how the bounce path is set up, and a specific gotcha catches most people. There are three ways to get bounces from PowerMTA into MailWizz: a traditional IMAP/POP3 bounce mailbox MailWizz polls, an accounting-file handler that reads PowerMTA's logs and calls the MailWizz API, or PowerMTA's webhook feature pushing records to an endpoint. The trap is that a large share of bounces — often 40 to 60 percent — are asynchronous DSNs delivered to your return-path after the connection closed, and these never appear in PowerMTA's in-band logs, so a webhook-only or accounting-only setup silently misses them. A complete pipeline processes both PowerMTA's logged bounces and the return-path mailbox, which is exactly the part DIY setups tend to leave half-built.
Can MailWizz and PowerMTA run an ESP with many customers?
Yes, and it is a common use, but the bounce handling needs the right design at scale. You cannot realistically configure a separate API key and list for thousands of customers, so the standard approach is a handler that reads the subscriber identity straight from the headers PowerMTA logs — chiefly the MailWizz subscriber UID — and calls the API to unsubscribe the right contact regardless of which customer they belong to. Combined with virtual-MTA pools that isolate each tenant's reputation, this lets one MailWizz-plus-PowerMTA stack serve many customers cleanly. Building the VMTA configuration and the bounce pipeline for that scale is real engineering, which is what we handle rather than leaving you to assemble it from forum threads.
Is setting up MailWizz with PowerMTA difficult?
The initial connection is not — pointing a Delivery Server at a PowerMTA listener takes minutes. The difficulty is everything that makes it perform and stay clean over time: designing the virtual-MTA pools, tuning per-ISP throttling and backoff so you send fast without tripping limits, mapping bounces and complaints reliably back to subscribers, and catching the out-of-band bounces that simple setups miss. PowerMTA is the engine, not a Mailchimp-style interface, and it rewards a deliverability and operations culture. That is the gap we fill: we have built this integration many times, so the parts that take others months of forum-reading and trial and error are ones we wire correctly from the start.
Talk to the team that runs the MTA, not just the box.
Toronto-based, PIPEDA-aligned email infrastructure — licensed, configured, and monitored.
Configure a server