Подключение почтовых клиентов к Microsoft Exchange Server
В этой инструкции описано подключение различных почтовых клиентов к серверу Microsoft Exchange. Цель — получить систему, по функциональности соответствующую Microsoft Outlook.
Входные данные
В примерах используется сервер Microsoft Exchange 2010 (v14.03.0361.001) Service Pack 3 Update RollUp 18. Тестирование производится внутри корпоративной сети. На DNS-серверах указаны внешние почтовые адреса для почтового сервера. На сервере Exchange должны работать:
- OWA (Outlook Web Access) — веб-клиент для доступа к серверу совместной работы Microsoft Exchange
- OAB (Offline Address Book) — автономная адресная книга
- EWS (Exchange Web Services) — сервис, предоставляющий доступ к данным почтового ящика, хранящимся в Exchange Online (как часть Office 365) и в локальной версии Exchange (начиная с Exchange Server 2007)
Параметры сервера Exchange
Важным моментом для успешной работы не-Microsoft-клиентов на Exchange 2010 является проверка подлинности. Посмотреть её параметры можно на сервере Exchange с ролью CAS (Client Access Server). Запустите оснастку «Диспетчер служб IIS» и откройте вкладку «Сайты»/Default Web Site. Обратите внимание на проверку подлинности в трёх компонентах:
- OWA — Состояние «Включён» для «Обычная проверка подлинности» и «Проверка подлинности Windows»:
- OAB — Состояние «Включён» для «Обычная проверка подлинности» и «Проверка подлинности Windows»:
- EWS — Состояние «Включён» для «Анонимная проверка подлинности», «Обычная проверка подлинности» и «Проверка подлинности Windows»:
Прослойки (посредники) и вспомогательные утилиты
DavMail
Некоторые почтовые клиенты не могут напрямую подключаться к Microsoft Exchange и требуют использования прослойки (посредника). В данном примере в качестве посредника используется прокси-сервер DavMail.
- Установите DavMail, получив права администратора при помощи su или sudo :
sudo urpmi davmail
- Запустите DavMail:
- На вкладке «Main» в поле «OWA (Exchange) URL» введите адрес своего сервера в формате «https:///EWS/Exchange.asmx» или ссылку на OWA
- Запомните номера портов «Local IMAP port» и «Local SMTP port». В данном примере это 1143 и 1025, соответственно.
Чтоб каждый раз не запускать вручную сервер DavMail, нужно добавить его вызов в автозагрузку.
- Зайдите в меню «Параметры системы → Запуск и завершение → Автозапуск», нажмите на кнопку [Добавить приложение] и в строке поиска введите «davmail», после чего нажмите [ОК]:
Теперь локальный прокси-сервер DavMail будет запускаться при старте системы автоматически. Если вам мешает его значок в «Панели задач», есть возможность его спрятать. Для этого в файлe .davmail.properties отредактируйте строку davmail.server=false , поменяв false на true :
sudo mcedit /home//.davmail.properties
Почтовые клиенты для подключения к Exchange
Теперь можно приступить к настройке почтовых клиентов.
Thunderbird
Mozilla Thunderbird является основным почтовым клиентом для дистрибутивов ROSA Linux и, скорее всего, он уже установлен в вашей системе и готов к работе. Если же нет, его можно установить из репозиториев ROSA. В данном примере используется версия 52.2.1.
- Установите Thunderbird:
sudo urpmi mozilla-thunderbird
- Добавьте русскоязычный интерфейс:
sudo urpmi mozilla-thunderbird-ru
- Установите дополнение lightning, позволяющее использовать календари:
sudo urpmi mozilla-thunderbird-lightning
- Запустите Thunderbird.
- В разделе «Учётные записи» в пункте «Создать учётную запись» выберите «Электронная почта». Появится окно приветствия.
- В открывшемся окне нажмите на кнопку [Пропустить это и использовать мою существующую почту].
- В окне «Настройка учётной записи почты» введите в поля «Ваше имя», «Адрес эл. почты» и «Пароль» свои учётные данные.
- Нажмите [Продолжить]. Программа попытается найти подключения (безуспешно), и появится сообщение об ошибке:
Здесь вам понадобятся номера портов, которые вы запомнили при настройке DavMail.
- Для категорий «Входящая» и «Исходящая» измените имя сервера на «localhost».
- Укажите для «IMAP» порт 1143, а для «SMTP» — порт 1025.
- В поле «Имя пользователя» укажите UPN (User Principal Name) — доменное имя пользователя в формате «ИмяПользователя@ДоменОрганизации.ru».
- Нажмите на кнопку [Перетестировать].
При правильном вводе учётных данных ошибок не будет. Возможно, система сообщит о необходимости принять сертификат сервера Exchange. Если этого не происходит, возможно вы слишком рано выключили интерфейс DavMail.
Создание календаря пользователя
- В категории «Учётные записи» выберите пункт «Создать новый календарь».
- В появившемся окне выберите значение «В сети» и нажмите [Далее].
- Выберите формат «CalDAV» и в поле «Адрес» введите «http://localhost:1080/users//calendar»:
Создание адресной книги
Адресная книга Thunderbird не поддерживает протокол CardDAV и может быть подключена только к каталогу LDAP сервера Exchange.
- Откройте существующие адресные книги, нажав на кнопку [Адресная книга] и выбрав пункт «Файл → Создать → Каталог LDAP».
- В окне мастера укажите следующие параметры:
- Название — любое подходящее имя
- Имя сервера — localhost
- Корневой элемент (Base DN) — ou=people
- Порт — 1389 (из Davmail)
- Имя пользователя (Bind DN) — UPN-имя пользователя
- Нажмите [ОК]. Программа попросит ввести пароль.
Для удобства работы рекомендуется указать созданное вами соединение в качестве адресной книги по умолчанию.
- Зайдите в меню параметров Thunderbird. В категории «Составление» выберите вкладку «Адресация» и под текстом «При вводе адреса искать подходящие почтовые адреса в» отметьте пункт «Сервере каталогов», выбрав имя вашей адресной книги.
Evolution
В репозиториях ROSA также доступен почтовый клиент Evolution (в данном примере используется версия 3.16.4).
sudo urpmi evolution
- Установите коннектор Exchange, совместимый с версией 2007 и более поздними:
sudo urpmi evolution-ews
Перед запуском рекомендуем обратиться к п. Параметры сервера Exchange данной статьи и убедиться в верной настройке «Проверки подлинности» для EWS.
- Запустите Evolution.
- В окне мастера нажимайте кнопку [Следующая], пока не перейдёте на вкладку «Учётная запись».
- Заполните поля «Полное имя» и «Электронная почта».
- На вкладке «Получение почты» в списке «Тип сервера» выберите «Exchange Web Services».
- В качестве имени укажите UPN-имя пользователя в формате «ИмяПользователя@ВашДомен.ru».
- В поле «Host URL» введите «https://ИмяПочтовогоСервераExchange/EWS/Exchange.asmx.
- В поле «OAB URL» введите URL автономной адресной книги.
- В качестве вида аутентификации выберите «Basic».
При успешной настройке программа запросит пароль:
После ввода пароля Evolution получит доступ к вашему почтовому ящику, адресной книге и календарям.
По любым вопросам, связанным с этой статьёй, просьба обращаться по адресу riskotor@mail.ru.
Как начать работу с почтовым сервисом на базе Exchange

