Автоматичне настроювання поштового клієнта Thunderbird у домені - Петро Бубнов
Останні дії на сайті
Автоматичне настроювання поштового клієнта Thunderbird у домені
Отже, завдання: Забезпечити повністю автоматичне налаштування основних параметрів поштового клієнта Thunderbird для користувачів, що працюють як під Linux, так і під Windows, що заходять з доменними обліковими записами. Виключити необхідність ручного введення пароля у поштовому клієнті.
Модифікація встановленого Thunderbird
Налаштування допоміжного сервера, який отримує додаткові дані з ldap (AD)
Отже, що змінюємо у встановленому на клієнтські машини Thunderbird: По шляху встановлення Thunderbird (у моєму випадку це /usr/lib64/thunderbird або можна подивитися у властивостях ярлика) створюємо файл serverconf.js (ім'я може бути довільним, воно вказується в іншому файлі) наступного змісту:
if( getenv ( "USER" ) != "" ) <// *NIX environmentsvarenv_ename = getenv ("USER");// Слід врахувати, що ця змінна має вигляд "DOMAIN\username", але нам потрібен тільки username!env_name = env_ename. substring (env_ename. lastIndexOf ("\") + 1); >else<// Windows environmentsenv_name = getenv ("USERNAME"); > ;
lockPref ("autoadmin.global_config_url", "http://configs.test.lan/tb/user/" + env_name);// "configs.test.lan" - повне доменне ім'я нашого допоміжного web-сервера// на сервер передається ім'я поточного користувача; чому так незвичайно, пояснюється у статті на ХабреlockPref ("autoadmin.append_emailaddr",false);
Там же, у підкаталозі defaults/pref створюємо файл addinit.js (або з будь-яким іншим ім'ям) наступного змісту:
// Place this file in
/.thunderbirdабо %APPDATA%\Thunderbird\Profiles) скопіював свіжостворений файл cert8.db.
Тепер настала черга налаштування допоміжного сервера. Установити apache, створити в ньому virtualhost (при необхідності), підключити php та інші принади - тут описувати не буду. Будемо вважати, що у нас є налаштований web-сервер з mod_rewrite, що розуміє php5, що має модуль php5-ldap (останнє - важливо!), де є каталог /tb/ у якому дозволено цей rewrite. У даному каталозі нам знадобиться всього два файли, наступного змісту: .
Options -Indexes RewriteEngine on RewriteBase /tb RewriteRule ^user/(.*) index.php?user=$1 [L]
Даний файл відповідає за перетворення запитів на сервер виду http://server/tb/user/username в http://server/tb/index.php?user=username - таке перетворення необхідне для сумісності зі способом запиту конфігурації javascript мовою Mozilla Thunderbird . Другий файл: index.php
Як можна побачити з лістингу скрипта генерації конфігурації, ніяких налаштувань цей скрипт не дає, а лише заповнює деякі змінні для скрипта автоконфігурації. Чому використовується читання параметрів підключення до ldap-сервера з файлу налаштувань dovecot, думаю, зрозуміло, але якщо такий підхід нас не влаштовує, то можна присвоїти ці параметри в тілі скрипту, не забувши створити відповідного користувача, з правом читання даних з ldap>Власне саме присвоєння параметрів винесено в два зовнішні шаблони - initvarprefs.cfg.head і initvarprefs.cfg.foot , які я поклав у підкаталог templates таким чином, файл, що починає скрипт:
Несподівано виявилося, що перший порожній рядок у цьому файлі необхідний і повинен бути порожнім, інакше скрипт не виконувався - я не зміг знайти цьому розумних пояснень.
defaultPref ( "mail.server.server2.directory-rel", "[ProfD]Mail/Local Folders"); defaultPref ("mail.server.server2.hostname", "Local Folders"); defaultPref ("mail.server.server2.name", "Локальні папки"); defaultPref ("mail.server.server2.spamActionTargetAccount", "mailbox://nobody@Local%20Folders"); defaultPref ("mail.server.server2.type", "none"); defaultPref ("mail.server.server2.userName", "nobody");
>catch(e) < displayError ("defaultPref", e); >
.varvar_name = "testuser";varvar_fullname = "Максим Федоров";varvar_vacname = "Старший помічник молодшого двірника";varvar_orgname = "ТОВ\"Наше все\"";varvar_mailad = "[email protected]";varvar_phone = "+7(495)221-10-28";varvar_orgadr = "Бутирський вал, 17";varvar_site = "http://www.ya.ru/";varvar_userdn = "cn=" + var_name + "," + var_usersdn ; .
Якщо користувач, переданий в URL, не знайдений, згаданий шматок коду буде виглядати так:
.varvar_name = "testuser";varvar_fullname = "";varvar_vacname = "";varvar_orgname = "";varvar_mailad = "";varvar_phone = "";varvar_orgadr = "";varvar_site = "";varvar_userdn = "cn=" + var_name + "," + var_usersdn ; .
Потрібен URL /tb/user/testusername не був на цьому сервері. Apache/2.2.22 (Ubuntu) Server at 192.168.122.101 Port 80
Після отримання налаштувань Thunderbird повинен підключитися до поштового сервера за допомогою GSSAPI. У Linux наявність такої спроби можна знайти, ввівши команду klist :
> klist Ticket cache:FILE:/tmp/krb5cc_10002 Default principal: [email protected]
Valid starting Expires Service principal 06/27/13 12:10:09 06/27/13 22:10:09 krbtgt/[email protected] renew until 07/04/13 12:10 :09 06/27/13 12:10:09 06/27/13 22:10:09 [email protected] renew until 07/04/13 12:10:09 06/27/13 12:10:35 06/27/13 22:10:09 imap/[email protected] renew until 07/04/13 12:10:09 06/27/13 13:14:45 06/27/13 22:10:09 ldap/[email protected] renew until 07/04/13 12:10:09 06 /27/13 13:19:24 06/27/13 22:10:09 smtp/[email protected] renew until 07/04/13 12:10:09 TEST\ testuser@linux-7r77: