Roundcube + адресная книга LDAP

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Roundcube + адресная книга LDAP

Непрочитанное сообщение hangover » 2009-02-11 15:11:12

Всем привет!
Собственно, поставил сабж - красота неописуемая, аж жуть. Всё работает, почта получается-отправляется.
Осталась одна фича неработающая: поскольку сервер почтовый находится в домене Windows, хотелось бы ещё прикрутить к круглокубу адресную книгу LDAP, но что-то не растёт кокос пока..

Кусок конфига:

Код: Выделить всё

$rcmail_config['ldap_public']['MYDOMAIN'] = array(
  'name'          => 'Active Directory',
  'hosts'         => array('pdc.mydomain.local'),
  'port'          => 389,
  'use_tls'       => false,
  'user_specific' => false,   // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
  'base_dn'       => 'dc=mydomain,dc=local',
  'bind_dn'       => 'mydomain\ldapuser',
  'bind_pass'     => 'Mega$ecurePa$$word',
  'writable'      => false,   // Indicates if we can write to the LDAP directory or not.
  'LDAP_Object_Classes' => array("top", "inetOrgPerson"), // To create a new contact these are the object classes to s
  'required_fields'     => array("cn", "sn", "mail"),     // The required fields needed to build a new contact as requ
  'LDAP_rdn'      => 'mail', // The RDN field that is used for new entries, this field needs to be one of the search_f
  'ldap_version'  => 3,       // using LDAPv3
  'search_fields' => array('mail', 'cn'),  // fields to search in
  'name_field'    => 'cn',    // this field represents the contact's name
  'email_field'   => 'mail',  // this field represents the contact's e-mail
  'surname_field' => 'sn',    // this field represents the contact's last name
  'firstname_field' => 'givenName',  // this field represents the contact's first name
  'sort'          => 'cn',    // The field to sort the listing by.
  'scope'         => 'sub',   // search mode: sub|base|list
  'filter'        => '',      // used for basic listing (if not empty) and will be &'d with search queries. example: s
  'global_search' => true,    // perform a global search for address auto-completion on compose
  'fuzzy_search'  => true);   // server allows wildcard search
При попытке открыть адресную книгу ничего не возвращается, даже ошибок. $rcmail_config['debug_level'] повышал - всё равно тишина.
php-ldap стоит.

Вопрос: у кого-нибудь сабж нормально работает? Если да, то не могли бы вы привести пример работающего конфига или ткнуть в корявое место в моём?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Larin
лейтенант
Сообщения: 975
Зарегистрирован: 2008-01-29 20:08:41
Откуда: РБ, Минск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Larin » 2009-02-11 15:22:17

о. интересная тема. через недельку и мне таким же придётся заниматься.

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение princeps » 2009-02-11 16:44:40

навскидку:

Код: Выделить всё

'mydomain\ldapuser'
Может слэшь как-то экранировать надо? Или писать ldapuser@mydomain?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение hangover » 2009-02-11 18:05:47

Тээк, уже лучше..

видоизменил следующим образом:

Код: Выделить всё

$rcmail_config['address_book_type'] = 'ldap';
'port'          => 3268,
'bind_dn'       => 'ldapuser',
Т.е., указал порт Global Catalog'a, чтоб пошустрее шуршало, и пользователя без домена указал.
При составлении нового письма мыло тащится: например, начинаю набирать "alex" - вытаскиваются пользователи, у которых мыло начинается с этого буквосочетания, т.е.

Код: Выделить всё

'global_search' => true,    // perform a global search for address auto-completion on compose
делает своё дело.

Но при открытии, собственно, адресной книги, прежняя тишина, список пуст...
Щас попробую поставить стандартный 389-й LDAP-порт, проверю, будет ли автодополнение работать.
Насчёт пустого общего списка - у меня есть подозрение, что он получается слишком большой и поэтому не переваривается пехепе. Возможно такое?

Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение hangover » 2009-02-11 18:25:37

Вобщем, при указании 389-го порта поиск не даёт результатов вообще - ни по имени, ни по мылу пользователя.
Вернул назад 3268 - бодро заработало автодополнение при составлении нового письма, причём следующим образом:
- начинаешь вбивать латинские символы - всё ОК, сразу вываливается список учёток;
- начинаешь вбивать русские символы (фамилию, например), список (причём, неполный) вываливается только, если введена одна или две буквы, если больше, то тишина;
- в разделе адресной книги по-прежнему нифига нету.

