Проблема: серверы Exchange 2013 с последним кумулятивом начинают отправлять массово NDR сообщения на адрес inboundproxy@contoso.com.
Известно, что адрес inboundproxy@contoso.com (начиная с Exchange 2013 CU2) используется механизмом Managed Availability для проверки хождения почты внутри почтовой организации между почтовыми ящиками типа Health Mailbox. Поэтому первым делом смотрим состояние этих ящиков:
Get-Mailbox –Monitoring
По каждому ящику получаем забавный вывод:
WARNING: The object child.domain.local/Microsoft Exchange System Objects/Monitoring Mailboxes/ HealthMailbox<guid> has been corrupted, and it's in an inconsistent state. The following validation errors happened: WARNING: Database is mandatory on UserMailbox. WARNING: Database is mandatory on UserMailbox.
Видно, что ящики поломались – не хватает аттрибута Database. Самый простой способ починить – пересоздать эти ящики. Подробнее процедура описана тут. Итак, ящики пересоздали. Get-Mailbox не возвращает ошибок по новым ящикам. Смотрим дальше – проблема не пропала. Самое время посмотреть тело отправляемого NDR. Если Exchange отправляет почту через сторонний почтовый сервер, то эти письма можно поискать там. Если отправка идёт напрямую, то такие сообщения будут копиться в очередях на самих серверах Exchange. Как их выгрузить в последнем случае можно посмотреть, например, так:
Get-Queue server\idForInboundProxy Get-Message -Queue server\idForInboundProxy | Suspend-Message -Confirm:$false Export-Message server\idForInboundProxy\MessageID | AssembleMessage -Path c:\temp\Health1.eml
В моем случае ошибка была следующая:
HealthMailbox<guid>@domain.local Remote Server returned '550 5.1.1 RESOLVER.ADR.RecipNotFound; not found'
Недвусмысленный намёк, что managed Availability не может найти адрес, на который отправляет почту. Тут есть тонкий момент – все почтовые ящики находятся в дочернем домене child.domain.com. Основной принимающий домен (accepted domain) – корневой домен domain.local. Причём, этот домен не используется в дефолтной политике почтовых адресов (email address policy). И скорее всего, именно поэтому, при пересоздании почтовых ящиков Managed Availability они создались без smtp-адреса из корневого домена domain.local. Поэтому проверки Managed Availability не смогли отправить почту на адрес из корневого домена и сформировался NDR. Остался неразрешённым один вопрос – почему Managed Availability использовал не основной адрес ящика здоровья, а суррогат, сформированный по правилу alias@domain.local. Есть следующая статья в базе знаний, в которой описан обходной путь для решения этой проблемы, и даже указано, что она решена в Exchange 2016 CU4.
Ссылки:
Exchange 2013/2016 Monitoring Mailboxes
Queues Building to inboundproxy.com Domain
Messages for the health mailboxes are stuck in queue on Exchange Server 2016
Dealing with Health Proxy Probe Messages in Exchange 2013 Managed Availability
Exchange Server 2013 and the Inboundproxy.com NDR Message Problem
Managed Availability messages are journaled in Exchange Server 2013
Так и чем все закончилось то?
2Антон
Добавили корневой домен в дефолтную политику адресов.