Дано: почтовый клиент Mozilla Thunderbird, AD
Требуется: адресная книга, которая цепляла бы контакты по ldap из каталога
Штатным добавлением каьалога ldap в адресную книгу птички это вроде как реализуется. Но есть минус: чтобы посмотреть список контактов, нужно задать сроку поиска, а это не есть гуд.
Есть дополнение к TB, называется Contacts Sidebar. Там можно указать, что адресная книга должна автоматом подгружаться, используя какой-либо поисковый хапрос (для вывода всего списка используется * или @)
И вроде бы оно с этим плагином работает, адресная книга подгружается сразу при запуске, но опять же пара минусов:
1. Нет сквозной доменной аутентификации, т.е. каждый раз надо вводить пароль на подключение к серверу каталога (даже менеджер паролей не сохраняет, сколько ни ставь галочку "Сохранить пароль")
2. Когда я создаю сообщение, потом закрываю его, поисковый запрос выполняется заново и записи в адресной книге дублируются, если опять создать сообщение и закрыть/отправить его, ситуация повторяется и для каждого контакта становится уже по три записи.
Уже этих двух минусов достаточно, чтобы вызвать недовольство пользователей.
С MS Outlook вышеупомянутых проблем не возникает. Но на MS Office для всех денег пока нет.
Может быть кто подскажет как подружить TB с ldap?

TB2.0.0.17 + 2003 домен все прекрасно, пароли сохраняются ничего не дублируется и показывает все контакты в сайдбаре. Для аутентификации в LDAP используется пароль текущего пользователя.

поиск!

saab, а как вы прозрачную аутентификацию настраивали? Я использую TB 2.0.0.19
Вот все настройки, которые я производил.

1. Настройки Contact Sidebar:
7ec3fa0ceb65c7f2de8986a06f8b397f.jpg

2. Настройки адресной книги:
e6960d1b88116274efd938d3bf0d3529.jpg
bc143704bef13bcb997fec9563db71b5.jpg

Почитайте тут сначала https://developer.mozilla.org/en/MCD%2c … AutoConfig
Потом тут http://kb.mozillazine.org/About:config_entries
Смыл прост - получаем %username% из переменных среды, если он совпадает с мылом - все просто - прописываем пути к папочкам на сервере, если имап, или настройки для поп3, если не совпадает тут танцы с бубнами по выдергиванию мыла и cn из АД - встроенные функции processLDAPValues и getLDAPValue к сожалению не работают с MS AD, поэтому я делаю это сторонним скриптом. В случае, если нужно только адресную книжку выводить все гораздо проще - достаточно получить это из %username%, или вообще для всех жестко прописать спец. созданный аккаунт для опроса лдап.
Если не получится, попозже могу выложить кусок конфига.
Да, аутентификация не прозрачная, но можно поставить галку сохранять пароль. Не совсем секьюрно, конечно, хеши паролей видны в файлике signons вроде но НТЛМ в Мозилле пока не реализован...

Вот кусок 100% рабочего конфига:

Выделить код

Код:

//LDAP config
        lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.ldapint"
        lockPref("ldap_2.autoComplete.useDirectory", true);
        lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");
        lockPref("ldap_2.prefs_migrated", true);
        lockPref("ldap_2.servers.history.filename", "history.mab");
        lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
        lockPref("ldap_2.servers.ldapint.csid", "UTF-8");
        lockPref("ldap_2.servers.ldapint.auth.dn","domain\\" + env_user + "");
        // предварительно обьявляем var env_user   = getenv("USERNAME");
        // если у вас не заработает сюда нужно пихать dn, у меня работало с обоими форматами
        lockPref("ldap_2.servers.ldapint.auth.savePassword",true);
        lockPref("ldap_2.servers.ldapint.description","описание книги в UTF8");
        lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab");
        lockPref("ldap_2.servers.ldapint.position", 1);
        lockPref("ldap_2.servers.ldapint.uri", "ldap://dc1:3268/dc=domain,dc=ru??sub?(&(mail=*)(|(&(ObjectClass=user)(!(ObjectClass=computer)))(objectClass=group)))");
        // в строке выше заменить dc1 и domain.ru на свои 
        lockPref("ldap_2.servers.pab.filename", "abook.mab");
        lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
        lockPref("ldap_2.servers.ldapint.maxHits", 300); //количество записей, которые будут показаны. ставить >= учеток+групп с адресами в АД
        lockPref("pref.privacy.disable_button.view_passwords", false);

saab
Спасибо огромное за консультацию! Буду пробовать.

saab
Еще раз благодарю за пинок в нужном направлении.
Вот только есть пара моментов:
1. Не работает конструкция с использованием переменной окружения env_user:

lockPref("ldap_2.servers.ldapint.auth.dn","domain\\" + env_user + "");

В отладочном логе пишется:

0[2846e0]: JS error in js from MCD server: ReferenceError: env_user is not defined

Хотя, переменная объявлена в самой первой строке:

var env_user = getenv("USERNAME");

Конечно, в данной ситуации можно использовать жестко заданный универсальный аккаунт, но все же хотелось бы большей гибкости.
2. По поводу дублирования записей контактов в сайдбаре. Вопрос решил отключением панели контактов при создании нового сообщения. Но хотелось бы автоматически подставлять поисковый запрос ("@") при вызове адресной книги. Возможно ли это?
3. При просмотре карточки контакта не заполняются атрибуты должным образом. Например, заполненные поля вкладки "Organization" (Title, Department, Company) в свойствах пользователя AD не выводятся в свойствах контакта (корректно отображается только телефон).

inspire
https://wiki.mozilla.org/MailNews:LDAP_Address_Books смотрели? Может там что полезное есть?