Что-то мне сильно кажется, что загвоздка именно в PHP, так ли это? Если ли у скриптов, использующих php-ldap, какие-то свои ограничения?
(Хотя, что это я, SAMS-то ведь совершенно чудесно тащит из домена полный список пользователей)...

Вобщем, какие будут рекомендации, уважаемые товарищи?
И, да, вопрос про рабочий конфиг остаётся открытым - если у кого пашет, поделитесь, пожалуйста.

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение princeps » 2009-02-11 22:35:06

Что-то мне подсказывает, что вряд ли тебе ответят. А жаль, сам собирался нечто подобное устроить через пару месяцев.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение princeps » 2009-02-11 22:36:10

OpenLDAP-клиент у тебя установлен? Может быть он нужен?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение hangover » 2009-02-12 6:36:22

Стоит... Он экзимом используется:

Код: Выделить всё

root@gate:[/usr/ports/mail/roundcube]# pkg_info | grep ldap
openldap-client-2.3.41 Open source LDAP client implementation
pam_ldap-1.8.4      A pam module for authenticating with LDAP
php5-ldap-5.2.8_1   The ldap shared extension for php

Lehan
рядовой
Сообщения: 44
Зарегистрирован: 2008-05-29 12:55:10

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Lehan » 2009-02-13 12:17:55

У меня работает так:

Код: Выделить всё

$rcmail_config['ldap_public']['Test 248'] = array(
 'name'                 => 'Test 248',
 'hosts'                => array('test248.local'),
 'port'                 => 3268,
 'use_tls'              => false,
 'user_specific'        => false,
 'base_dn'              => 'dc=test248,dc=local',
 'bind_dn'              => 'roundcube@test248.local',
 'bind_pass'            => 'Pa$$w0rd',
 'writable'             => false,
 'ldap_version'         => 3,
 'search_fields'        => array('mail', 'cn'),
 'name_field'           => 'cn',
 'email_field'          => 'mail',
 'surname_field'        => 'sn',
 'firstname_field'      => 'givenName',
 'sort'                 => 'cn',
 'scope'                => 'sub',
 'filter'               => '',
 'global_search'        => true,
 'fuzzy_search'         => true);
Но для некоторых контактов в адресной книге пишет "Требуемый контакт не найден". Пока еще не разбирался с этим. Большинством контактов показывает и при наборе сообщения тоже дописывает имена.

Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение hangover » 2009-02-13 13:36:38

Спасибо за конфиг!
В принципе, попробовал - та же самая история..

Код: Выделить всё

root@gate:[/root]# pkg_info | grep roundcube
roundcube-0.2,1     Fully skinnable XHTML/CSS webmail written in PHP
Может, чото поломали после беты, может, нет.. Вобщем я всё больше склоняюсь к мысли что и хер с ней, с адресной книгой... Хотя, конечно, было бы очень неплохо...

Lehan
рядовой
Сообщения: 44
Зарегистрирован: 2008-05-29 12:55:10

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Lehan » 2009-02-13 15:06:35

Забыл добавить, что у меня контроллеры домена на Windows Server 2008. Режим native. Хотя он полностью совместим с 2003 в плане ldap.

Larin
лейтенант
Сообщения: 975
Зарегистрирован: 2008-01-29 20:08:41
Откуда: РБ, Минск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Larin » 2009-03-19 14:38:26

добавил фильтр

Код: Выделить всё

 'filter'        => '(&(mail=*)(!(msExchHideFromAddressLists=TRUE)))', 
вроде стало нормально пользователей искать.
только в адресную книгу поля Имя, Полное имя и т.д. не у всех юзеров вносит. заметил, что трабл в длине OU и логина...

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 10:53:26

Подключил к Roundcube 2 адреные книги, 1 sql - персональную, 2ю ldap - общую из каталога опенлдап

Код: Выделить всё

$rcmail_config['address_book_type'] = 'sql';

$rcmail_config['ldap_public']['domain.ru'] = array(
  'name'          => 'domain.ru',
  'hosts'         => array('192.168.1.1'),
  'port'          => 389,
  'use_tls'         => false,
  'user_specific' => false,
  'base_dn'       => 'dc=domain,dc=ru',
  'bind_dn'       => 'cn=exim,ou=system,dc=domain,dc=ru',
  'bind_pass'     => 'pass',
  'writable'      => false,   // Indicates if we can write to the LDAP directory or not.
  'ldap_version'  => 3,       // using LDAPv3
  'name_field'    => 'displayName',    // this field represents the contact's name
  'email_field'   => 'mail',  // this field represents the contact's e-mail
  'surname_field' => 'sn',    // this field represents the contact's last name
  'firstname_field' => 'givenName',  // this field represents the contact's first name
  'sort'          => 'sn',    // The field to sort the listing by.
  'scope'         => 'sub',   // search mode: sub|base|list
  'filter'        => '(&(mail=*)(objectClass=dbmailUser))',      // used for basic listing (if not empty) and will be &'d with search queries. example: status
  'global_search' => true,    // perform a global search for address auto-completion on compose
  'fuzzy_search'  => true);   // server allows wildcard search
но с лдап есть проблемы:
1. в roundcube в разделе "Контакты" когда указываешь адресную книгу из лдап в столбце "Отображаемое имя" выводятся не подписанные (пустые) строки, но если выбрать любую строку из этого столбца, то в следующем столбце все данные отображается верно(Отображаемое имя, Имя, Фамилия, мыло). Пробывал вставлять записи на латинице, результат тот же. В sql книге отображение есть, это видимо трабла лдапа
2. при создании нового письма автокомплит не ищет по имени, только по емайл, раньше думал что из-за кирилицы, проверил, с латиницей так же.

Кто нибудь решил эти проблемы?

Larin
лейтенант
Сообщения: 975
Зарегистрирован: 2008-01-29 20:08:41
Откуда: РБ, Минск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Larin » 2009-05-14 11:15:35

никто ничего не решил. читай тему внимательнее.

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 11:48:07

никто ничего не решил. читай тему внимательнее.
тему читал. там написано что не работает. у меня поиск работает, просто у в результатах, а вернее при отображении результата есть проблемы, а именно в столбце "Отображаемое имя" выводятся не подписанные (пустые) строки, если на эту строку встать, то в следующем столбце все данные выводятся корректно. Т.о. книга работает, единственная и значимая сложноть что выводимая книга выдает результат в виде списка, который нельзя идентифицировать пока не встать на какую-нибудь запись вот.

проблема автокомплита для меня пока на 2м месте, сначало 1ю надо решить

Larin
лейтенант
Сообщения: 975
Зарегистрирован: 2008-01-29 20:08:41
Откуда: РБ, Минск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Larin » 2009-05-14 12:10:19

yolkov писал(а):
никто ничего не решил. читай тему внимательнее.
тему читал. там написано что не работает. у меня поиск работает, просто у в результатах, а вернее при отображении результата есть проблемы, а именно в столбце "Отображаемое имя" выводятся не подписанные (пустые) строки, если на эту строку встать, то в следующем столбце все данные выводятся корректно. Т.о. книга работает, единственная и значимая сложноть что выводимая книга выдает результат в виде списка, который нельзя идентифицировать пока не встать на какую-нибудь запись вот.

проблема автокомплита для меня пока на 2м месте, сначало 1ю надо решить
это общая проблема про которую писали не раз.
никто решить не смог.

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 13:26:49

нашел, обещают поправить в 0.2.2
http://trac.roundcube.net/query?group=s ... tone=0.2.2
1485783, 1485792

кстати если поставить 'name_field' => 'sn', то столбец "Отображаемое имя" будет не пустой а состоять из фамилий, хоть и не полное имя но лучше чем пустой список.

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 13:43:25

все нашел как исправить
'name_field' => 'displayName'
если "displayName" заменить на "displayname", то все заработает. Видимо проблемы с регистром.

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 13:49:40

теперь правдо в карточке(третий столбец) в поле "Отображаемое имя" ничего не определяется, но это фигня.

Осталось разобраться с автокомплитом. Есть идеи как?

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-14 14:39:30

