Exchange Deep Dive: Outlook AutoComplete list, RESOLVER.ADR.RecipNotFound and legacyExchangeDN

mail-remove-iconВсем привет!

Рассмотрим несколько простых примеров.

Первый: вы пишете новое письмо и в поле “Кому” вы вводите первые несколько букв имени получателя, а затем воспользовавшись функцией автозаполнения Outlook, выбираете полный адрес получателя.

Второй: вы находите письмо, которое пришло к вам, например, месяц назад и пишите на него ответ.

В этих сценариях в ответ вы получаете письмо со следующей ошибкой: 550 5.1.1 RESOLVER.ADR.RecipNotFound; not found

 

Почему так происходит? Ведь не смотря на ошибку, вы точно уверены, что адрес получателя существует и он правильно написан.

Все дело в том, что Outlook для писем внутри организации использует адреса в формате X.500.

Чтобы убедиться в этом, посмотрим на два письма, используя утилиту MFCMAPI: первое письмо было отправлено внешним отправителем, второе письмо – внутренним отправителем.

Итак, смотрим свойство PR_SENDER_EMAIL ADDRESS в первом письме – оно имет значение msft_ext@msft.lab, что соответствует адресу отправителя:

mapi_ext

Теперь посмотрим на этоже свойство (PR_SENDER_EMAIL ADDRESS) во втором письме (от внутреннего отправителя) – оно явно не имеет ничего общего с обычным SMTP адресом:

mapi

Это почтовый адрес в формате X.500. Этот адрес хранит для каждо учетной записи в атрибуте legacyExchangeDN:

[PS] C:\>Get-Mailbox test.user1 | fl Name, legacyExchangeDN


Name             : test.user1
LegacyExchangeDN : /o=E10Lab/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test.user1714

Т.е. Outlook для писем внутри организации использует значение именно из этого атрибута. Это как раз является причиной возникновения второго сценария, о котором я писал в самом начале.

 

Теперь давайте рассмотрим первый сценарий – посмотрим в каком формате Outlook хранит сохраненные адреса для списка автозаполнения. Для этого воспользуемся утилитой NK2Edit.

  • Outlook 2010 (в режиме кеширования) хранит список автозаполнения в файле Stream_Autocomplete*.dat (путь: %userprofile%\AppData\Local\Microsoft\Outlook\RoamCache)
  • Outlook 2007 хранит список автозаполнения в файле *.nk2 (путь: %userprofile%\AppData\Roaming\Microsoft\Outlook)

Открыв этот файл, мы видим следующее его содержание:

nk2edit

Получается, что и в списке автозаполнения, адрес хранится в формате X.500.

 

К чему может привести такое поведение Outlook. При условии, что почтовый ящик получателя был пересоздан, в описанных выше двух сценариях в ответ будет приходить письмо с ошибкой 550 5.1.1 RESOLVER.ADR.RecipNotFound; not found. Это будет означать, что хоть и SMTP адрес существует, но соответствующего X.500 адреса в организации нету.

Чтобы избежать этой ситуации, при пересоздании почтового ящика обязательно нужно новому почтовому ящику задать еще один адрес формата X.500, который будет соответствовать значению legacyExchangeDN предыдущего почтового ящика.

Сделать это можно так:

  • Добавить для нового почтового ящика дополнительный “Custom Address”, указав тип X500, котрый будет содержать значение exchangeLegacyDN предыдущего ящика.

add_address

 

Удачи!

Читайте также:

Добавить комментарий