Оргинал: mozilla.ru
Все мы сталкиваемся с необходимостью настройки клиентского программного
обеспечения. Обычно это самая неинтересная и нудная работа, которую нам
приходиться регулярно выполнять. Поэтому всегда хочется найти способ
избежать ручной работы и позволить программным продуктам самим себя
настраивать. Эта статья посвящена автоматической настройке Mozilla.
Принятые соглашения
Все нижеописанные действия применимы относительно следующих соглашений:
Пользователи читают почту посредством протокола IMAP4, используя
безопасную аутенфикацию (CRAM-MD5, NTLM).
Прочитанные, отправленные удаленные сообщения и черновики
хранятся на сервере. Это позволяет пользователям получить доступ к
своей почте с любого рабочего места.
Хранить часть сообщений локально могут только те пользователи,
которые входят в определенную группу. Необходимость хранения сообщений
на рабочей станции может быть вызвана большим объемом почты, либо
другими причинами.
Пользователи могут отправлять сообщения посредством протокола
SMTP, только пройдя проверку подлинности, используя безопасную
аутенфикацию (CRAM-MD5, NTLM).
Пользователи не могут менять большую часть настроек своих учетных
записей.
Папки Отправленные, Шаблоны, Черновики и Trash должны
существовать в IMPAP ящике каждого пользователя и пользователь должен
быть на них подписан. Проще всего их создавать и подписывать на них
пользователя сразу при создании ящика.
Нам понадобится хотя бы один сервер, на котором будут работать служба
каталогов и web сервер. В случае большого количества настраиваемых
рабочих станций можно использовать несколько таких серверов.
Программные пакеты
Программные пакеты, которые
будут задействованы в процессе
настройки:
Локализованная сборка Mozilla.
Рабочие
версии 1.5 и 1.6.
Apache, доступный в коллекции портов FreeBSD (www/apache13).
Рабочая версия 1.3.31.
Perl, доступный в коллекции портов FreeBSD (lang/perl5).
Рабочая версия 5.6.1.
Mod_perl, доступный в коллекции портов FreeBSD (www/mod_perl).
Рабочая версия 1.28.
Модуль Apache::Reload , доступный в коллекции портов FreeBSD (www/p5-Apache-Reload).
Рабочая версия 0.07.
OpenLDAP, доступный в коллекции портов FreeBSD (net/openldap22-server).
Рабочая версия 2.2.14.
Переменные
MOZILLA_HOME
- каталог, куда установлен Mozilla, например, c:\Program
Files\mozilla.org\Mozilla. MOZILLA_DEBUG
- переменная окружения, влияющая на вывод диагностических сообщений.
Центральный файл настройки Mozilla
Он находится в MOZILLA_HOME
и представляет собой javascript encoded
файл (byteshift/rotary). Создаётся javascript encoded файл в два этапа.
Для
начала создадим обычный текстовый файл mozweb32.js.
В нём мы опишем поставщика настройки и местонахождение настроек
поставщика:
Полученный mozweb32.cfg
нужно скопировать в MOZILLA_HOME.
Чтобы этот
конфигурационный файл использовался при работе Mozilla, его необходимо
описать в
конце файла MOZILLA_HOME\defaults\pref\all.js:
Чтобы не делать этого на всех рабочих станциях, можно автоматизировать
сам процесс установки. Я ставлю Mozilla во время автоматической сетевой
установки
Windows, при помощи VBS скрипта mozilla.vbs.
Помимо установки Mozilla, FlashPlayer и
Shockwave, этот скрипт копирует mozweb32.cfg
в MOZILLA_HOME
и описывает его в MOZILLA_HOME\defaults\pref\all.js.
Для неинтерактивной установки
Mozilla
необходимо распаковать установочный пакет и поправить файл config.ini.
Вот мой config.ini.diff.
Потом из полученных файлов можно сделать
самораспаковывающийся архив, указав, что после распаковки нужно
выполнить mozilla.vbs. Вот
мой комментарий для WinRAR.
Настроенный таким образом, Mozilla при каждом старте любого из своих
компонент будет обращаться к http://mozconfig.komi.mts.ru/mozilla.config
в
надежде найти там свою конфигурацию.
Конфигурация службы каталогов
Для конфигурации Mozilla можно и должно использовать информацию,
которая уже хранится в службе каталогов. Например, есть сотрудник
службы
автоматизации:
dn: cn=Дейтер Александр
Валериевич,ou=Служба автоматизации,ou=People,dc=komi,dc=mts,dc=ru cn: Дейтер Александр Валериевич facsimileTelephoneNumber:
(8212)12-63-78 facsimileTelephoneNumber: 4567 gecos: Alex Deiter gidNumber: 12345 givenName: Александр homeDirectory: /home/users/login initials: Валериевич jpegPhoto: FF D8
FF E0 00 10
4A 46 49 46 00 01 01 01
00 44... l: Сыктывкар loginShell: /bin/csh mail: [email protected] mailHost: server.komi.mts.ru mobile: (912)123-45-67 o: Филиал ОАО "Мобильные
ТелеСистемы" в г.Сыктывкаре, РК. objectClass:
inetLocalMailRecipient objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: posixAccount objectClass: sambaSamAccount objectClass: top ou: Служба автоматизации ou: People postalAddress: Советская 72 postalCode: 167000 sn: Дейтер st: Республика Коми streetAddress: Советская 72 telephoneNumber: (8212)12-34-56 telephoneNumber: 8678 title: технический специалист uid: login uidNumber: 6789 userPassword: {SSHA}... ...
Этой информации более чем достаточно для настройки учётной записи
почты, телеконференций и адресной книги. Необходимо лишь обеспечить
доступ на
чтение для атрибутов: uid, cn,
gecos, mail, mailHost, o.
Скрипт формирования настроек
Mozilla
Он реализован в виде модуля perl и
исполняется на стороне web сервера.
Его надо отредактировать, изменив минимум шесть переменных:
$confserver
- имя или ip адрес Вашего web сервера, например, $confserver="mozconfig.komi.mts.ru".
$ldapserver
- имя или ip адрес Вашего ldap
сервера, например, $ldapserver="ldap.komi.mts.ru".
$newsserver
- имя или ip адрес Вашего news сервера, например, $newsserver="news.komi.mts.ru".
$basedn
- устанавливает searchbase для поиска
атрибутов пользователей в дереве каталогов, например, $basedn="ou=People,dc=komi,dc=mts,dc=ru".
$newsers
- задает posix группу пользователей,
которые читают news конференции. Т.е. если пользователь login входит в
группу $newsers,
ему будет
настраиваться учетная запись news конференций.
$lfolders
- задает posix группу пользователей,
которым необходимо настраивать учетную запись Local folders,
для хранения части почтовых сообщения
локально.
Все остальные измененения по вкусу и необходимости. Для того, чтобы
использовать несколько web/ldap серверов, можно сделать несколько A
записей в DNS, например:
/var/www/lib
- каталог, где apache будет искать
модули perl. В этом каталоге должен находиться модуль MozConfig.
Apache::Reload
- модуль, который заставляет apache
перезагружать модули, модифицированые после старта сервера.
Без него нам придется перезапускать apache при каждом изменении
содержимого perl модулей.
MozConfig
- perl модуль, который будет формировать
установки для Mozilla.
PerlHandler
MozConfig назначает обработчик для
URL /mozilla.config.
Отладка
Если на рабочей станции задать переменную окружения MOZILLA_DEBUG,
при
запуске любого компонента Mozilla появится окно с информацией о
переменных,
используемых для автонастройки:
Пример работы
После запуска Mozilla проверяем правильность настройки. Меню правка,
настройки, вкладка прокси серверы (пример proxy.js):
Проверяем работоспособность адресной книги:
Проверяем работоспособность почтового клиента:
Поскольку наш пользователь входит в группу $newsers,
ему настроилась
учетная запись news конференций. Учетная запись Local Folders
у него отсутствует,
потому что он не входит в группу $lfolders.
Убеждаемся в том, что пользователь не может менять настройки своей
учетной записи:
Ошибки
В процессе написания и последующей эксплуатации были замеченные
следующие ошибки:
Оригинальные сборки Mozilla с http://www.mozilla.org
разных
версий могут подвисать на 10-15 секунд при выполнении ldap
запроса. Самодельные
сборки и русские сборки Mozilla с http://www.mozilla.ru
такого дефекта не имеют.
При отсутствии папок или отсутствии подписки на
IMAP папки Отправленные, Шаблоны, Черновики и Trash, некоторые версии
Mozilla могут работать с ошибками.
Чтобы Адресная книга в Mozilla отображала атрибут streetAddress,
необходимо поправить схему ldap сервера.
Адресная книга в Mozilla не отображает атрибуты, у которых
несколько значений. Например, если у сотрудника компании несколько
телефонных номеров, в карточке будет видно только первый номер телефона.
Заключение
Описанная методика успешно опробована на 250 рабочих станциях в течении
полугода работы.
Благодарности
Арсламбеков Марат Мирасович написал функцию utf8,
которая позволяет использовать UTF-8 атрибуты службы каталогов для
настройки параметров учетной записи.