автокомплит работает но с багом, если искать по email то находит без проблем, если пользователи введены с прописной или латинецей - проблем нет, а вот если фамилия, имя, отчество написаны с заглавной буквы, то он не работает. Не зависимо от того лдап или бд. В лдапе поиск ведется видимо по 'name_field' => 'displayname'.
Например:
Сидоров Иван Петрович
ищу "с" не находит, а если написать "идоров" то он находить, причем без разницы в каком регистре я буду его искать хоть "ИдОРоВ", все равно найдет, и соответственно и "идо", и "дор", т.е. любые комбинации.
Короче: проблема именно в ЗАГЛАВНЫХ кириллических буквах в лдапе или бд (без разницы).
видимо проблема в кодировке, не обрабатывается ЗАГЛАВНЫЕ КИРИЛЛИЧЕСКИЕ символы

господа ПХПшники помогите поправить?

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-15 8:40:18

все ошибку с автокомплитом поправили
http://trac.roundcube.net/changeset/2479

Larin
лейтенант
Сообщения: 975
Зарегистрирован: 2008-01-29 20:08:41
Откуда: РБ, Минск

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Larin » 2009-05-15 9:15:11

ох. много же ты понаписал:)
надо попробовать roundcube еще раз. в какой версии все эти фиксы закоммитят?

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-15 9:46:36

нашел, обещают поправить в 0.2.2
http://trac.roundcube.net/query?group=s ... tone=0.2.2
я руками подправил и все нормально у меня работает

Аватара пользователя
Cancer
Гл. Кастратор
Сообщения: 1269
Зарегистрирован: 2008-03-25 12:21:36
Откуда: г. Ростов-на-Дону
Контактная информация:

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение Cancer » 2009-05-25 19:40:57

Блин попробовал сделать и фиг выходит

Код: Выделить всё

$rcmail_config['address_book_type'] = 'ldap';

$rcmail_config['ldap_public']['domain.local'] = array(
 'name'          => 'domain.local',
 'hosts'         => array('127.0.0.1'),
 'port'          => 389,
 'use_tls'       => false,
 'user_specific' => false,
 'base_dn'       => 'ou=addressbook,dc=domain,dc=local',
 'bind_dn'       => 'cn=root,dc=domain,dc=local',
 'bind_pass'     => 'Пароль',
 'ldap_version'  => 3,
 'search_fields' => array('mail', 'cn'),
 'name_field'    => 'displayName',
 'email_field'   => 'mail',
 'surname_field' => 'sn',
 'firstname_field' => 'givenName',
 'sort'          => 'cn',
 'scope'         => 'sub',
 'filter'        => '(&(mail=*)(objectClass=dbmailUser))',
 'global_search' => true,
 'fuzzy_search'  => true);
Использую OpenLDAP, thunderbird нормально получает пользователей

самое главное что

Код: Выделить всё

//>tail -f /var/log/debug.log
тишина полная, кроме того когда подключаюсь thunderbird

В логах куба

Код: Выделить всё

[25-May-2009 20:09:14] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/addressbook/func.inc on line 25
[25-May-2009 20:13:28] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/addressbook/func.inc on line 25
[25-May-2009 20:13:36] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/mail/autocomplete.inc on line 30
[25-May-2009 20:15:32] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/mail/autocomplete.inc on line 30
[25-May-2009 20:15:43] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/addressbook/func.inc on line 25
[25-May-2009 20:15:51] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/mail/autocomplete.inc on line 30
[25-May-2009 20:23:23] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/mail/autocomplete.inc on line 30
[25-May-2009 20:26:02] PHP Fatal error:  Call to a member function set_pagesize() on a non-object in /usr/local/www/roundcube/program/steps/mail/autocomplete.inc on line 30

yolkov
рядовой
Сообщения: 37
Зарегистрирован: 2007-04-11 8:52:08

Re: Roundcube + адресная книга LDAP

Непрочитанное сообщение yolkov » 2009-05-26 11:48:04

прочти внимательней что я писал выше.
измени 'name_field' => 'displayName',
на 'name_field' => 'displayname',

и еще убери
$rcmail_config['address_book_type'] = 'ldap';
или вообще удали или поставь sql
Последний раз редактировалось yolkov 2009-05-26 11:56:46, всего редактировалось 1 раз.