Вопрос или проблема
Мы в процессе миграции с Exchange 2016 CU19 на Exchange Online. У нас настроена полная гибридная конфигурация с двумя локальными серверами в DAG. Пока мы мигрировали только небольшую партию пользователей (около 25), чтобы мониторить и проверить, устраивает ли нас конфигурация. Один из этих пользователей пытается отправить одно электронное письмо двум распределительным спискам, содержащим в общей сложности 469 внутренних получателей. В результате пользователь получает NDR, который сообщает:
Ваше сообщение не было доставлено никому, потому что слишком много получателей. Лимит - 400. У вашего сообщения 469 получателей.
[email protected]
У вашего сообщения слишком много получателей. Пожалуйста, попробуйте переслать с меньшим количеством получателей.
[email protected]
У вашего сообщения слишком много получателей. Пожалуйста, попробуйте переслать с меньшим количеством получателей.
и т.д...
Диагностическая информация для администраторов:
Сервер генерации: server1.domain.com
[email protected]
Удаленный сервер вернул '550 5.5.3 RESOLVER.ADR.RecipLimit; слишком много получателей'
[email protected]
Удаленный сервер вернул '550 5.5.3 RESOLVER.ADR.RecipLimit; слишком много получателей'
и т.д...
Проблема заключается в том, что у нас нет установленных лимитов получателей на 400, по крайней мере, ни одного, который я мог бы найти. В следующей статье Microsoft упоминается о трех местах, где могут быть установлены лимиты получателей.
Цитата из статьи Лимиты размера сообщений и получателей в Exchange Server:
Лимит получателя на сообщение применяется в двух местах:
На уровне протокола во время передачи электронной почты, где применяется MaxRecipientsPerMessage для соединителя приема.
На уровне транспортной категории, где применяется MaxRecipientEnvelopeLimit.
Также есть уровень почтового ящика RecipientLimits, который переопределяет уровень транспорта MaxRecipientEnvelopeLimit и также применяется во время категоризации сообщения. Если уровень почтового ящика RecipientLimits установлен на неограниченный (значение по умолчанию), то максимальное количество получателей на сообщение для почтового ящика контролируется уровнем транспорта MaxRecipientEnvelopeLimit.
Еще один фрагмент:
MaxRecipientsPerMessage для соединителя приема применяется как для аутентифицированных, так и для анонимных отправлений SMTP-клиентов. Тем не менее, когда сервер Exchange пересылает электронную почту через другой сервер Exchange в одной организации, MaxRecipientsPerMessage для соединителя приема обходится.
С учетом этого я выполнил следующие команды, чтобы проверить нашу конфигурацию. Однако, согласно цитате выше, лимиты, установленные на нашем локальном сервере, как показано ниже, не должны иметь никакого влияния, так как почтовый ящик отправителя имеет определенный лимит (т.е. не неограниченный), и электронное письмо, о котором идет речь, отправляется внутренним получателям:
Локальный:
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
Так как мы школа, мы установили MaxRecipientEnvelopeLimit
очень низким, чтобы создать “дефолтную” настройку, которая останавливает учеников от отправки глупых сообщений как можно большему количеству людей. Мы затем увеличиваем лимиты получателей для нашего персонала. С Exchange Online мы настроили план почтового ящика по умолчанию, чтобы установить низкий лимит получателей для новых почтовых ящиков, и мы увеличиваем лимиты для персонала вручную, как и раньше. Однако, как упомянуто в статье/цитате выше, MaxRecipientEnvelopeLimit
применяется только если лимиты получателей почтового ящика отправителя установлены на неограниченные (что не так).
Exchange Online:
PS C:\> Get-TransportConfig | fl MaxRecipientEnvelopeLimit
MaxRecipientEnvelopeLimit : Неограниченный
PS C:\> Get-Mailbox [email protected] | fl RecipientLimits
RecipientLimits : 500
Если я правильно понял статью Microsoft, единственная настройка, которая должна применяться при доставке внутренней почты, это лимит получателя на почтовом ящике отправителя, если только он не установлен на неограниченный, в этом случае применяется MaxRecipientEnvelopeLimit
в транспортной конфигурации.
Я не знаю, откуда NDR получает лимит 400
. Получатели (только персонал) на наших локальных серверах все имеют лимиты получателей их почтового ящика, установленными на 400, но они получают электронное письмо, а не отправляют, поэтому это не должно применяться. Единственное другое, что я могу подумать, это то, что до миграции почтового ящика отправителя в Exchange Online, их RecipientLimits
были установлены на 400 на локальных серверах. Но так как их почтовый ящик больше не существует на локальном сервере, я не могу изменить это, и лимит не должен существовать/применяться больше, если это не ошибка.
На основе сообщений NDR, похоже, они генерируются с вашего локального сервера Exchange (server1.domain.com), верно?
Вы включили централизованное транспортирование почты? Можете ли вы найти это письмо на вашем локальном сервере Exchange, если выполните отслеживание сообщений:
Get-MessageTrackingLog -EventId RECEIVE -Source SMTP -Sender <[email protected]> -Recipients <[email protected]> -Start "<Время и дата начала>" -End "<Время и дата окончания>" -MessageSubject <Тема> | Sort-Object -Property @{Expression = "Timestamp"; Descending = $false} | ft Timestamp, EventId, Source, Sender, Recipients, MessageSubject, ConnectorId -AutoSize
Если есть запись с соединителем, который получил это сообщение, возможно, следующие проверки будут полезны:
-
Запустите следующую команду, чтобы проверить лимит получателей соединителя:
Get-ReceiveConnector -Identity "<ConnectorId>" | fl MaxRecipient*
-
Если лимит меньше, чем количество получателей (
469
), попробуйте увеличить его до большего числа (например, 500):Get-ReceiveConnector -Identity "<ConnectorId>" | Set-ReceiveConnector -MaxRecipientsPerMessage 500
-
Затем настройте лимит получателей в организации:
Get-TransportConfig | Set-TransportConfig -MaxRecipientEnvelopeLimit 500
-
Наконец, перезапустите службу MS Exchange Transport на локальном сервере и снова отправьте электронные письма, чтобы увидеть, есть ли какая-либо разница.
Ответ или решение
В текущей ситуации с ошибкой 550 5.5.3 too many recipients
при отправке электронных писем из Exchange Online в распределительные списки на локальном Exchange сервере, важно тщательно проанализировать настройки и ограничения, присутствующие в вашей гибридной среде. Давайте разберем возможные корни проблемы, шаги для ее диагностики и предложения по решению.
Анализ проблемы
Вы находитесь на этапе миграции с Exchange 2016 CU19 на Exchange Online, используя полную гибридную конфигурацию, и в ходе миграции столкнулись с ошибкой, связанной с лимитами на количество получателей. Как вы верно заметили, ошибка возникает при отправке сообщения, содержающего 469 уникальных адресатов, что превышает лимит в 400 получателей.
Причины ошибки
-
Лимиты на уровне получателя:
Ваша текущая настройкаMaxRecipientEnvelopeLimit
имеет значение 7 на локальном сервере, что является достаточно низким ограничением, особенно в контексте гибридной конфигурации и смешанных сред Exchange. К тому же, вы указали, что для сотрудника, отправляющего сообщение, лимит на почтовом ящике установлен на 500; однако правило говорит о том, что в этом случае срабатывает лимит на уровне транспортного уровня, а не на уровне получателя. -
Централизованный транспорт:
Важно выяснить, включен ли централизованный почтовый транспорт (Centralized Mail Transport, CMT). Если CMT активен, все сообщения, даже отправленные из Exchange Online, будут передаваться через локальный Exchange сервер, что может привести к применению ограничений локального уровня. -
Отсутствие дампа маршрутов:
Если при отслеживании сообщения не удается найти его на локальном Exchange сервере с помощьюGet-MessageTrackingLog
, это может указывать на то, что сообщение было отклонено до его обработки.
Шаги для диагностики и решения
-
Проверка настроек маршрутизации:
Выполните команду для проверки отслеживания сообщений:Get-MessageTrackingLog -EventId RECEIVE -Source SMTP -Sender "<email вашего отправителя>" -Start "<Дата и время начала>" -End "<Дата и время конца>" | Sort-Object -Property Timestamp
Убедитесь, что сообщение действительно достигает локального сервера.
-
Проверка ограничений получателей:
Проверьте лимиты на получателей для всех необходимых соединителей:Get-ReceiveConnector | fl Name, MaxRecipient*
Убедитесь, что значение
MaxRecipientsPerMessage
для используемого соединителя достаточно высокое (например, 500 или более). Если нет, его можно изменить с помощью:Set-ReceiveConnector -Identity "<Имя соединителя>" -MaxRecipientsPerMessage 500
-
Корректировка транспорта:
УвеличьтеMaxRecipientEnvelopeLimit
на уровне транспорта:Set-TransportConfig -MaxRecipientEnvelopeLimit 500
-
Перезапуск службы:
После внесения изменений перезапустите службу Transport на локальном сервере:Restart-Service MSExchangeTransport
-
Проверка на наличие обновлений:
Убедитесь, что ваша версия Exchange 2016 CU19 обновлена до последней версии для устранения возможных ошибок и уязвимостей.
Заключение
Учитывая комплексность гибридной инфраструктуры Exchange и переплетение различных лимитов, важно внимательно пересмотреть каждую настройку и, при необходимости, адаптировать их под текущие требования. Следуя предложенным рекомендациям, вы сможете устранить проблемы с отправкой больших сообщений и обеспечить эффективный переход на Exchange Online. Не забывайте также следить за документацией Microsoft для обновлений и новых подходов в настройках Exchange.