Pull to refresh

Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange

Reading time 8 min
Views 115K

Задача


Имеется компания с серверами Windows Server. На них поднят DNS, WINS, Active Directory, CA, Exchange. На пользовательских местах установлен Office с Outlook для обмена информацией, поскольку прямой связи у отделов нет и возможность записи на внешние носители существенно ограничена. Всё лицензионное. Довольно типичная ситуация для средних компаний.

В условиях экономии средств возник вопрос достаточной замены компонента Microsoft Office — Outlook. Преимуществ Outlook достаточно много: сквозная аутентификация, удобный и понятный интерфейс, автоматическая архивация, гибкая и полноценная интеграция с Exchange, в которую входят динамические адресные книги, общие папки и прочее. Заменить такой продукт достаточно сложно без потерь в функциональности.

Реализация


После некоторых сравнений альтернативным клиентом был выбран Mozilla Thunderbird (в данный момент версия 31) как бесплатный, открытый проект, поддерживающий IMAP и адресную книгу LDAP, а также с возможностью использования дополнений.

Пароль

Пароль зашивается в клиент и его можно посмотреть в настройках. Да, это снижает безопасность, но пользователи почты Thunderbird имеют гостевые доменные учётные записи, а также не являются администраторами на локальных компьютерах. Кроме того, планируется внедрить централизованную настройку, где просмотр пароля будет заблокирован. Это посчиталось приемлемым.

Учётная запись почты

Thunderbird некорректно работает с русскими логинами Windows. Поэтому предварительно придётся переименовать доменные логины пользователей Thunderbird в английский эквивалент. Рекомендуется делать логины точно такими, как и почты, для упрощения настройки, хотя это и не обязательно, тем более если хост доменный, это не имеет значения.

На сервере Exchange имеется IIS для доступа к почте через веб-интерфейс — Outlook Web Access. Удобная вещь для удалённой работы с почтой при условии, что почта за какой-то период хранится на сервере. Но отсутствие возможности архивирования почты из обозревателя не позволяет сделать этот режим работы постоянным, поскольку аппаратные ресурсы сервера Exchange не безграничны, да и не предназначен он для хранения. У Thunderbird имеется несколько режимов для помощи настройки учётной записи. Проще всего сделать псевдоним (CNAME) DNS autoconfig на сервере Exchange: autoconfig.company.loc. А на самом сервере в IIS создать папку mail с файлом config-v1.1.xml. Содержимое файла настраиватся достаточно просто и описано на сайте Mozilla. В моём случае получилось такое:

<?xml version="1.0" encoding="UTF-8"?>

<clientConfig version="1.1">
  <emailProvider id="company.loc">
    <domain>company.loc</domain>
    <displayName>Company Exchange Server</displayName>
    <displayShortName>Company e-mail</displayShortName>
    <incomingServer type="imap">
      <hostname>mail.company.loc</hostname>
      <port>993</port>
      <socketType>SSL</socketType>
      <authentication>NTLM</authentication>
      <username>%EMAILLOCALPART%</username>
    </incomingServer>
    <incomingServer type="imap">
      <hostname>mail.company.loc</hostname>
      <port>143</port>
      <socketType>STARTTLS</socketType>
      <authentication>NTLM</authentication>
      <username>%EMAILLOCALPART%</username>
    </incomingServer>
    <incomingServer type="pop3">
      <hostname>mail.company.loc</hostname>
      <port>995</port>
      <socketType>SSL</socketType>
      <authentication>NTLM</authentication>
      <username>%EMAILLOCALPART%</username>
      <pop3>
           <leaveMessagesOnServer>true</leaveMessagesOnServer>
           <downloadOnBiff>true</downloadOnBiff>
           <daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer>
      </pop3>
    </incomingServer>
    <outgoingServer type="smtp">
      <hostname>mail.company.loc</hostname>
      <port>587</port>
      <socketType>STARTTLS</socketType>
      <authentication>NTLM</authentication>
      <username>%EMAILLOCALPART%</username>
    </outgoingServer>
  </emailProvider>
</clientConfig>


