Mautic 5 Slow Email Sending – 25k Contacts via Custom SMTP Taking Too Long

Your software
My Mautic version is:5.0.4
My PHP version is:8.2
My Database type and version is:MySQL

SMTP : Custom SMTP (KumoMTA)

Your problem
My problem is:
I configured a custom SMTP (KumoMTA) with Mautic and launched a campaign to send emails to around 25k contacts.

However, the campaign is extremely slow:

  • After 14–15 hours, only ~12,000 emails were sent

  • Campaign is still running

  • Throughput is roughly 800–900 emails/hour

Based on debugging and logs, it looks like:

Mautic is sending emails one-by-one over SMTP, opening/closing connections repeatedly instead of batching or parallel sending.

Because of this, sending speed is very slow compared to other tools (e.g., I tried with same SMTP with other tool it sends much faster).

Email configuration

  • Transport: SMTP

  • Host: KumoMTA

  • Port: 25

  • Encryption: None

  • Sending method: Immediate (not queued)

Is there a recommended configuration for high-volume SMTP sending?

You may not send multiple emails simultaneously through a single transaction.

In other words, if you’re sending 50 emails, it needs to make 50 different HELO, regardless of your client (this is how the SMTP work).

Probably a misconception about PHP (Mautic is a simple PHP app. Nothing fancy, really.)
PHP is a single threaded interpreter. It doesn’t support parallel tasks (never did, never will). It’s always one after the other.

Your “slow sending” experience is most likely due to a slow server (it’s not about the quantity but the quality of the hardware).

In our solution, we configured the queue system and used the following command to improve email sending performance:

sudo -u www-data bash -c ‘cd /var/www/html/mautic && for i in {1..5}; do php bin/console messenger:consume -vv email --limit=200 --time-limit=3600 --memory-limit=512M --no-reset > var/logs/worker_$i.log 2>&1 & done’

This command starts 5 parallel workers, each consuming email messages from the queue.

As a result, emails are processed concurrently instead of sequentially, which significantly increases the overall sending speed.