Для начала перейдите в Личный кабинет FirstVDS: https://my.firstvds.ru/. Если вы уже являетесь нашим клиентом, авторизуйтесь, используя ваше имя пользователя и пароль.

Если вы пользуетесь услугами FirstVDS впервые — пройдите регистрацию.

Затем в Личном кабинете перейдите в раздел Товары, выберите услугу Почтовый сервис на базе Exchange и нажмите кнопку Заказать.

Вам доступны почтовые ящики объёмом 2, 10 и 50 Гб. Вы можете заказать до 500 ящиков каждого типа.
Укажите количество и размер ящиков, которые вы будете использовать.

Оплатите услугу и дождитесь её активации.
Подготовьте и настройте почтовый домен
Так как Exchange является элементом сети Интернет, для него необходимо указать имя почтового домена, а также предварительно настроить MX-запись, SPF-запись и функцию AUTODISCOVER.
В качестве почтового домена вы можете использовать свой ранее зарегистрированный домен или приобрести новый.
Настройку MX-записи, SPF-записи и функции AUTODISCOVER можно выполнить самостоятельно по инструкции или обратиться в нашу техническую поддержку — мы настроим эти параметры для вас.
- Что такое DNS-записи?
- Как управлять записями, если они размещены на DNS серверах FirstVDS
Авторизуйтесь в панели Hosting Controller
Для работы с почтовым сервисом на базе Exchange вам не понадобятся знания и навыки администрирования Microsoft Exchange. В простой и понятной панели управления Hosting Controller вы сможете управлять:
- представлением организации в Microsoft Exchange,
- почтовыми ящиками пользователей и специализированными почтовыми ящиками,
- списками рассылки,
- общими контактами и папками,
- правилами блокировки доменов,
- а также иными элементами Microsoft Exchange.
Для авторизации в панели управления Hosting controller необходимо получить доступы (имя пользователя и пароль) в Личном кабинете FirstVDS. Перейдите в раздел Товары, выберите услугу Почтовый сервис на базе Exchange и нажмите кнопку Изменить.

Ваше имя пользователя и пароль для панели управления указаны в соответствующих полях.

Откройте панель управления по ссылке: https://exol.hoztnode.net/my, введите данные, полученные на предыдущем шаге.

ВНИМАНИЕ! По умолчанию язык панели управления — английский. Все инструкции по услуге Почтовый сервис на базе Exchange подготовлены с использованием русского языка. Чтобы сменить язык в панели управления, кликните на иконку пользователя в правом верхнем углу, нажмите Display settings и в поле Control Panel Language выберите русский язык. Сохраните настройки.

Добавьте организацию и привяжите почтовый домен
Почтовый домен — это часть, которая находится после символа @ в адресе электронной почты. Например, для почтового адреса «mail.test@firstvds.ru» почтовым доменом является «firstvds.ru». Вы можете использовать уже имеющийся у вас почтовый домен или купить новый. Подробнее о почтовом домене вы можете прочитать в инструкции.
Чтобы добавить организацию и привязать к услуге почтовый домен, перейдите в раздел
Управление — Exchange — и нажмите кнопку Создать почтовый домен Exchange.
Далее введите имя организации и почтового домена и нажмите кнопку Создать почтовый домен Exchange.

Готово! Почтовый домен добавлен и теперь отображается в списке организаций.
Создайте почтовые ящики для пользователей
Почтовый ящик — это хранилище всех электронных писем, которые пользователь получил и/или отправил. Почтовый ящик идентифицируется адресом электронной почты. Например, mail.test@firstvds.ru.
Чтобы создать почтовый ящик, перейдите в раздел Управление — Exchange — и нажмите кнопку Почтовые ящики.
В открывшемся окне нажмите кнопку Создать почтовый ящик.

Далее в новом окне укажите имя почтового ящика на английском языке (см. более подробные требования к имени пользователя), пароль и размер создаваемого почтового ящика.

Нажмите кнопку Создать почтовый ящик.
Количество и размер почтовых ящиков, доступных в поле Выбрать предложение соответствует количеству и типам почтовых ящиков, указанных при активации или изменении услуги Почтовый сервис на базе Exchange в Личном кабинете FirstVDS (см. подробнее).
В случае, если вам необходимо создать сразу несколько почтовых ящиков одновременно, для экономии времени вы можете воспользоваться функцией импорта данных из файла в формате .CSV.
Как подготовить файл в формате .CSV и создать несколько почтовых ящиков одновременно, описано в инструкции.
Настройте ПО вашего почтового клиента
Для работы с Exchange вы можете использовать различные клиенты, такие как Outlook, Outlook в Интернете (ранее известные как OWA, Outlook Web App), Thunderbird, The BAT, клиенты google.com, mail.ru, yandex.ru, почтовые клиенты для мобильных устройств.
Услуга Почтовый сервис на базе Exchange поддерживает следующие методы клиентского доступа:
Актуальный способ клиентского доступа, используемый ПО Microsoft Outlook.
Метод клиентского доступа RPC/HTTP, используемый ПО Microsoft Outlook.
Протокол, обеспечивающий подключение широкого круга мобильных телефонов и планшетов.
Классические способы подключения к почтовым серверам по протоколам POP3 или IMAP4.
Клиентское ПО Outlook для iOS и Android и удалённый доступ к почтовому ящику с устройств iOS и Android.
Веб-версия клиентского ПО Outlook, не требующая установки на ПК.
Ранее это клиентское ПО называлось OWA (Outlook Web App). Доступ осуществляется через веб-браузер.
Если у вас возникли вопросы — наша техническая поддержка с удовольствием вам поможет.
Почтовый сервер Exchange
Exchange Server – популярный сервер корпоративной почты от Microsoft. Впервые под этим названием он был выпущен в 1996 году и с тех пор вышло уже 10 версий и бессчётное количество кумулятивных обновлений (Cumulative Updates). Хронологическая таблица выпуска версий представлена ниже.
Таб. 1. История версий почтового сервера Exchange.
Название Версии сборки Дата выпуска Exchange Server 4.0 4.0.x 2 апреля 1996 г. Exchange Server 5.0 5.0.x 23 мая 1997 г. Exchange Server 5.5 5.5.x 20 марта 1998 г. Exchange Server 2000 6.0.x 29 ноября 2000 г. Exchange Server 2003 6.5.x 28 сентября 2003 г. Exchange Server 2007 8.[0123].x 8 марта 2007 г. Exchange Server 2010 14.[0123].x 9 ноября 2009 г. Exchange Server 2013 15.0.x 9 января 2013 г. Exchange Server 2016 15.1.x 1 октября 2015 г. Exchange Server 2019 15.2.x 22 октября 2018 г. Возможности Exchange
Интеграция с экосистемой Microsoft
Так как Exchange как и Windows выпускается Microsoft, неудивительно, что они глубоко интегрированы друг с другом. Например, в Exchange отсутствует собственная система авторизации пользователей, в этом почтовый сервер полагается на службу каталогов Active Directory, встроенную в Windows Server.
Это достаточно удобно, так как пароль входа в AD на рабочем месте пользователя синхронизирован с паролем доступа к почтовому ящику. В случае увольнения сотрудника системным администраторам или службе безопасности достаточно блокировки всего одной учётной записи, чтобы полностью исключить доступ бывшего коллеги ко всем ресурсам предприятия.
Полная поддержка Outlook
Те же преимущества глубокой интеграции между продуктами одного производителя прослеживаются между Exchange и почтовым клиентом Outlook. Аутлук поддерживает все пропиентарные протоколы и функции Exchange: MAPI, ActiveSync, синхронизацию календарей и контактов (адресные книги) и многие другие. Например, прямо из интерфейса Outlook можно установить автоответчик на сервере. Но, конечно, только если сервер Exchange — с любым другим сервером Outlook так сделать не сможет.
Для почтового клиента Outlook (и других, поддерживающих протокол ActiveSync) сервером Exchange поддерживается сервис автоматической настройки. Тут Microsoft тоже пошёл своим путём и несмотря на отраслевой стандарт RFC 6186 по использованию SRV-записей в DNS для обнаружения настроек для почтовых клиентов создал собственный сервис — Autodiscover. При развёртывании Exchnage в веб-сервере Internet Information Services (IIS) создаётся виртуальный хост, отвечающий на запросы к autodiscover. По этому адресу почтовый клиент получает XML-файл с необходимыми настройками: адресами почтовых серверов, номерами портов, типе шифрования и т. д. в результате чего его конфигурация производится автоматически. Впрочем, это не уникальный функционал Exchange и существует возможность автонастроек почтовых клиентов и без его участия.
Кластеризация
«Из коробки» у Exchange доступна функция развертывания кластера высокой надёжности – группы доступности базы данных (DAG – Database Availability Group). При избытке вычислительных ресурсов и дискового пространства для хранения можно настроить дублирование содержимого почтовых ящиков пользователей на физически разных и, при необходимости, географически распределённых серверах. Каждый из участников кластера будет хранить полную копию пользовательских ящиков и в случае выхода из строя других возьмёт на роль Mailbox.
Возможности документооборота
Автоматизация управления Exchange и предоставление доступа к его функциям из других программ возможна несколькими способами, среди которых специализированная командная строка EMC (Exchange Management Console) и REST API. Оба средства активно развиваются, от версии к версии обретая новый функционал и совершенствуя существующий набор команд.
Богатый интерфейсный функционал дал возможность появлению надстроек к Exchange, реализующих системы документооборота. С их помощью и на базе Exchange можно реализовать, например, контроль прохождения документа по инстанциям и контроль срока исполнения. Так Exchange может унифицировать в себе как сервер электронной почты организации, так и документооборот внутри компании.

