MailWizz → KumoMTA API Extension: Faster Campaign Submission with Lower Server Load

omniknoweth

Active Member
Hi everyone,


If you use MailWizz with KumoMTA, I have developed an extension that connects MailWizz directly to the KumoMTA API.

Instead of handing campaign messages to KumoMTA through a local SMTP connection, the extension submits them through the API. This gives MailWizz a faster and lighter submission path while KumoMTA handles the delivery workload.

What it does

The extension adds direct MailWizz → KumoMTA API delivery to your sending workflow.

MailWizz continues to manage your campaigns, lists, subscribers, templates and unsubscribe process. After messages are submitted, KumoMTA takes responsibility for queueing, routing, retries and delivery.

Main benefits

  • Direct MailWizz → KumoMTA API submission
  • Faster campaign handoff to the delivery infrastructure
  • Reduced application-server CPU and queue pressure
  • Less SMTP connection and handshake overhead on the MailWizz server
  • Separates campaign management from the heavy MTA delivery workload
  • Allows the MailWizz application and KumoMTA infrastructure to scale independently
  • Centralized visibility into queues, providers, domains and delivery activity through the KumoMTA operations UI

This can be especially useful when MailWizz and KumoMTA are processing high campaign volumes and you do not want the application server carrying delivery work that belongs on the MTA infrastructure.

Important clarification

The extension does not remove SMTP from final email delivery. KumoMTA still communicates with recipient mail servers through SMTP.

What it removes is the SMTP submission hop between MailWizz and KumoMTA.


Download the extension

=> Public URL https://github.com/saporus/mailwizz-kumomta-api-extension

=> The installable release is available here:
https://github.com/saporus/mailwizz-kumomta-api-extension/releases/tag/v1.1.1


Compatibility and requirements

  • Tested with MailWizz 2.7.3
  • Tested with PHP 8.1 for both web and CLI/cron processing
  • PHP 8.1.33 is currently running in our production environment
  • Requires access to the Omni Knoweth Enterprise SaaS platform for KumoMTA
  • Requires a valid tenant API key supplied through the enterprise platform
Other MailWizz and PHP versions may work, but they have not yet been included in our verified compatibility tests.

Before installing, please back up your MailWizz installation and test the extension in a staging environment where possible.

Useful links

KumoMTA operations UI:
https://go.magicsmtp.com/ui/

Omni Knoweth products and email infrastructure services:
https://www.omniknoweth.com/

Enterprise platform requirement

This extension is designed exclusively for the Omni Knoweth Enterprise SaaS platform for KumoMTA. It is not a standalone connector for a standard KumoMTA installation.

The extension requires the API services and integration layer provided by our enterprise platform. Customers also receive access to the KumoMTA operations UI for monitoring and managing their sending infrastructure:

Full disclosure: I am the developer behind Magic SMTP and this extension.

Questions, feedback and feature suggestions are welcome.
 
Last edited:
Why not use a github repository for the extension download, this will be transparent to anyone willing to use it.
P/S: Congrats on the work.
Thanks, Twisted1919. That makes sense, and I appreciate the suggestion and kind words.

I have now published the extension in a public GitHub repository so anyone can inspect the source before installing it.
 
some notes:

https://github.com/saporus/mailwizz.../blob/main/magicsmtp/MagicsmtpExt.php#L60-L70
Maybe use the dswh_process_map filter hook for this, it is much much cleaner.

There's a controller()->renderJson() method you can use.
 
some notes:

https://github.com/saporus/mailwizz.../blob/main/magicsmtp/MagicsmtpExt.php#L60-L70
Maybe use the dswh_process_map filter hook for this, it is much much cleaner.

There's a controller()->renderJson() method you can use.

Thanks for reviewing the source and for the helpful recommendations.

I have implemented both changes:
  • Webhook processing now uses the dswh_process_map filter and MailWizz’s standard /dswh/{delivery-server-id} endpoint. The extension no longer reads or modifies DswhController.php.
  • Webhook responses now use controller()->renderJson().
The changes are available in version 1.1.2:
https://github.com/saporus/mailwizz-kumomta-api-extension/releases/tag/v1.1.2

Thanks again for taking the time to review it, and let me know if you further discover anything
 
Back
Top