пятница, 24 августа 2012 г.

Проблема с пересылкой сообщений между HUB-ми

imageНедавно столкнулся с такой ситуацией, что после восстановления сервера в режиме /m:RecoverServer на другое железо, мой восстановленный HUB Transport отказывался пересылать сообщения куда-либо дальше, ссылаясь на проблемы с DNS. Разберемся что же случилось.

Симптомы

В очереди копится очень много сообщений с ошибкой вида:

  • Next Hop Domain: smtp relay to remote active directory site
  • Last Error: 451 4.4.0 dns query failed…

В журнале ошибки от MSExchangeTransport с EventID 16025

imageРис.1: Ошибка MSExchangeTransport с EventID 16025

Причина

Как сказано в ошибке выше, сервер Exchange не может связаться с DNS сервером, указанным на сетевой карте. При этом я точно знаю, что на сервере одна сетевая карта и настроена она правильно. Если обратить внимание на рис.1, то видно GUID сетевой карты к которой пытается обращаться Exchange.

Проверим, действительно ли такой GUID у нашей сетевой карты. Для этого воспользуемся командлетом Get-NetworkConnectionInfo (см. рис.2). В результате видно, что у текущей сетевой карты GUID отличный от указанного в ошибке. Т.е. Exchange сервер пытается воспользоваться не правильным интерфейсом для работы с сетью. Почему? Потому, что информацию о том, через какой интерфейс необходимо разрешать адреса хостов, т.е. где именно взять адрес DNS сервера, находится в конфигурации сервера, а эту самую конфигурацию мы полностью восстановили, когда делали рекавер сервера Exchange (сервер у нас новый, следовательно сетевой интерфейс другой).

Решение

Изменим GUID сетевого адаптера в конфигурации Exchange`a при помощи командлета Set-TransportServer. Для начала выясним имя параметра, в котором находится GUID сетевого адаптера:

Get-TransportServer –Identity <server name> | fl *DNS*

imageРис.2: Решение проблемы

В результате видим параметр InternalDNSAdapterGUID со значение в точности совпадающим с указанным в ошибке. Заменим это значение на полученной в выводе Get-NetworkConnectionInfo:

Set-TransportServer –Identity <server name> –InternalDNSAdapterGUID <текущий GUID адаптера>

Далее идем в Queue Viewer и убеждаемся, что очередь постепенно начинает уменьшаться.

10 комментариев:

Анонимный комментирует...

НЕмного не правельно указали команду "Get-TransportServer –Identity –InternalDNSAdapterGUID "
а надо
"Set-TransportServer –Identity –InternalDNSAdapterGUID "

Алексей Богомолов (Alexx) комментирует...

Спасибо за поправку

Анонимный комментирует...

Заменил сетевую карту (умерла). Сделал данные манипуляции. Но чего-то не хватает - так и не работает вх/исх почта.

Алексей Богомолов (Alexx) комментирует...

С какой ошибкой висят сообщения? Telnet работает на другие сервера?

Сергей комментирует...

ошибка 451 4.4.0 dns query failed
почта между 2 серверами не ходит

точнее с сервера 2 на сервер 1 почта уходит
а с сервера 1 на сервер 2 нет
и скапливается в очереди

Сергей комментирует...

сервера в одном домене
находятся в разных сайтах AD в разных подсетях
сервера друг друга пингуют на 25 порт отвечают

сервер 1 и 2 по крайней мере почту на яндекс отправляют

Valery Tyurin комментирует...

Такая же ерунда с edge 2013. Указываешь guid адаптера, рестартуешь транспортный сервис, ноль эмоций - ошибка остается. Частично помогает явное указание днс серверов на внутреннем и внешнем интерфейсах.

Boris Chertischev комментирует...

Спасибо! Статья очень помогла!

Alexander Diablo комментирует...

Спасибо, помогло.

Евгений Зверев комментирует...

А про ExternalDNSAdapterGUID не забыли? там тоже не правильно)))

Отправить комментарий