How Many Mails Can Mautic Send out Per Minute? - benchmarking results in post!

I have seen a number of posts around this issue, but have not been able to find clear benchmarks.

We have a client who is sending through Amazon SES with a rate limit of 77 mails/second.

Question can Mautic send out this fast using API connection ?

So I have run some benchmarking here and using the mautic spool and cronjob it seems that the maximum number of mails sent per minute is around 290!!

I have set the system up to send 4500 per minute, I did this by running the cronjob every minute and the number of mails per send as 4500, however look at my benchmarking below:

The system is currently sending out 2 segment mailers and a campaign mailer (m1,m2,m3). M1 was started 2 hours after the segment mailers (m2 & m3) so it seems that the logic is neither FILO or LILO or FIFO - what is it - how does this thing work :slight_smile:

I know removed the mautic queue and used Send Immediately. Remember my Amazon SES rate limit is set to 4,500/minute (77/seconds).

The only way I could benchmark this was old school by actually timing the minute I start and the minute the send finishes watching the screen and to send out 30,000 emails it took 39 minutes!!

Is this something that sounds correct ? I know understand why the client was surprised he received an email at 10 in the evening when it was scheduled during the day, however it was sending to a segment of 600K.

Am I missing something to speed things up here ?

@joeyk @rcheesley - any ideas, have you had any different experience ?

Do you just use one cron job
php console mautic:emails:send ?
And you reach 290 emails/second?
With Amazon SES and api?


Is possible to do that sending rate per minute with Postal SMTP?

Can’t find anywhere what is limit for Postal SMTP.

I’ve also huge email list (about 250k) and want send it in 4hours the most…

A quick question to save you some trouble: did you warm up to send more then 100 emails / day for your Postal IPs?

I make warm-up with 80-100mails per day. I have done that with Mailreach service.
Anything else you can suggest to me?

Not particularly, Just wanted to make sure you are not sending 250k messages on your own IP without proper warmup :slight_smile:

I hope it’s okay, if I chime in with a (maybe a bit off-topic) question:

What is warmup in this context? How crucial is it and how is it done?


Well, with postal you are using your own ips. You need to warm up those ips otherwise you wont get anything through.

Here is some reading material:

1 Like

As a mistake which subsequently turned into a test, I set a campaign to automatically restart contacts and allowed contacts to restart the campaign. Within minutes I had spooled something like 4000 emails (luckily to my test account) and rate limited the email server we use. Fortunately, the mail server meets our relatively low sending volumes, but I was quite alarmed at the sheer amount of emails Mautic generated with my buggy campaign setup.

Hi Joeyk

What is the maximum number of emails that can be sent per second through Mautic?
What is the best practice to setup Mautic infra?
Using AWS RDS will make emails go faster or not?

It depends on your infrastructure, I’m not using AWS RDS, I can’t consult you on that.
You can send faster if you use multi-thread.
What is your SMTP?

Thanks Joeyk,

I am using AWS SES API

Can you elabrate more about using mutli thread

An article will be very helpfull

Hi, I don’t know about any article, I agree it would be good if someone would create one.

You need to use this in order to have multiple threads:


Here is the full help:

  The help command displays help for a given command:
    php bin/console help list
  You can also output the help in other formats by using the --format option:
    php bin/console help --format=xml list
  To display the list of available commands, please use the list command.
root@mauticsichtbar:/var/www/html/mautic# php bin/console mautic:email:send -help
  Processes SwiftMail's mail queue

  mautic:emails:send [options]

      --message-limit[=MESSAGE-LIMIT]      Limit number of messages sent at a time. Defaults to value set in config.
      --time-limit[=TIME-LIMIT]            Limit the number of seconds per batch. Defaults to value set in config.
      --do-not-clear                       By default, failed messages older than the --recover-timeout setting will be attempted one more time then deleted if it fails again.  If this is set, sending of failed messages will continue to be attempted.
      --recover-timeout[=RECOVER-TIMEOUT]  Sets the amount of time in seconds before attempting to resend failed messages.  Defaults to value set in config.
      --clear-timeout[=CLEAR-TIMEOUT]      Sets the amount of time in seconds before deleting failed messages.  Defaults to value set in config.
      --lock-name[=LOCK-NAME]              Set name of lock to run multiple mautic:emails:send command at time
      --bypass-locking                     Bypass locking.
  -t, --timeout=TIMEOUT                    If getmypid() is disabled on this system, lock files will be used. This option will assume the process is dead after the specified number of seconds and will execute anyway. This is disabled by default.
  -x, --lock_mode=LOCK_MODE                Allowed value are "pid" or "flock". By default, lock will try with pid, if not available will use file system [default: "pid"]
  -f, --force                              Deprecated; use --bypass-locking instead.
  -h, --help                               Display this help message
  -q, --quiet                              Do not output any message
  -V, --version                            Display this application version
      --ansi                               Force ANSI output
      --no-ansi                            Disable ANSI output
  -n, --no-interaction                     Do not ask any interactive question
  -e, --env=ENV                            The Environment name. [default: "prod"]
      --no-debug                           Switches off debug mode.
  -v|vv|vvv, --verbose                     Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

  The mautic:emails:send command is used to process the application's e-mail queue
  php bin/console mautic:emails:send

I suggest to experiment around with all options before you ask further questions, because how fast sending is really depends on your setup.

I don’t like to send too fast, because it really destroys deliverability if you just send the same content. Not worth it. I’m trying to send not faster then 200-300 Email / min, which is up to 10k / hour.

Big Thanks @joeyk