Папку mail стоит сделать виртуальной и явно отключить требование SSL для неё.

Стоит упомянуть, что у нас, как и у многих, имя домена извне отличается от имени локального домена внутри периметра. Но почта должна именоваться везде одинаково. Поэтому внутри Exchange учётные записи имеют по два адреса: внешний и внутренний. Внешний используется по умолчанию. (Exchange также умеет использовать разные DNS для внутренней и внешней пересылки). Отсюда тонкость; адреса пользователей при настройке указываются внешние, поэтому в файле настройки для имени пользователя используется только имя %EMAILLOCALPART%. Кроме того, псевдоним (CNAME) autoconfig необходимо также создать в копии внешнего домена корневой зоны локального DNS.

Видно, что я решил использовать два типа доступа к почте: IMAP и POP3. Дело в том, что иногда попадаются очень активные пользователи с очень большим объёмом почты. Если такой пользователь не использует почту нигде, кроме своего ПК на рабочем месте (не забываем про OWA), то в случае Outlook создаются локальные папки и назначаются основными для всех учётных записей. Таким образом вся почта будет удаляться с сервера Exchange и храниться непосредственно на ПК пользователя, что не потребует какой-то дополнительной архивации, но привязывает пользователя к ПК и повышает вероятность потери почты, в случае порчи жёсткого диска. В противном случае требуется индивидуальная настройка лимитов на Exchange для таких пользователей, чего я всячески пытаюсь избежать. Но всего не предусмотришь. Поэтому для Thunderbird также оставил возможность простой работы с почтой в виде POP3. Хотя до сих пор ещё не пригодился, откровенно говоря.

Всё это позволит быстро выбирать необходимый способ доступа при настройке учётной записи в Thunderbird. Если хост входит в домен AD, то лучше, всё же, подстроить, выбрав способ аутентификации «Kerberos / GSSAPI» и не указывать пароль в в форме.

Доступ к Exchange по IMAP и POP3 настраивается очень просто и не требует особого рассмотрения. Разве что дополнительно придётся настроить сертификат с соответствующими масками имени сервера для коннекторов. А также потребовалась некоторая дополнительная настройка коннектора SMTP c TLS на Exchange 2007:
Get-ReceiveConnector “Client TLS” | Add-ADPermission –User “authenticated users”  -ExtendedRights ms-Exch-SMTP-Accept-Authoritative-Domain-Sender

Иначе Thunderbird не мог получить доступ по SMTP как не авторизованный.

Профиль и сертификат

Первый запуск свежеустановленного клиента Thunderbird производится с ключом -p для указания пути для профиля почты. Профиль почты по умолчанию создаётся на системном разделе, что для нас является неприемлемым. Ключ позволяет указать папку на пользовательском разделе для хранения профиля Thunderbird (в нашем случае — папка d:\Mail). Предварительно стоит убедиться, что пользователь имеет право изменения в данной папке (права NTFS).

"c:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"  -p

Стоит напомнить, что команду нужно выполнять из пользовательского контекста, а не административного. Были прецеденты.

Первым действием для настройки запущенного клиента нужно отказаться от предложений мастера настройки и добавить корневой сертификат организации в Thunderbird, поскольку Thunderbird, почему-то, не использует системную базу сертификатов.

Адресная книга LDAP

Затем необходимо настроить адресную книгу LDAP. В интернете масса материалов по данной теме, но я не нашёл ни одного полноценного документа с адекватными параметрами, поэтому привожу здесь свой.

1. Открываем окно Адресная книга.
2. Вызываем Инструменты -> Настройки -> Составление -> Автодополнение адресов и ставим галочку на Сервере каталогов

Переключатели Microsoft Exchange Global Addressbook и Contacts на картинке имеются из-за тестируемого дополнения ExQuilla — подключение к Exchange через http. Результат — скорость работы неудовлетворительна при большом объёме почты.

3. Собственно создаём подключение к LDAP:

Всё очевидно. Порт без SSL: 3268. Нужно учитывать, что настройка с SSL работает ощутимо медленнее.

Далее переключаемся на вкладку Дополнительно:

Здесь нужно сказать, что количество отображаемых результатов выбиралось из соображений количества клиентских лицензий на Exchange плюс контакты Active Directory с группами и небольшой запас. Способ аутентификации лучше выбрать «Простой» если ПК не входит в домен AD, иначе рекомендую Kerberos (GSSAPI), при этом необходимо убрать имя пользователя на вкладке «Основное».

Насчёт фильтра. Самое интересное. Я использую в Exchange динамические списки рассылки, кроме того в Active Directory имеются множество временно или постоянно отключенных учётных записей, а также некоторые учётные записи исключены из видимости в адресной книге по разным необходимостям, плюс контакты. Получается следующий фильтр:
(&(mailnickname=*)(|(objectcategory=person)(objectclass=msExchDynamicDistributionList))(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(msExchHideFromAddressLists=TRUE)))

Закрываем диалоги. Теперь откроем свежесозданную адресную книгу и набираем @ в строке поиска не нажимая Enter, поскольку ввод пойдёт в диалог с паролем. В диалоге следует набрать пароль пользователя и поставить галочку Сохранить пароль. Должен появиться список адресатов. Вполне хорошо работает. Достаточно начать набирать имя или адрес получателя в строке Кому: нового письма, чтобы получить список возможных вариантов.

Внимание! Если в Active Directory вы ограничили список хостов для учётной записи, на которые ей можно заходить, то для доступа к LDAP на PDC потребуется добавить имя контроллера в этот список.

Далее. Создаём учётную запись пользователя. Если всё предварительно настроено правильно, то вариант с правильной настройкой предложится моментально.

Остаётся нажать готово и, если ранее был подключен корневой сертификат, получим подключенную почту. Иначе придётся подтверждать каждый сертификат.

Архивирование и другие дополнения

Настраиваем подписанные папки. Пока идёт синхронизация, настраиваем архивирование в локальные папки: Параметры учётной записи -> Копии и папки -> Архивы сообщений — Хранить архивированные сообщения в: — папке «Архивы» на: Локальные папки. Архивирование можно разделяя по папкам годов, месяцев. В обычном режиме Thunderbird может архивировать письма только вручную. Автоархивирования можно добиться установив специальное дополнение (plugin) Awesome Auto Archive. Настраивается вполне просто.

Также устанавливаю следующие дополнения:

Получаем работоспособный почтовый клиент. Доступ к общим папкам можно получить через OWA, создав ссылку в обозревателе или на рабочем столе на соответствующий раздел OWA:
https://mail.company.loc/Public


Импорт PST

Теперь к вопросу о импорте ранее архивированной почты Outlook в Thunderbird. Описанный способ с установкой 30-дневнего Outlook не работает. Thunderbird вываливается, генерируя исключение. Проверено множество различных конфигураций. Кроме того, исключён импорт на Windows x64. Пришлось идти кружным путём. Есть рабочий способ, но он достаточно насыщен манипуляциями.
  1. Скачивается бесплатное приложение Outlook Viewer, которое умеет читать .pst файлы — архивы Outlook. Устанавливается на ПК для манипуляций.
  2. По сети берётся клиентский pst, открывается и письма экспортируются в папку с подпапками (подпапки могут быть внутри архива) в формате EML с вложениями. Это ещё полдела!
  3. Затем во временно установленном Thunderbird с установленным дополнением ImportExportTools создаём локальную папку, например Архив-Outlook и, правым кликом на ней вызываем меню импорта дополнения:
  4. Выбираем папку с экспортированными ранее письмами и импортируем.
  5. Теперь правым кликом на папке Архив-Outlook вызываем свойства папки и смотрим где она находится. Определив, переносим (файлы с именем папки, и подкаталоги с именем папки) на ПК пользователя в профиль пользователя в локальные папки. Наша папка с почтой из архива должна появиться у пользователя в Thunderbird после перезапуска.


Думаю внедрить централизованную конфигурацию пользователей.

Работа по обкатке ещё идёт, так что могу вносить дополнения и изменения.
Tags:
Hubs:
+16
Comments 39
Comments Comments 39

Articles