В статье будет выложен пример рабочих настроек для использования адресной книги в ldap’e.
Структура адресной книги в ldap’e такова:
в корне каталога создан контейнер OU с названием addressbook. Есть отдельный контейнер people, в котором заведён юзер book_ro, через которого и осуществляется доступ к адресной книге.
Структура записей:
класс объектов = inetOrgPerson
cn = имя
sn = фамилия
mail = почтовый адрес
Если у вас есть отличия – отредактируйте соответствующий код под себя.
А ниже привожу рабочий код из файла настроек roundcube :
$rcmail_config['address_book_type'] = 'ldap';
$rcmail_config['ldap_public']['domain.lan'] = array(
'name' => 'domain.lan',
'hosts' => array('192.168.0.1'),
'port' => 389,
'use_tls' => false,
'user_specific' => false,
'base_dn' => 'ou=addressbook,dc=domain,dc=lan',
'bind_dn' => 'cn=book_ro,ou=people,dc=domain,dc=lan',
'bind_pass' => 'user_pass',
'ldap_version' => 3,
'search_fields' => array('addressbook', 'cn'),
'name_field' => 'cn',
'email_field' => 'mail',
'surname_field' => 'sn',
'firstname_field' => 'cn',
'sort' => 'cn',
'scope' => 'sub',
'filter' => '(&(mail=*)(objectClass=inetOrgPerson))',
'global_search' => true,
'fuzzy_search' => true);
Кстати, пользователь book_ro должен обладать правами на чтение указанного OU. Для этого добавим такую запись в настройки сервера ldap:
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to attrs=userPassword
by self read
by anonymous auth
by users read
###ou=addressbook
access to dn="ou=addressbook,dc=fbp,dc=lan"
by dn="cn=book_ro,ou=people,dc=fbp,dc=lan" read
by * auth
access to dn.subtree="ou=addressbook,dc=fbp,dc=lan"
by dn="cn=book_ro,ou=people,dc=fbp,dc=lan" read
by * auth
### other access
access to *
by anonymous auth
by users read
by * none