0

We are in the process of migrating from Exchange 2016 CU19 to Exchange Online. We are running a full hybrid configuration with two on-premise servers in a DAG. So far we have only migrated a small batch of users (about 25) to monitor and check we are happy with the configuration. One of these users is trying to send a single email to two distribution lists containing a combined total of 469 internal recipients. The user is then receiving a NDR which says:

Your message wasn't delivered to anyone because there are too many recipients. The limit is 400. Your message has 469 recipients.

user1@domain.com
Your message has too many recipients. Please try to resend with fewer recipients.

user2@domain.com
Your message has too many recipients. Please try to resend with fewer recipients.

etc...

Diagnostic information for administrators:

Generating server: server1.domain.com

user1@domain.com
Remote Server returned '550 5.5.3 RESOLVER.ADR.RecipLimit; too many recipients'

user2@domain.com
Remote Server returned '550 5.5.3 RESOLVER.ADR.RecipLimit; too many recipients'

etc...

The problem is, we don't have any recipient limits set to 400, at least none that I can find. The following Microsoft article mentions three locations that recipient limits can be set

Quote from Message size and recipient limits in Exchange Server article:

The recipient limit on a message is enforced in two places:

  • At the protocol level during email transfer where the Receive connector MaxRecipientsPerMessage is enforced.

  • At the Transport level during categorization where MaxRecipientEnvelopeLimit is enforced.

There is also the mailbox level RecipientLimits, which overrides the Transport level MaxRecipientEnvelopeLimit and is also enforced during message categorization. If the mailbox level RecipientLimits is set to unlimited (the default value), then the maximum number of recipients per message for the mailbox is controlled by the Transport level MaxRecipientEnvelopeLimit.

Another snippet:

The Receive connector MaxRecipientsPerMessage applies to authenticated and anonymous SMTP client submissions. However, when an Exchange server relays email through another Exchange server in the same organization, the Receive connector MaxRecipientsPerMessage is bypassed.

With this in mind, I have run the following commands to check our configuration. However, according to the quote above, the limits set on our on-premise server as shown below should not have any affect as the senders mailbox has a specific limit (I.e. not unlimited) and the email in question is being sent to internal recipients:

On-Premise:

PS C:\> Get-ReceiveConnector | ft Name, MaxRecipientsPerMessage

Name                        MaxRecipientsPerMessage
----                        -----------------------
Default Server1                                5000
Client Proxy Server1                            200
Default Frontend Server1                        200
Outbound Proxy Frontend Server1                 200
Client Frontend Server1                         200
Default Server2                                5000
Client Proxy Server2                            200
Default Frontend Server2                        200
Outbound Proxy Frontend Server2                 200
Client Frontend Server2                         200


PS C:\> Get-TransportConfig | fl MaxRecipientEnvelopeLimit


MaxRecipientEnvelopeLimit : 7

As we are a school, we set the MaxRecipientEnvelopeLimit really low to create a 'default' setting which stops pupils from sending silly messages to as many people as they can. We then increase the mailbox recipient limits for our staff. With Exchange Online, we have configured the default mailbox plan to set a low recipient limit on new mailboxes and we increase the staff manually as before. However, as mentioned in the article/quote above, the MaxRecipientEnvelopeLimit is only applied if the sender's mailbox RecipientLimits is set to unlimited (which it's not).

Exchange Online:

PS C:\> Get-TransportConfig | fl MaxRecipientEnvelopeLimit

MaxRecipientEnvelopeLimit : Unlimited

PS C:\> Get-Mailbox sender@domain.com | fl RecipientLimits

RecipientLimits : 500

If I've understood the Microsoft article correctly, the only setting which should take effect when delivering internal mail is the recipient limit on the sender's mailbox, unless that is set to unlimited in which case the MaxRecipientEnvelopeLimit on the transport config is applied.

I don't know where the NDR is getting the 400 limit from. The recipients (staff only) on our on-premise servers all have their mailbox's RecipientLimits set to 400, but they are receiving an email, not sending so this shouldn't apply. The only other thing I can think of, is that before I migrated the senders mailbox to Exchange Online, their RecipientLimits would have been set to 400 on-premise. But as their mailbox doesn't exist on-premise anymore, I can't change it and the limit shouldn't exist/apply anymore either, unless it's a bug.

Daniel
  • 243
  • 1
  • 7
  • 16
  • Because this is related to your hybrid and mailbox migrations, open a support case from your Office 365 tenant. Office 365 support is free of charge. – joeqwerty May 27 '21 at 15:01

1 Answers1

0

Based on the NDR messages, it seems to be generated from your on-prem Exchange server(server1.domain.com), right?

Did you enable centralized mail transport? Could you find this email on your on-prem Exchange server if you perform a message tracking:

Get-MessageTrackingLog -EventId RECEIVE -Source SMTP -Sender <Sender@domain.com> -Recipients <Recipient@domain.com> -Start "<Start Time and Date>" -End "<End Time and Date>" -MessageSubject <Subject> | Sort-Object -Property @{Expression = "Timestamp"; Descending = $false} | ft Timestamp, EventId, Source, Sender, Recipients, MessageSubject, ConnectorId -AutoSize

enter image description here

If there is an entry with a connector which received this message, maybe the following inspections are helpful:

  1. Run the following command to check the connector's recipient limit: Get-ReceiveConnector -Identity "<ConnectorId>" | fl MaxRecipient*

  2. If the limit is lower than the recipient count(469), try adjusting it with a larger number(e.g. 500): Get-ReceiveConnector -Identity "<ConnectorId>" | Set-ReceiveConnector -MaxRecipientsPerMessage 500

  3. Then adjust the organization recipient limit: Get-TransportConfig | Set-TransportConfig -MaxRecipientEnvelopeLimit 500

  4. Finally, restart MS Exchange Transport service on on-prem server and send emails again to see if there is any difference.

Ivan_Wang
  • 1,323
  • 1
  • 3
  • 4