Недостатки Exchange
Высокая стоимость и сложность покупки
Почтовый сервер от Microsoft это пропиентарное платное программное обеспечение. Для его легального использования следует приобрести не только сам Exchnagе, но и набор клиентских лицензий CAL (Client Access License) на нужное количество пользователей. Так как для работы Exchange необходим домен Active Directory потребуется также приобрести и серверную версию Windows.
Таким образом, покупка ПО и лицензий по ценам, привязанным к доллару, выливается в круглую сумму. При этом легальным образом покупка Exchange из-за антироссийских санкций невозможна.
Игнорирование отраслевых стандартов
За свою без малого полувековую историю Microsoft не раз критиковали за игнорирование отраслевых стандартов и попытки придумывать собственные. Впрочем, не ошибается тот, кто ничего не делает — некоторые нововведения были оценены рынком. Например, протокол ActiveSync, созданный Microsoft и используемый в Exchange для приёма и передачи почты между клиентом и сервером. ActiveSync был лицензирован множеством производителей ПО, включая Google и Apple, для использования в своих устройствах и почтовых клиентах Gmail и Apple Mail, соответственно.
В то же время, ни Exchnage, ни почтовый клиент Outlook не поддерживают открытые технологии CalDAV и CardDAV. CalDAV — это стандарт RFC 4791 по реализации календарей, а CardDAV — стандарт RFC 6352 для обмена контактами, визитным карточками. То есть стандартный Outlook невозможно настроить на работу с сервером календарей, если это не Exchange. К счастью, есть стороннее бесплатное решение с открытым исходным кодом Outlook CalDav Synchronizer — плагин, исправляющий этот недостаток Outlook.
Отсутствие защиты от вирусов и спама
На рынке защиты от вирусов Micosoft не показал выдающихся достижений — последняя версия антивируса Microsoft Security Essentials была выпущена в 2016 году. Также у компании отсутствуют технологии защиты электронной почты от спама. Как следствие, почтовый сервер Exchange без дополнительной защиты попросту опасно подключать к интернету для приёма почты — письма кибермошенников с вирусами и троянскими конями мгновенно окажутся в ящиках пользователей. И это не говоря о завале относительно безвредным спамом.
Такая беззащитность в поставке по умолчанию перед киберугрозами, распространяющимися по электронной почте, стала основной причиной того, что в большинстве случаев ИТ-специалисты используют Exchange лишь как бекэнд-сервер, который обслуживает пользователей. Как фронтэнд часто используется почтовый сервер на Linux, например, бесплатный Postfix со свободно распространяемым антивирусом ClamAV для фильтрации получаемых извне писем и в качестве SMTP-релея для доставки email изнутри внешним получателям.
Другой способ решения этой проблемы — установка антивирусного и антиспам-решения на сервер Exchange в качестве плагина. Разумеется, подобных бесплатных / open-source решений не существует и за него придётся снова выложить кругленькую сумму с ежемесячной подпиской.
Ресурсоёмкость
Как и многие другие продукты Microsoft Exchange в процессе своей работы потребляет значительное количество ресурсов, заметно большее чем аналогичные программы для Windows от других производителей и большее в разы по сравнению с аналогами для ОС Linux. Минимальные требования Exchange 2019 к серверу составляют:
- 64-разрядный процессор;
- не менее 128 ГБ оперативной памяти (для сервера почтовых ящиков);
- от 30 ГБ свободного пространства на диске с Exchange.
И это только минимальные требования, для более-менее комфортной работы количество процессоров и объём дискового пространства придётся увеличивать многократно.
Заключение
Почтовый сервер Exchange это громоздкий и многофункциональный комбайн с широким спектром функций, востребованных в корпоративной среде. Его развёртывание и поддержание требуют значительных аппаратных серверных ресурсов. Относительная популярность этого почтового сервера в корпоративной среде связана с почти повсеместным использованием серверных платформ Windows от Microsoft, службы каталогов Active Directory и почтовых клиентов Outlook. Так как все компоненты разработаны одним производителем, они легко комбинируются друг с другом, давая синергетический эффект и облегчая внедрение и поддержку.
Однако за простоту установки приходится расплачиваться как собственно деньгами на приобретение недешёвого ПО и мощных серверов, так и надёжностью почтового сервиса компании — «стабильность» работы продуктов Microsoft стала притчей во языцех. При этом подавляющее большинство функций Exchange никогда не будут использованы средним пользователем корпоративной почты, а, следовательно, ресурсы на их покупку и содержание будет потрачены впустую.
Если вы выбираете почтовый сервер для компании и со 100%-уверенностью не можете сказать какой именно уникальный функционал Exchange вам требуется, скорее всего наилучший выбором будет альтернативный почтовый сервер хоть под Windows, хоть под Linux. Благо свет клином на Exchange не сошёлся и выбрать почтовый сервер есть из чего.
Эксперт-рецензент: Александр Злобин
При перепубликации статьи установка активной индексируемой гиперссылки на источник — сайт Tendence.ru обязательна!
Идеальный корпоративный почтовый клиент

