Optimizing send performance

When sending thousands of Emails it is necessary to manage how fast those Emails are sent. It is important to keep in mind that the Universal Messenger just generates (personalizes) the Emails and connects with SMTP server(s) to deliver them.

How fast the Emails are actually delivered to the recipient eventually depends on how fast the SMTP server is. The Universal Messenger is generally capable of generating thousands of personalized Emails per second but it is very unlikely that one single SMTP server can send them as fast.

You can therefore finely tune how the UM sends its Emails to the SMTP server(s) (all values are defined in cmsbs.properties):

  • cmsbs.mail.threads = 3 maximum number of concurrent connections

  • cmsbs.mail.delay = 100 time between two outgoing Emails within the same connection (in ms)

  • cmsbs.smtp.maxIdleTime = 120 maximum idle time for a connection

  • cmsbs.smtp.maxUseTime = 1800 maximum time a connection can be used

  • cmsbs.smtp.maxMails = 5 maximum number of Emails sent through a single connection

Keep in mind that if you send the Emails too slowly it might take too long over all to deliver all Emails. However if you send the Emails to quickly you might overload your SMTP server.

Details (in German): https://www.universal-messenger.de/knowledge-base/intern/01_faqs/faq_smtp_performance/index.html

Multiple SMTP relays

It is possible to use more than one SMTP server to send your Emails.

  • cmsbs.mail.relays = a b c

  • cmsbs.mail.relay.a.smtpserver = “smtp-a.local.example.com”

  • cmsbs.mail.relay.b.smtpserver = “smtp-b.local.example.com”

  • cmsbs.mail.relay.c.smtpserver = “smtp-c.local.example.com”

The performance tuning properties mentioned before can be separately configured for each SMTP server.

  • cmsbs.mail.relay.a.threads = 5

  • cmsbs.mail.relay.a.delay = 2000

Address based rules per relay

You can also define which relay to use based on recipient Email address, for example if you want to use an internal mail relay for your local Email addresses.

  • cmsbs.mail.relay.a.allow.toPattern = “@pinuts.de$”

  • cmsbs.mail.relay.a.deny.toPattern = “@googlemail.com$”

  • cmsbs.mail.relay.default.deny.toPattern = “@pinuts.de$”

Type based rules per relay

You can define which relay to use based on the type of Email (newsletter, notification).

  • cmsbs.relay.a.allow.mailCategories = Newsletter

  • cmsbs.relay.b.deny.mailCategories = Notification

  • cmsbs.relay.c.allow.mailCategories = Newsletter Notification

You can define in each event file which relay to use for given event.
<event><tag>__allowMailRelay_a</tag></event>

Message rate limits and throttling

Please note that different SMTP servers might have different rate limits or might otherwise throttle mail delivery deliberately.

Microsoft Exchange

Microsoft Exchange has certain default rate limits that might be significant: https://docs.microsoft.com/en-us/exchange/mail-flow/message-rate-limits