Message rate limits and throttling

Summary: Learn how message rate limits affect mail flow and connections in Exchange 2016.

Message throttling refers to a group of limits that are set on the number of messages and connections that can be processed by an Exchange server. These limits include message processing rates, SMTP connection rates, and SMTP session timeout values. These limits work together to protect an Exchange server from being overwhelmed by accepting and delivering messages. Although a large backlog of messages and connections may be waiting to be processed, the message throttling limits enable the Exchange server to process the messages and connections in an orderly manner.

Note

Back pressure is another feature that helps to avoid overwhelming the system resources of an Exchange server. Key resources, such as available hard disk space and memory utilization are monitored, and when the utilization level exceeds the specified threshold, the server gradually stops accepting new connections and messages. For more information, see Understanding back pressure. There are also static limits that are available on messages, such as the maximum message size, the size of individual attachments, and the number of recipients. For more information about message size limits, see Message size limits in Exchange 2016.

You can set the message rate limits and throttling options in the following locations:

  • Mailbox servers and Edge Transport servers. Collectively, we'll refer to these as transport servers.

  • Send connectors

  • Receive connectors

  • Users

Message throttling on transport servers

The following table shows the message throttling options that are available on Mailbox servers and Edge Transport servers.

Rate limit Default value Exchange Management Shell configuration EAC configuration
Maximum concurrent mailbox deliveries: The maximum number of delivery threads that the Transport service and the Mailbox Transport Delivery service can have open at the same time to deliver message to mailboxes.
20
We recommend that you don't modify this value unless you're directed to do so by Microsoft Customer Service and Support.
Cmdlet: Set-TransportService and Set-MailboxTransportService
Parameter: MaxConcurrentMailboxDeliveries
Not available
Maximum concurrent mailbox submissions: The maximum number of submission threads that the Transport service and the Mailbox Transport Submission service can have open at the same time to send messages from mailboxes.
20
We recommend that you don't modify this value unless you're directed to do so by Microsoft Customer Service and Support.
Cmdlet: Set-TransportService and Set-MailboxTransportService
Parameter: MaxConcurrentMailboxSubmissions
Not available
Maximum connection rate per minute: The maximum rate that connections are allowed to be opened with the Transport service.
1200
Cmdlet: Set-TransportService
Parameter: MaxConnectionRatePerMinute
Not available
Maximum concurrent connections: The maximum number of outbound connections that the Transport service can have open at a time.
1000
This value must be greater than or equal to the MaxPerDomainOutboundConnections value.
Cmdlet: Set-TransportService
Parameter: MaxOutboundConnections
Servers > Servers > Properties Edit icon > Transport limits section > Maximum concurrent connections.
Note: In the EAC, you can only set the values 100, 1000, 5000, or unlimited.
Maximum concurrent connections per domain: The maximum number of outbound connections that the Transport service can have open to a single domain at a time.
20
This value must be less than or equal to the MaxOutboundConnections value.
Cmdlet: Set-TransportService
Parameter: MaxPerDomainOutboundConnections
Servers > Servers > Properties Edit icon > Transport limits section > Maximum concurrent connections per domain.
Note: In the EAC, you can only set the values 100, 1000, 5000, or unlimited.

To see the values of these server message throttling settings, run the following command in the Exchange Management Shell:

Write-Host "Transport service:" -ForegroundColor yellow; Get-TransportService | Format-List MaxConcurrent*,MaxConnection*,Max*OutboundConnections; Write-Host "Mailbox Transport service:" -ForegroundColor yellow; Get-MailboxTransportService | Format-List MaxConcurrent*

Note

The Pickup directory and the Replay directory that are available on Edge Transport servers and Mailbox servers also have messages rate limits that you can configure. Typically, the Pickup directory and the Replay directory aren't used in everyday mail flow. For more information, see Configure the Pickup Directory and the Replay Directory. The maximum number of message files per minute that can be processed by the Pickup directory and the Replay directory is 100. Each directory can independently process message files at this rate.

Message throttling on Send connectors

The following table shows the message throttling options that are available on Send connectors. Send connectors exist in the Transport service on Mailbox servers and on Edge Transport servers. For more information, see Send connectors.

Rate limit Default value Exchange Management Shell configuration EAC configuration
Connection inactivity time out: The maximum amount of time that an open SMTP connection with a source messaging server can remain idle before the connection is closed.
00:10:00 (10 minutes)
Cmdlet: New-SendConnector and Set-SendConnector
Parameter: ConnectionInactivityTimeOut
Not available
Maximum messages per connection: The maximum number of messages that can be sent over a single connection
20
Cmdlet: New-SendConnector and Set-SendConnector
Parameter: SmtpMaxMessagesPerConnection
Not available