Когда возникает необходимость настроить почтовую систему для компании в первую очередь на ум приходит использовать решения от Microsoft — Exchange и Outlook. К сожалению, эти решения не обеспечивают достаточной гибкости и многим не подходят по разным параметрам.
Хорошо, но что же использовать вместо них, ведь хочется такой же красивой и прозрачной для пользователя работы с почтой, которую обеспечивает протокол MAPI? Небольшая перетасовычка и на свет появляется вполне очевидное и на самом деле безальтернативное решение — IMAP. IMAP, слава Богу, в современном мире в той или иной степени поддерживают чуть ли не все почтовые клиенты, так что выбор у нас огромен. Но если присмотреться внимательней, то он сужается до весьма скромного множества из одного-двух наименований.

Итак, нам бы хотелось:
- Для начала — кросплатформенность. Глупо использовать стандартизированные технологии, но привязываться изначально к одной ОС, тогда уж проще сразу купить Exchange и навсегда забыть о какой-либо гибкости разворачиваемой инфраструктуры.
- Полная поддержка IMAP и IMAP ACL. Второй пункт важен, т.к. без него нельзя будет организовать ни общих папок, ни передачу прав на различные операции с ящиком другим пользователям, а без этого в корпоративной почтовой системе никак.
- Возможность централизованной настройки клиента через сервер.
- Гибкость настроек клиента и удобство в использовании.
Недолгий поиск в интернете может поведать, что единственный вариант, который можно было бы рассмотреть поближе — это Mozilla Thunderbird. Но вот вопрос: может ли Thunderbird предоставить весь необходимый функционал, чтобы можно было с лёгкостью заменить им связку Exchange и Outlook? Оказывается не только может, но и позволяет добиться куда как большего, чем просто банальное подражание продуктам Microsoft.
Для начала, конечно, надо определиться с сервером, а то что-то я слишком лихо собрался заменять почтовым клиентом целую инфраструктуру. Я использую Dovecot, поскольку он является одним из самых надёжных и гибких продуктов в своей области, но самое главное — Dovecotединственный широкоиспользуемый сервер, который полностью реализует поддержку протокола IMAP. Вы можете использовать любой другой сервер, однако для достижения максимальной эффективности ваш сервер должен как минимум поддерживать IMAP ACL.
В дебрях конфигов
Теперь перейдём непосредственно к Thunderbird. Все настройки Thunderbird хранит в виде столь любимых многими текстовых конфигурационных файлов, правда, в несколько необычной манере. Конфиги Thunderbird представляют из себя скрипты на JavaScript. И Thunderbird не просто читает их, а исполняет. Из этого следует весьма забавный вывод: можно использовать множество возможностей JS для динамического формирования нужных параметров. Конечно, поддержка JS в Thunderbird далеко не полная, но нам её хватит с лихвой.
Основной конфигурационный файл Thunderbird хранится в профиле пользователя и называется prefs.js. На всякий случай: профиль Thunderbird находится либо в домашней папке (для Linux), либо в AppData (для Windows), либо в папке программы (для Thunderbird Portable).
Формат указанного файла весьма простой, он весь состоит из строчек вида
user_pref("app.update.auto", false);Я думаю понятно, что подобные строчки задают некоторое значение указанным в качестве первого аргумента параметрам.
Однако редактировать prefs.js вручную нельзя, поскольку он должен исправляться только самим Thunderbird. При этом непосредственно в программе есть встроенный редактор конфигурации, который позволяет получить доступ ко всем опциям из prefs.js. Попасть в него можно зайдя в меню Инструменты->Настройки. , в открывшемся окне перейдя в раздел Дополнительные, затем выбрав вкладку Основные и нажав на ней кнопку Редактор настроек.
Этот редактор вам ещё очень пригодится, так что обязательно его отыщите. Хотя реально что-то изменять через него вам вряд ли понадобится, зато он крайне полезен для поиска названий нужных опций.
Mozilla AutoConfig (aka Mission Control)
Вот мы и подошли к самому интересному. Как я уже сказал, напрямую редактировать prefs.js нельзя, но это и не проблема, поскольку в Thunderbird есть ещё один уровень настроек, с помощью которого можно как угодно управлять пользовательскими параметрами из prefs.js.
Этот интригующий механизм также полностью основан на JavaScript скриптах, но в этот раз вы уже вольны изменять что угодно и как угодно, в том числе используя все доступные инструменты и возможности JavaScript как языка программирования.
Для включения дополнительного механизма настройки надо немного поменять файлы в установочной директории Thunderbird. Для начала необходимо добавить две строчки в конец файла greprefs/all.js, найти который можно в /usr/lib/thunderbird-xxx/ в Ubuntu Linux или рядом с Thunderbird.exe в Windows. Вот эти строчки:
pref("general.config.obscure_value", 0); pref("general.config.filename", "thunderbird.cfg");Вторая содержит собственно имя конфигурационного файла, который должен использовать Thunderbird, а первая отвечает за его шифрование. Обычно шифровать ничего не нужно, поэтому значение первого параметра лучше выставлять равным 0.
Теперь необходимо создать указанный файл thunderbird.cfg. Располагаться он должен в той же папке, что и основной исполняемый файл Thunderbird. Узнать, где находится Thunderbird в Linux можно командой
which thunderbirdНу а в Windows вы можете заглянуть, например, в свойства ярлыка.
Что может располагаться в thunderbird.cfg? Любой JavaScript код, который сможет выполнить Thunderbird. Однако нам-то надо работать с опциями настройки, для этого можно использовать следующие функции:
function pref(prefName, value) function defaultPref(prefName, value) function lockPref(prefName, value) function unlockPref(prefName) function getPref(prefName) function clearPref(prefName) function getenv(envName)Есть ещё парочка доступных функций, но они вам вряд ли понадобятся. Самая полная статья, которую я нашёл на эту тему, находится здесь.
- pref — устанавливает значение для указанного параметра. При этом пользователь сможет поменять это значение после запуска Thunderbird, однако если вы не измените thunderbird.cfg, то при следующем перезапуске эта функция выполниться снова и снова изменит значение параметра.
- defaultPref — устанавливает для указанного параметра значение по умолчанию. Может оказаться полезной при создании нового профиля.
- lockPref — самая полезная, пожалуй, функция. Устанавливает значение для некоторого параметра и блокирует его, таким образом запрещая пользователю этот параметр изменять.
- unlockPref — как не трудно догадаться, разблокирует ранее заблокированный параметр.
- getPref — возвращает текущее значение указанного параметра.
- clearPref — сбрасывает значение указанного параметра.
- getenv — возвращает текущее значение указанной системной переменной.
Вот простейший пример файла thunderbird.cfg, который немного «тюнит» Thunderbird:
// Небольшой тюнинг Thunderbird с помощью Mozilla AutoConfig try < // Получаем имя пользователя, Thunderbird запустившего (и домашнюю папку, хоть она нам и не нужна) if(getenv("USER") != "") < // *NIX параметры var env_user = getenv("USER"); var env_home = getenv("HOME"); >else < // Windows параметры var env_user = getenv("USERNAME"); var env_home = getenv("HOMEPATH"); >// Ставим аккаунтом по умолчанию account1 defaultPref("mail.accountmanager.defaultaccount", "account1"); // Добавляем по умолчанию в список аккаунтов только account1 defaultPref("mail.accountmanager.accounts", "account1"); // Жёстко закрепляем за account1 сервер server1 (IMAP) lockPref("mail.account.account1.server", "server1"); // Ставим в качестве сервера локальных папок основной IMAP сервер пользователя, // тем самым полностью отключая локальные папки в клиенте lockPref("mail.accountmanager.localfoldersserver", "server1"); // Отключаем полосочку "Узнайте о своих правах" при первом запуске lockPref("mail.rights.version", 1); // Отключаем автообновление клиента. Если не отключить, то при обновлении может измениться файл // all.js и тогда весь механизм Mozilla AutoConfig сломается. lockPref("app.update.enabled", false); lockPref("extensions.update.enabled", false); // Настройки IMAP сервера lockPref("mail.server.server1.type", "imap"); lockPref("mail.server.server1.hostname", "mail.domain.com"); // Неизвестно, зачем два параметра, но нужны оба, lockPref("mail.server.server1.realhostname", "mail.domain.com"); // иначе можно будет менять пользователю lockPref("mail.server.server1.port", 143); // Порт сервера lockPref("mail.server.server1.socketType", 2); // Использовать STARTLS lockPref("mail.server.server1.name", env_user); lockPref("mail.server.server1.userName", env_user); // Логин пользователя, lockPref("mail.server.server1.realuserName", env_user); // комментарий аналогично hostname lockPref("mail.server.server1.login_at_startup", true); // Очень важный параметр! Без него вообще не заработает ничерта;) lockPref("mail.server.server1.isSecure", true); // Защищённый сервер // Настройки SMTP сервера lockPref("mail.smtpserver.smtp1.hostname", "mail.domain.com"); lockPref("mail.smtpserver.smtp1.port", 25); lockPref("mail.smtpserver.smtp1.description", "SMTP сервер ЗАО «Рога и Копыта»"); lockPref("mail.smtpserver.smtp1.try_ssl", 2); lockPref("mail.smtpserver.smtp1.auth_method", 1); lockPref("mail.smtpserver.smtp1.username", env_user); // Настройки аккаунта - адреса почты и т.д. defaultPref("mail.identity.id1.fullName", env_user); //Это поле пользователь сможет поменять сам, но по умолчанию там будет его логин lockPref("mail.identity.id1.useremail", env_user + "@domain.com"); lockPref("mail.identity.id1.reply_to", env_user + "@domain.com"); lockPref("mail.identity.id1.valid", true); lockPref("mail.identity.id1.smtpServer", "smtp1"); lockPref("mail.identity.id1.organization", "ЗАО «Рога и Копыта»"); // Привязываем ID к аккаунту lockPref("mail.account.account1.identities", "id1"); // Адресные книги LDAP lockPref("ldap_2.servers.domain.uri", "ldap://dc.domain.com/OU=Пользователи,OU=domain,DC=DOMAIN,DC=COM??sub?(mail=*)"); lockPref("ldap_2.servers.domain.auth.dn", "DOMAIN\\" + env_user); lockPref("ldap_2.servers.domain.auth.saslmech", ""); lockPref("ldap_2.servers.domain.description", "Сотрудники 'Рога и Копыта'"); lockPref("ldap_2.servers.domain.filename", "empl.mab"); lockPref("ldap_2.servers.domain.maxHits", 300); // Автодополнение адресов из книги сотрудников lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain"); lockPref("ldap_2.autoComplete.useDirectory", true); > catch(e)Файл подробно комментирован, так что надеюсь вы разберётесь, что к чему. Блок try нужен для перехвата ошибок, лучше его не убирайте (иначе в случае чего Thunderbird просто не запустится). Кроме того, все параметры и нужные значения для них для своей конкретной инфраструктуры я скопировал из упоминавшегося редактора конфигурации, настроив предварительно всё вручную обычным способом. Рекомендую всегда именно так и делать, иначе вы будете долго гадать какое значение нужно указать, например, для параметра mail.server.server.socketType в вашем случае.
То есть алгоритм действия по поиску нужных параметров и указанию их значений примерно такой: сначала настраиваем что-то на чистом Thunderbird вручную, а потом копируем все нужные настройки из редактора в самом Thunderbird в скрипт автоконфигурации.
Теперь достаточно при установке Thunderbird положить этот скрипт в папочку с исполняемым файлом (и не забыть добавить две строчки в all.js!), и все ваши пользователи, которые будут открывать Thunderbird на этом компьютере, получат автоматически настроенные параметры своих аккаунтов, а так же подключённую адресную LDAP книгу с сотрудниками организации.Для проверки работоспособности скрипта можно заглянуть всё в тот же редактор настроек Thunderbird. В нём статус параметров, для которых была выполнена функция lockPref(), должен быть «заблокировано». Если это не так — значит вы где-то ошиблись и ваш скрипт не работает.
Кстати, обратите внимание, хитрый трюк с указанием в качестве localfoldersserver сервера IMAP позволяет отключить локальные папки в клиенте. Это бывает немаловажно в организации с внутренним IMAP сервером и блондинками, которые не понимают, что локальные папки на то и локальные, что хранятся в профиле пользователя на конкретном компьютере, а не на сервере.
Как я уже сказал, вы можете использовать практически все возможности стандартного JavaScript в скрипте автоконфигурации, плюс можете получать значение системных переменных. Это уже очень неплохо, и пытливые администраторы уже наверно стали прикидывать варианты автоматического обновления скриптов thunderbird.cfg на локальных компьютерах. К счастью, изобретать велосипед вовсе не обязательно.
Настройка через сервер
В механизм автонастройки Thunderbird встроена возможность загрузки конфигурационного файла с сервера по указанному URL. Воспользоваться ей очень просто — необходимо в файле, на который ссылается опция general.config.filename из all.js (то есть в нашем случае thunderbird.cfg) указать всего две строчки:
lockPref("autoadmin.global_config_url", "http://mail.domain.com/thunderbird.cfg"); lockPref("autoadmin.append_emailaddr", false);Ну и конечно по указанному адресу должен находится нужный вам конфигурационный файл вроде того, что приведён в предыдущем разделе. Зачем нужен второй параметр — не совсем понятно, но судя по названию лучше его не включать.
Итого: мы получили достаточно эффективный механизм централизованной настройки Thunderbird. Однако ему явно не хватает гибкости, поскольку JavaScript, увы, многого не умеет. Например — обращаться к внешним источникам данных, как то SQL базы или LDAP каталоги. Соответственно провести тонкую настройку клиента под конкретного пользователя у вас вряд ли получится.
Но если задуматься, это можно легко обойти. Ведь мы храним конфигурационный файл на HTTP сервере, а значит можем его генерировать с помощью полноценного PHP или Perl скрипта на стороне сервера, что значительно расширяет возможности по тонкой настройке, делая их фактически безграничными.
Осталось дело за малым — для тонкой настройки под конкретного пользователя конфигурационного скрипта, а следовательно и Thunderbird, необходимо, чтобы клиент каким-то образом сообщал серверу хотя бы имя пользователя. Thunderbird его может легко вычислить с помощью уже описанной функции getent, ну а передать его можно прямо в URL в виде GET-переменной. Но тут возникает одна проблема: Thunderbird почему-то упорно игнорирует URL с GET-переменными в параметре autoadmin.global_config_url. Хотя это конечно тоже не проблема, ведь с помощью mod_rewrite мы можем на стороне сервера преобразовать обычный URL некоторого вида в URL c GET-переменными и передать уже этот URL скрипту.
Чтобы долго не объяснять, перейдём к практике. Конечный содержимое моего файла thunderbird.cfg, лежащего рядом с бинарником самого Thunderbird, имеет такой вот вид:
// Начальные параметры настройки Thunderbird грузим с сервера if(getenv("USER") != "") < // *NIX settings var env_user = getenv("USER"); var env_home = getenv("HOME"); >else < // Windows settings var env_user = getenv("USERNAME"); var env_home = getenv("HOMEPATH"); >lockPref("autoadmin.global_config_url", "http://mail.domain.com/tb/user/"+env_user); lockPref("autoadmin.append_emailaddr", false);Таким образом запущенный из под учётной записи пользователя malamut Thunderbird за настройками полезет по адресу
http://mail.domain.com/tb/user/malamut
На сервере mail.domain.com у меня стоит Apache с mod_rewrite и mod_perl, как это дело настраивать вместе пожалуй объяснять не буду. В папочке tb/ в каталоге сайта mail.domain.com лежит Perl-скрипт conf.pl, который собственно генерирует конфигурационные файлы для Thunderbird, и файл .htaccess такого вот содержания:Options -Indexes +ExecCGI AddHandler cgi-script .pl RewriteEngine on RewriteBase /tb RewriteRule ^user/(.*) conf.pl?user=$1 [L]Таким образом запросы по URL вида
http://mail.domain.com/tb/user/malamut
преобразуются в запросы по URL видаhttp://mail.domain.com/tb/conf.pl?user=malamut
Осталось только написать Perl скрипт, который будет брать из GET-переменных имя пользователя и выдавать соответствующий конфигурационный файл для Thunderbird.Вот пример такого скрипта:
#!/usr/bin/perl use 5.010; use CGI qw/:standard/; # Параметры $smtp_server = "mail.domain.com"; $imap_server = "mail.domain.com"; $organization = "ЗАО «Рога и Копыта»"; # Прикидываемся жаваскриптом print header( -type=>'application/javascript' ); # Username - из GET переменных $user = param('user'); unless ($user) < die "We need a user, please!\n" ># Нам нужен user в lovercase, иначе будут проблемы с большинством IMAP серверов. Поскольку username берётся # из переменной глупейшей винды, то там может быть любое награмождение заглавных и строчных букв. $user = lc $user; ######################################################################### # Специфичные для конкретной БД пользователей функции # Получаем все адреса нужного пользователя. Первый будет основным # FIXME: нужно реализовать эту функцию для вашей БД @mails = getEmails($user); # Получаем полное имя пользователя # FIXME: нужно реализовать эту функцию для вашей БД $name = getName($user); ######################################################################### # Создаём конечный конфигурационный файл print pref("mail.accountmanager.accounts",accounts); // Настройки IMAP сервера lockPref("mail.server.server1.type", "imap"); lockPref("mail.server.server1.hostname", "$imap_server"); // Неизвестно, зачем два параметра, но нужны оба, lockPref("mail.server.server1.realhostname", "$imap_server"); // иначе можно будет менять пользователю lockPref("mail.server.server1.port", 143); // Порт сервера lockPref("mail.server.server1.socketType", 2); // Использовать STARTLS lockPref("mail.server.server1.name", "$name"); lockPref("mail.server.server1.userName", "$user"); // Логин пользователя, lockPref("mail.server.server1.realuserName", "$user"); // комментарий аналогично hostname lockPref("mail.server.server1.login_at_startup", true); // Очень важный параметр! Без него вообще не заработает ничерта;) lockPref("mail.server.server1.isSecure", true); // Защищённый сервер // Привязываем указанный IMAP сервер к аккаунту lockPref("mail.account.account1.server", "server1"); // Настройки SMTP сервера lockPref("mail.smtpserver.smtp1.hostname", "$smtp_server"); lockPref("mail.smtpserver.smtp1.port", 25); lockPref("mail.smtpserver.smtp1.description", "SMTP сервер $organization"); lockPref("mail.smtpserver.smtp1.try_ssl", 2); lockPref("mail.smtpserver.smtp1.auth_method", 1); lockPref("mail.smtpserver.smtp1.username", "$user"); // Добавляем SMTP в список var smtp = getPref("mail.smtpservers"); var smtp_s = smtp + ","; if (! (smtp_s.indexOf("smtp1,")+1) ) < smtp = smtp + ",smtp1"; >pref("mail.smtpservers", smtp); SERVERS # Различные настройки клиента print # Теперь надо сказать TB, что данный аккаунт использует все эти адреса $ids = join ',', @ids; print ################################################# print catch(e) < displayError("lockedPref", e); >TAIL # Добавления указанного аккаунта с Яндекса. id нужен чтобы не смешивать аккаунты, ya_name без домена - только имя пользователя sub yandex < my ($ya_name, $id) = @_; print pref("mail.smtpservers", smtp); // IMAP Яндекса для $ya_name\@yandex.ru lockPref("mail.server.server$id.type", "imap"); lockPref("mail.server.server$id.hostname", "imap.yandex.ru"); lockPref("mail.server.server$id.realhostname", "imap.yandex.ru"); lockPref("mail.server.server$id.port", 993); lockPref("mail.server.server$id.socketType", 3); lockPref("mail.server.server$id.name", "$ya_name\@yandex.ru"); lockPref("mail.server.server$id.userName", "$ya_name\@yandex.ru"); lockPref("mail.server.server$id.realuserName", "$ya_name\@yandex.ru"); lockPref("mail.server.server$id.check_new_mail", true); lockPref("mail.server.server$id.login_at_startup", true); lockPref("mail.server.server$id.isSecure", true); lockPref("mail.server.server$id.max_cached_connections", 5); // Аккаунт для $ya_name\@yandex.ru defaultPref("mail.identity.id$id.fullName", "$ya_name"); lockPref("mail.identity.id$id.useremail", "$ya_name\@yandex.ru"); lockPref("mail.identity.id$id.reply_to", "$ya_name\@yandex.ru"); lockPref("mail.identity.id$id.valid", true); lockPref("mail.identity.id$id.smtpServer", "smtp$id"); defaultPref("mail.identity.id$id.organization", ""); lockPref("mail.account.account$id.identities", "id$id"); lockPref("mail.account.account$id.server", "server$id"); // Добавляем аккаунт $ya_name\@yandex.ru в список accounts = getPref("mail.accountmanager.accounts"); accounts_s = accounts + ","; if (! (accounts_s.indexOf("account$id,")+1) ) < accounts = accounts + ",account$id"; >pref("mail.accountmanager.accounts",accounts); YANDEX >Некоторые комментарии чуть ниже. А пока при обращении по адресу
http://mail.domain.com/tb/user/malamut
получим примерно следующий вывод, сгенерированный приведённым скриптом://Параметры автонастройки Thunderbird для пользователя malamut (Malamut) try < // Основные параметры настройки серверов // Добавляем аккаунт в список уже подключённых аккаунтов, если его там ещё нет var accounts = getPref("mail.accountmanager.accounts"); var accounts_s = accounts + ","; if (! (accounts_s.indexOf("account1,")+1) ) < accounts = accounts + ",account1"; >pref("mail.accountmanager.accounts",accounts); // Настройки IMAP сервера lockPref("mail.server.server1.type", "imap"); lockPref("mail.server.server1.hostname", "mail.domain.com"); // Неизвестно, зачем два параметра, но нужны оба, lockPref("mail.server.server1.realhostname", "mail.domain.com"); // иначе можно будет менять пользователю lockPref("mail.server.server1.port", 143); // Порт сервера lockPref("mail.server.server1.socketType", 2); // Использовать STARTLS lockPref("mail.server.server1.name", "Malamut"); lockPref("mail.server.server1.userName", "malamut"); // Логин пользователя, lockPref("mail.server.server1.realuserName", "malamut"); // комментарий аналогично hostname lockPref("mail.server.server1.login_at_startup", true); // Очень важный параметр! Без него вообще не заработает ничерта;) lockPref("mail.server.server1.isSecure", true); // Защищённый сервер // Привязываем указанный IMAP сервер к аккаунту lockPref("mail.account.account1.server", "server1"); // Настройки SMTP сервера lockPref("mail.smtpserver.smtp1.hostname", "mail.domain.com"); lockPref("mail.smtpserver.smtp1.port", 25); lockPref("mail.smtpserver.smtp1.description", "SMTP сервер ЗАО «Рога и Копыта»"); lockPref("mail.smtpserver.smtp1.try_ssl", 2); lockPref("mail.smtpserver.smtp1.auth_method", 1); lockPref("mail.smtpserver.smtp1.username", "malamut"); // Добавляем SMTP в список var smtp = getPref("mail.smtpservers"); var smtp_s = smtp + ","; if (! (smtp_s.indexOf("smtp1,")+1) ) < smtp = smtp + ",smtp1"; >pref("mail.smtpservers", smtp); // Отключаем полосочку "Узнайте о своих правах" при первом запуске lockPref("mail.rights.version", 1); // Отключаем автообновление lockPref("app.update.enabled", false); lockPref("extensions.update.enabled", false); // Ставим в качестве сервера локальных папок основной IMAP сервер пользователя, // тем самым полностью отключая локальные папки в клиенте lockPref("mail.accountmanager.localfoldersserver", "server1"); // Блокируем корпоративный аккаунт почты в качестве основного аккаунта TB lockPref("mail.accountmanager.defaultaccount", "account1"); // Ставим в качестве сервера локальных папок основной IMAP сервер пользователя, // тем самым полностью отключая локальные папки в клиенте lockPref("mail.accountmanager.localfoldersserver", "server1"); // Адрес malamut@domain.com для пользователя malamut (Malamut) defaultPref("mail.identity.id1.fullName", "Malamut"); lockPref("mail.identity.id1.useremail", "malamut@domain.com"); lockPref("mail.identity.id1.reply_to", "malamut@domain.com"); lockPref("mail.identity.id1.valid", true); lockPref("mail.identity.id1.smtpServer", "smtp1"); lockPref("mail.identity.id1.organization", "ЗАО «Рога и Копыта»"); lockPref("mail.identity.id1.archive_folder", "imap://malamut@mail.domain.com/Archives"); lockPref("mail.identity.id1.draft_folder", "imap://malamut@mail.domain.com/Drafts"); lockPref("mail.identity.id1.drafts_folder_picker_mode", 0); lockPref("mail.identity.id1.fcc_folder", "imap://malamut@mail.domain.com/Sent"); lockPref("mail.identity.id1.fcc_folder_picker_mode", 0); lockPref("mail.identity.id1.stationery_folder", "imap://malamut@mail.domain.com/Templates"); // Адрес admin@domain.com для пользователя malamut (Malamut) defaultPref("mail.identity.id2.fullName", "Malamut"); lockPref("mail.identity.id2.useremail", "admin@domain.com"); lockPref("mail.identity.id2.reply_to", "admin@domain.com"); lockPref("mail.identity.id2.valid", true); lockPref("mail.identity.id2.smtpServer", "smtp1"); lockPref("mail.identity.id2.organization", "ЗАО «Рога и Копыта»"); lockPref("mail.identity.id2.archive_folder", "imap://malamut@mail.domain.com/Archives"); lockPref("mail.identity.id2.draft_folder", "imap://malamut@mail.domain.com/Drafts"); lockPref("mail.identity.id2.drafts_folder_picker_mode", 0); lockPref("mail.identity.id2.fcc_folder", "imap://malamut@mail.domain.com/Sent"); lockPref("mail.identity.id2.fcc_folder_picker_mode", 0); lockPref("mail.identity.id2.stationery_folder", "imap://malamut@mail.domain.com/Templates"); // Все доступные для этого аккаунта адреса lockPref("mail.account.account1.identities", "id1,id2"); // Адресная книга сотрудников lockPref("ldap_2.servers.domain.uri", "ldap://dc.domain.com/OU=Пользователи,OU=domain,DC=DOMAIN,DC=COM??sub?(mail=*)"); lockPref("ldap_2.servers.domain.auth.dn", "DOMAIN\\malamut"); lockPref("ldap_2.servers.domain.auth.saslmech", ""); lockPref("ldap_2.servers.domain.description", "Сотрудники 'Рога и Копыта'"); lockPref("ldap_2.servers.domain.filename", "empl.mab"); lockPref("ldap_2.servers.domain.maxHits", 300); // Автодополнение адресов из книги сотрудников lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain"); lockPref("ldap_2.autoComplete.useDirectory", true); // SMTP Яндекса для yandex@yandex.ru lockPref("mail.smtpserver.smtp50.hostname", "smtp.yandex.ru"); lockPref("mail.smtpserver.smtp50.port", 465); lockPref("mail.smtpserver.smtp50.description", "SMTP для yandex@yandex.ru"); lockPref("mail.smtpserver.smtp50.try_ssl", 3); lockPref("mail.smtpserver.smtp50.auth_method", 1); lockPref("mail.smtpserver.smtp50.username", "yandex@yandex.ru"); // Добавляем SMTP Яндекса в список var smtp = getPref("mail.smtpservers"); var smtp_s = smtp + ","; if (! (smtp_s.indexOf("smtp50,")+1) ) < smtp = smtp + ",smtp50"; >pref("mail.smtpservers", smtp); // IMAP Яндекса для yandex@yandex.ru lockPref("mail.server.server50.type", "imap"); lockPref("mail.server.server50.hostname", "imap.yandex.ru"); lockPref("mail.server.server50.realhostname", "imap.yandex.ru"); lockPref("mail.server.server50.port", 993); lockPref("mail.server.server50.socketType", 3); lockPref("mail.server.server50.name", "yandex@yandex.ru"); lockPref("mail.server.server50.userName", "yandex@yandex.ru"); lockPref("mail.server.server50.realuserName", "yandex@yandex.ru"); lockPref("mail.server.server50.check_new_mail", true); lockPref("mail.server.server50.login_at_startup", true); lockPref("mail.server.server50.isSecure", true); lockPref("mail.server.server50.max_cached_connections", 5); // Аккаунт для yandex@yandex.ru defaultPref("mail.identity.id50.fullName", "yandex"); lockPref("mail.identity.id50.useremail", "yandex@yandex.ru"); lockPref("mail.identity.id50.reply_to", "yandex@yandex.ru"); lockPref("mail.identity.id50.valid", true); lockPref("mail.identity.id50.smtpServer", "smtp50"); defaultPref("mail.identity.id50.organization", ""); lockPref("mail.account.account50.identities", "id50"); lockPref("mail.account.account50.server", "server50"); // Добавляем аккаунт yandex@yandex.ru в список accounts = getPref("mail.accountmanager.accounts"); accounts_s = accounts + ","; if (! (accounts_s.indexOf("account50,")+1) ) < accounts = accounts + ",account50"; >pref("mail.accountmanager.accounts",accounts); > catch(e)Вот и всё, мы получили файл конфигурации для Thunderbird, сгенерированный Perl скриптом на сервере.
Самое великолепное в этом то, что с помощью описанного механизма можно неограниченно гибко управлять любыми настройками Thunderbird, включая настройки плагинов, которые также подчиняются менеджеру конфигурации. Единственное, что не подвластно такому централизованному конфигурированию — это пользовательский интерфейс, то есть расположение панелек и их размер.
Настройка аккаунтов через конфигурационный файл
Сначала, на всякий случай, рассмотрим основной принцип настроек аккаунтов в Thunderbird, поскольку он не совсем очевиден.
Все множественные данные одного типа Thunderbird нумерует и различает по номерам. Если нужно добавить новый аккаунт, почтовый адрес, SMTP сервер или ещё что, то Thunderbird во внутренних настройках присвоит новому объекту первый доступный номер. Поэтому когда вы добавляете какие-то объекты через скрипт автоконфигурации, то присваивайте номера, заведомо бОльшие, чем уже могут быть в клиенте. Иначе вы можете переписать случайно настройки какого-то пользовательского почтового ящика, что вряд ли понравится пользователю. Исключение — основной корпоративный аккаунт, который имеет номер 1.
Для того, чтобы привязать множественные записи к какому-то объекту, например, несколько почтовых адресов отправки к аккаунту, Thunderbird использует простые списки, разделённые запятой. Например:
lockPref("mail.account.account1.identities", "id1,id2");Thunderbird поддерживает множественные аккаунты (account), кроме того, у каждого аккаунта может быть несколько почтовых идентификаторов (identity). Названия всех опций, относящихся непосредственно к аккаунту, начинаются с mail.account.accountN, где N — внутренний номер аккаунта. Названия всех опций, относящихся к почтовым идентификаторам, начинаются соответственно с mail.identity.idN, где N — внутренний номер идентификатора.
Список всех аккаунтов Thunderbird хранится в переменной mail.accountmanager.accounts. Кстати, порядок перечисления аккаунтов в этой переменной определяет порядок их следования в левой панели навигации пользовательского интерфейса Thunderbird. Если удалить аккаунт из этого списка, то он пропадёт из Thunderbird, даже не смотря на то, что все его настройки могут остаться на месте.
Список почтовых идентификаторов для аккаунта N указывается в переменной mail.account.accountN.identities. IMAP сервер привязывается к аккаунту с помощью переменной mail.account.accountN.server, SMTP же сервер привязывается к почтовому идентификатору с помощью переменной mail.identity.idN.smtpServer.
В общем, перед тем, как что-то настраивать, крайне рекомендуется разобраться в том, что от чего зависит и что с чем связано.
Полезные трюки для скрипта автоконфигурации
Во-первых, обратите внимание на JavaScript код, который добавляет переменные в список себе подобных. Например, вот так можно добавить аккаунт к уже существующим:
// Добавляем аккаунт в список уже подключённых аккаунтов, если его там ещё нет var accounts = getPref("mail.accountmanager.accounts"); var accounts_s = accounts + ","; if (! (accounts_s.indexOf("account1,")+1) ) < accounts = accounts + ",account1"; >pref("mail.accountmanager.accounts",accounts);Этот трюк необходим для того, чтобы скрипт автоконфигурации не уничтожал настройки дополнительных аккаунтов, подключённых пользователем вручную. Именно поэтому нужный аккаунт нужно добавлять в список уже существующих, а не просто перезаписывать весь список.
Кроме того, на уровне Perl скрипта можно организовать какую угодно обработку в зависимости от переданного имени пользователя. Я добавил для примера функцию, которая подключает аккаунт с Yandex по его имени, и добавил вызов этой функции для себя. Теперь мне потребуется всего лишь закрыть Thunderbird и открыть его заново, затем ввести свой пароль и всё, мой Yandex аккаунт будет подключён! Такую технику очень удобно использовать для удалённого управления почтовыми клиентами отдельных пользователей.
Например, звонит вам босс какого-нибудь филиала и просит подключить аккаунт yandex своей тёщи. Вы, вместо того, чтобы высылать туда штатного специалиста, или долго объяснять, куда нажать, или отвлекать от работы и подключаться удалённо, просто добавляете три строчки в скрипт автоконфигурации и просите перезагрузить почтовый клиент и ввести свой пароль. Такой метод настройки также гарантирует, что пользователь ничего не сломает в параметрах, поскольку они все заблокированы.
Ну и наконец немаловажным является тот факт, что однажды заблокированные параметры прописываются в настройки локального клиента. То есть если вы поставите Thunderbird на ноубук шефа, подключите его в корпоративной сети с целью его автоматической конфигурации, а потом шеф с ним куда-то уедет, то его настройки в клиенте всё равно сохраняться. Даже не смотря на то, что сервер автоконфигурации не будет доступен из того места, где он будет подключаться к интернету.
Дополнительные возможности Thunderbird
Конфигурировать Thunderbird вы теперь умеете. Однако не забудьте на радостях, что Thunderbird выгодно отличается от всех других почтовых клиентов тем, что поддерживает расширения. И этих расширений доступно великое множество на все случаи жизни.
Например, для управления совместным доступом к почтовым ящикам с помощью IMAP ACL можно использовать соответствующее расширение. Для добавления календаря в Thunderbird отлично подойдёт Lightning, который, кстати, тоже можно очень гибко настроить через описанный выше механизм.
Для того, чтобы установить расширение для всех пользователей компьютера, можно сначала поставить его штатным способом, а потом скопировать соответствующую папочку из своего профиля в каталог extensions/, который можно найти в основном установочном каталоге Thunderbird.
Кроме того, можно создавать профили по умолчанию для новых пользователей. Для этого используется каталог default/profile. В профиль можно положить, например, файл настроек пользовательского интерфейса или файл с сертификатами.
Комментарии и полезные дополнения к материалу всячески приветствуются!