Scenario: A mailbox has sent to more recipients than allowed by the recipient rate limit that is set in their throttling policy. For example, a mailbox can only send out to 100 recipients within a 24 hour period, BUT that mailbox has managed to send out to 500 recipients. How can this be?
Whats happening: A mailbox can send to more than 100 recipients if:
- The 24 hours have been completed for that mailbox. The will be able to send for up to another 100 recipients.
- The throttling service has been restarted on the mailbox server where the mailbox is located.
- If a user sends to a distribution list, as the distribution list will only be counted as one recipient EVEN though there are 400 recipients in that distribution list.
Here is the WorkFlow of the RecipientRateLimit in the throttling Policy.
Terminology:
Token: The token is the number of recipients which has already been processed
Token Bucket Map: This is the table where the guids of the mailboxes are kept with the current RecipientRateLimit.
The token bucket map is held in memory when the Throttling service is started on the Mailbox Server. As new mailboxes send mail, they are added to the bucket map. When the mailbox submits mail, the throttling service checks the bucket map to obtain the token for the sender. In order for messages to be sent by the user, this must be true:
Obtain Token + Token Bucket Map <= RecipientRateLImit
Example: If the mailbox is trying to send 10 recipients ( Obtain Token) but the user has previously sent to 96 recipients (Token Bucket Map), sending would fail: 96 + 10 <= 100
But if the mailbox is sending to 2 recipients (and not 10), sending would succeed: 96 + 2 <= 100
Distribution groups are counted as one sender and further into the transport process of the sent message the distribution groups is expanded into numerous recipients. Sending a message from a mailbox always originates from the mailbox server where the mailbox is located on. This is the mailbox server holds the Token Bucket Map. The expansion of the distribution group can happen on any server during the transport process, thus its not logically possible to store the true number of recipients for that sender when a distribution group is used. This is why the Distribution Group is a loophole to the Recipient Rate Limit.