To see the values of these Send connector throttling settings, run the following command in the Exchange Management Shell:

Get-SendConnector | Format-List Name,ConnectionInactivityTimeout,SmtpMaxMessagesPerConnection

Message throttling on Receive connectors

The following table shows the message throttling options that are available on Receive connectors. Receive connectors are available in the Front End Transport service on Mailbox servers, the Transport service on Mailbox servers, and on Edge Transport servers. For more information, see Receive connectors.

Rate limit Default value Exchange Management Shell configuration EAC configuration
Connection time out: The maximum amount of time that an SMTP connection with a source messaging server can remain open, even when the source messaging server is transmitting data.
00:10:00 (10 minutes) for Receive connectors on Mailbox servers.
00:05:00 (1 minute) for Receive connectors on Edge Transport servers.
This value must be greater than the ConnectionInactivityTimeOut value.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: ConnectionTimeout
Not available
Connection inactivity time out: The maximum amount of time that an open SMTP connection with a source messaging server can remain idle before the connection is closed.
00:05:00 (5 minutes) for Receive connectors on Mailbox servers.
00:01:00 (1 minute) for Receive connectors on Edge Transport servers.
This value must be less than the ConnectionTimeout value.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: ConnectionInactivityTimeOut
Not available
Maximum inbound connections: The maximum number of inbound SMTP connections that are allowed at the same time.
5000
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: MaxInboundConnection
Not available
Maximum inbound connections per source: The maximum number of inbound SMTP connections that are allowed from a source messaging server at the same time.
unlimited on the default Receive connector named Default <ServerName> in the Transport service on Mailbox servers.
20 on other Receive connectors on Mailbox servers and Edge Transport servers.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: MaxInboundConnectionPerSource
Not available
Maximum inbound connection percentage per source: The maximum percentage of inbound SMTP connections that are allowed from a source messaging server at the same time.
100 percent on the default Receive connector named Default <ServerName> in the Transport service on Mailbox servers.
2 percent on other Receive connectors on Mailbox servers and Edge Transport servers.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: MaxInboundConnectionPercentagePerSource
Not available
Message rate limit: The maximum number of messages per minute that can be sent by a single source.
unlimited on the following default Receive connectors:
• Default <ServerName> in the Transport service on Mailbox servers.
• Default Frontend <ServerName> in the Front End Transport service on Mailbox servers.
• Outbound Proxy Frontend <ServerName> in the Front End Transport service on Mailbox servers.
5 on the following default Receive connectors:
• Client Proxy <ServerName> in the Transport service on Mailbox servers.
• Client Frontend <ServerName> in the Front End Transport service on Mailbox servers.
600 on the default Receive connector named Default internal Receive connector <ServerName> on Edge Transport servers.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: MessageRateLimit
Not available
Message rate source: This indicates how the message submission rate is calculated. Valid values are:
User: The rate is calculated for sending users (specified with the MAIL FROM SMTP command).
IPAddress: The rate is calculated for sending hosts.
All: The rate is calculated for both sending users and sending hosts.
IPAddress on the following default Receive connectors:
• Default <ServerName> in the Transport service on Mailbox servers.
• Default Frontend <ServerName> in the Front End Transport service on Mailbox servers.
• Outbound Proxy Frontend <ServerName> in the Front End Transport service on Mailbox servers.
• Default internal Receive connector <ServerName> on Edge Transport servers.
User on the following default Receive connectors:
• Client Proxy <ServerName> in the Transport service on Mailbox servers.
• Client Frontend <ServerName> in the Front End Transport service on Mailbox servers.
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: MessageRateSource
Not available
Tarpit interval: The amount of time to artificially delay SMTP responses to unauthenticated remote servers that appear to be abusing the connection. Authenticated connections are never delayed in this manner.
00:00:05 (5 seconds)
Cmdlet: New-ReceiveConnector and Set-ReceiveConnector
Parameter: TarpitInterval
Not available

To see the values of these Receive connector message throttling settings, run the following command in the Exchange Management Shell:

Get-ReceiveConnector | Format-List Name,Connection*,MaxInbound*,MessageRate*,TarpitInterval

Message throttling on users

The Microsoft Exchange Throttling service tracks resource settings for specific uses and caches the information in memory. Mail flow throttling settings are also known as a budget. Restarting the Microsoft Exchange Throttling service resets the mail flow throttling budgets.

Each mailbox has a ThrottlingPolicy setting. The default value for this setting is blank ($null). You can use the ThrottlingPolicy parameter on the Set-Mailbox cmdlet to configure a throttling policy for a mailbox.

For more information, see the following topics: