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

в 9:56, , рубрики: exchange, ldap, mail, outlook, thunderbird, импорт pst, почта

Задача

Имеется компания с серверами 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 имеется несколько режимов для помощи настройки учётной записи: Статья на WiKi. Проще всего сделать псевдоним (CNAME) DNS autoconfig на сервере Exchange: autoconfig.company.loc. А на самом сервере в IIS создать папку mail с файлом config-v1.1.xml. Содержимое файла настраиватся достаточно просто и описано здесь. В моём случае получилось такое:

<?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 на сайте.

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

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

Всё это позволит бысто выбирать необходимый способ доступа при настройке учётной записи в Thunderbird.

Доступ к 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 не мог получить доступ к IMAP как неавторизованный.

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

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

"c:Program Files (x86)Mozilla Thunderbirdthunderbird.exe"  -p

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

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

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

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

1. Открываем окно Адресная книга.
2. Вызываем Инструменты -> Настройки -> Составление -> Автодополнение адресов и ставим галочку на Сервере каталогов
Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange
Переключатели Microsoft Exchange Global Addressbook и Contacts на картинке имеются из-за тестируемого дополнения ExQuilla — подключение к Exchange через http. Результат — скорость работы неудовлетворительна при большом объёме почты.

3. Собственно создаём подключение к LDAP:
Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange
Всё очевидно. Порт без SSL: 3268. Нужно учитывать, что настройка с SSL работает ощутимо медленнее.

Далее переключаемся на вкладку Дополнительно:
Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange
Здесь нужно сказать, что количество отображаемых результатов выбиралось из соображений количества клиентских лицензий на Exchange.

Насчёт фильтра. Самое интересное. Я использую в Exchange динамические списки рассылки, кроме того в Active Directory имеются множество временно или постоянно отключенных учётных записей, а также некторые учётные записи исключены из видимости в адресной книге по разным необходимостям, плюс контакты. Получается следующий фильтр:

(&(mailnickname=*)(|(objectcategory=person)(objectclass=msExchDynamicDistributionList))(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(msExchHideFromAddressLists=TRUE)))

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

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

Далее. Создаём учётную запись пользователя. Если всё предварительно настроено правильно, то вариант с правильной настройкой предложится моментально.
Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange
Остаётся нажать готово и, если ранее был подключен корневой сертификат, получим подключенную почту. Иначе придётся подтверждать каждый сертификат.

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

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

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

Получаем рабоспособный почтовый клиент. Доступ к общим папкам можно поучить через OWA, создав ссылку в обозревателе или на рабочем столе на соответсвующий разде OWA: 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. Опыт замены Microsoft Outlook на Mozilla Thunderbird с сервером Exchange
  5. Выбираем папку, с экспортированными ранее письмами и импортируем.
  6. Теперь правым кликом на папке Архив-Outlook вызываем свойства папки и смотрим где она находится. Определив, переносим (файлы с именем папки, и подкаталоги с именем папки) на ПК пользователя в профиль пользователя в локальные папки. Наша папка с почтой из архива должна появиться у пользователя в Thunderbird после перезапуска.

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

Работа по обкатке ещё идёт, так что могу вносить дополнения и изменения.

Автор: rainhog

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js