Жизнь замечательных багов Microsoft Exchange (и не только)
Microsoft — удивительная компания. Не редко она готова удивить не только новыми продуктами и приобретениями, но и довольно экстравагантными багами.
Здесь хабравчане пытаются побороть высокую загрузку процессора, отсутствие обновлений Windows Update. Сизифов труд! Но и на этом поле битвы можно одержать локальную победу. До следующего обновления. This behavior is by design.
Настойчивость, аналитическое мышление, отточенный навык связывать казалось бы абсолютно несвязанные факты — вот навыки абсолютно необходимые Windows-администратору.
Поделюсь забавным случаем из практики.
По долгу службы мой почтовый клиент — Microsoft Outlook в связке с Microsoft Exchange.
Это очень серьезная и функциональная комбинация. Microsoft знает толк в электронной почте, спасибо отцу-основателю, для которого электронная почта была любимым инструментом, лично изменившему поиск в Outlook по Ctrl+F на форвардинг письма.
У этой комбинации есть три недостатка — дорого, очень дорого, и сложно. Microsoft Exchange это тяжелый продукт. Некоторые простые вещи реализованы очень сложно, и чтобы разобраться в простейшей проблеме надо хорошо знать продукт.
К сути вопроса. В вашем почтовом клиенте есть адресная книга? В Outlook + Exchange есть, и не одна.
Помимо личного списка контактов, хранящегося в почтовом ящике, Exchange отдает клиентам адресную книгу всей организации.
В online режиме Outlook подключается к серверу для того, чтобы получить списки получателей. В крупных инсталляциях число почтовых пользователей измеряется десятками тысяч, и нагрузка на серверы может оказаться довольно значительной. Поэтому Microsoft давно перешла по умолчанию на схему синхронизации.
Клиент синхронизирует данные почтовых папок и загружает с сервера offline адресную книгу. Сначала клиент качает полную адресную книгу, размер которой может составлять десятки и сотни мегабайт, а потом, на ежедневной основе, небольшие бинарные патчи с изменениями. «Пропатченная» книга хранится в виде набора файлов:
В один прекрасный день я заметил, что в моем почтовом клиенте — устаревшая адресная книга. День уже не казался таким прекрасным. Попробовал обновить ее вручную — не обновилась.
Проверил сервер. Адресная книга лежала в точке распространения и регулярно обновлялась сервером. У моих коллег не было такой проблемы.
Утром следующего дня я опять остался без обновлений. Может проблема в том, что я — администратор Exchange? Звучит забавно, но была история, что для администраторов Exchange Outlook всегда скачивает полную адресную (сейчас уже не могу найти подтверждение этого факта). Нет, без администраторских привилегий книга не качается. Хорошо, удалил профиль. Нулевой результат.
Запустил Wireshark. Нажимаем скачать — и ничего.
Остался ultima ratio regum — поискать в support.microsoft.com. И что же?
Статья «HTTP version of the Outlook Offline Address Book (OAB) does not download» в качестве решения проблемы предлагает «обновить драйверы беспроводной мыши».
Обновить драйверы беспроводной мыши, чтобы скачивать offline адресную книгу в Outlook? Бред.
Был бы, если бы у меня единственного не была установлена Microsoft Wireless Mouse 8000.
Ставим последний пакет Intellipoint, запускаем «Скачать адресную книгу» и… Она скачивается.
А разгадка одна — безблагодатность MAPI idle tasks. Разработчики MAPI (Mail API, с его помощью Outlook общается с Exchange) сделали так, что некоторые вещи происходят только тогда, когда компьютер простаивает. Скачивание Offline Address Book (в том числе и принудительным нажатием кнопки) — одно из них. Что значит «простаивает» для разработчиков Outlook? Простаивает — значит пользователь не двигает мышью, а драйвер не присылает ОС новых координат курсора. Гениально.
Не менее продвинутые разработчики драйверов для мышей Microsoft решили, что надо посылать ОС статусное сообщение даже в том случае, если мышь не двигается. Надежность прежде всего, а то вдруг приемник или порт уснут.
Вот тут и нашла коса на камень. Событие IDLE не наступало никогда. Но боль и слезы пользователей не были не замечены, и разработчики драйвера исправили «неправильное» поведение мыши.
Спасибо за внимание. На этом пятиминутку ненависти будем считать законченной.