Wednesday, 4 November 2015

MessageRateLimit on Exchange 2013 Receive Connector


A couple of days ago a customer contacted me saying that he had the following issue when sending authenticated SMTP e-mail messages from an external host: 

4.4.2 Message submission rate for this client has exceeded the configured limit.

Some of the messages would pass through okay, but the majority of them would receive the error. The first thing he checked was MessageRateLimit property on the Receive Connector on the Exchange 2013 CAS server which was configured like this:

 

 However, he did not check the Receive Connector on the backend Exchange 2013 Mailbox servers.

This is how it was configured:

[PS] C:\Windows\system32>Get-ReceiveConnector -Server EXMBX01 | select identity,*messageratelimit,bindings | ft -AutoSize

Identity                                              MessageRateLimit Bindings
--------                                              ---------------- --------
EXMBX01\Receive Connector - Mailbox Transport Service Unlimited        {[::]:25, 0.0.0.0:25}
EXMBX01\Receive Connector - From CAS Proxy Client     5                {[::]:465, 0.0.0.0:465}

 The MessageRateLimit here is set to 5 which is clearly an issue if the host needs to send more than 5 messages per minute. We configured this to 100 on each of the Exchange 2013 Mailbox servers:

[PS] C:\Windows\system32>Set-ReceiveConnector -Identity "EXMBX01\Receive Connector - From CAS Proxy Client" -MessageRateLimit 100 

[PS] C:\Windows\system32>Get-ReceiveConnector -Server EXMBX01 | select identity,*messageratelimit,bindings | ft -AutoSize

Identity                                              MessageRateLimit Bindings
--------                                              ---------------- --------
EXMBX01\Receive Connector - Mailbox Transport Service Unlimited        {[::]:25, 0.0.0.0:25}
EXMBX01\Receive Connector - From CAS Proxy Client     100              {[::]:465, 0.0.0.0:465}


And the problem went away.

When the mail flows from the host on the Internet it reaches SMTP Receive Connector on CAS 2013 on port 587 which is used only for authenticated SMTP traffic. CAS 2013 role proxies the request to Receive Connector on Exchange 2013 Mailbox server on port 465 to deliver the mail. That is the reason why we actually need to configure MessageRateLimit on the backend Mailbox and not on the frontend CAS server.