Мы используем Exchange 2010, и в последнее время я заметил, что некоторые исходящие сообщения застревают в очереди с ошибкой «451 4.4.0 DNS Query Failed». В каждом домене, где это происходит, я смог использовать nslookup, чтобы найти запись MX и открыть соединение с их сервером через SMTP, поэтому я достаточно уверен, что эта проблема находится на моей стороне. Мой соединитель отправки не маршрутизирует почту через промежуточный узел и не настроен на использование другого DNS-сервера для поиска, поэтому я не понимаю, почему эти сообщения не отправляются. Любые идеи?
Код ответа 4.x.x - это временный код, поэтому Exchange будет продолжать попытки, пока не истечет интервал повтора. Что вы можете попробовать, так это установить программу захвата пакетов на сервере Exchange (Microsoft Network Monitor - хороший вариант), запустить захват и дать ему поработать некоторое время. Вы можете настроить фильтр захвата только для захвата трафика SMTP и DNS, чтобы снизить накладные расходы захвата. После того, как вы запустите захват, либо отправьте электронное письмо пользователю в одном из проблемных доменов, либо подождите, пока электронное письмо, находящееся в очереди, повторит попытку (или принудительно повторите попытку), и посмотрите, что отображается в захвате, сначала вводя трафик DNS, чтобы посмотреть, правильно ли решаются проблемы или нет, а затем перейти к просмотру SMTP-трафика в поисках подсказок относительно того, что происходит.
Кажется, что Exchange 2010 всегда запрашивает IPv6-адрес почтового сервера перед тем, как запрашивать IPv4-адрес. Предположим, что DNS-сервер имеет IPv4-адрес для доменного имени, но не имеет IPv6-адреса. Когда этот DNS-сервер получает запрос на IPv6-адрес доменного имени, он должен отправить успешный ответ с нулевыми адресами. Если вы запустите nslookup в таком домене, например:
nslookup -type=aaaa mail.foo.com
вы должны увидеть ответ:
*** No IPv6 address (AAAA) records available for mail.foo.com
Exchange, похоже, рассматривает этот ответ как высказывание: «У меня нет адресов IPv6 для этого домена, но могу ли я заинтересовать вас адресом IPv4?»
По крайней мере в одном случае, когда я получал 451 ошибку, которую вы описали, я получил такой ответ от nslookup:
*** ns.mynameserver.com can't find mail.foo.com: Query refused
Если это то, что вы видите, единственный реальный выход - связаться с администратором домена и попросить его изменить поведение своего DNS-сервера. Возможно, они полностью отфильтровывают запросы IPv6, что может показаться плохой идеей.
Я хотел бы порекомендовать вам просто сказать Exchange 2010, чтобы он прекратил запрашивать IPv6-адрес почтовых серверов, но, несмотря на много поисков в Google, я не знаю, возможно ли это.
У меня только что возникла проблема с сервером Exchange 2007, однако вся электронная почта стояла в очереди.
Чтобы решить эту проблему, я изменил Сетевые свойства коннектора отправки на «Использовать систему именования доменов ...» и «Использовать внешний DNS-поиск ...»
(Org Config, Hub Transport, Send Connectors tab, right click send connector having issue.)
Кроме того, я добавил внешние DNS-серверы во внешний DNS-поиск.
(Server Config, Hub Transport, right click the hub server, properties, External DNS Lookup tab, Use these DNS Servers...)
Серверу удалось разрешить записи MX, и очереди начали обработку.