Инструменты пользователя

Инструменты сайта


roundcube:ldap

Работа с LDAP в Roundcube

FIXME

Решение успешно используется в RoundCube.

Адресная книга

Здесь приведен пример для работы с следующими адресными книгами:

Для начала нужно добавить схему inetorgperson

Порядок подбора адреса

config.inc.php
$rcmail_config['autocomplete_addressbooks'] = array('private','company','common');

Группы адресов

:!: В Roundcube группы создаются пустыми, для того, чтобы это работало нужно выполнить настройку по следующему описанию: Настройка LDAP сервера для работы с группами.

Личные данные

Специальная адресная книга для изменения определенных полей личной записи пользователя.

dc=domain
ou=users
uid=user1

Часть файла config.inc.php

Часть файла config.inc.php

config.inc.php
$rcmail_config['ldap_public']['personal'] = array(
	'name'			=> '0 Личные данные',
	'hosts'			=> array('ldap0'),
	'port'			=> 389,
	'user_specific'		=> true,
	'base_dn'		=> 'uid=%u,ou=users,dc=domain',
	'bind_dn'		=> 'uid=%u,ou=users,dc=domain',
	'bind_pass'		=> '',
	'writable'		=> true,
//	'hidden'		=> true,
//	'searchonly'		=> true,
	'LDAP_Object_Classes'	=> array('inetOrgPerson'),
	'LDAP_rdn'		=> 'cn',
	'required_fields'	=> array('cn', 'sn'),
	'search_fields'		=> array('cn','mail'),
	'fieldmap'			=> array(
		'name'			=> 'cn',
		'firstname'		=> 'givenName',
		'surname'		=> 'sn',
		'jobtitle'		=> 'title',
		'businessCategory'	=> 'businessCategory',
		'email'			=> 'mail:*',
		'phone:work'		=> 'telephoneNumber',
		'phone:mobile'		=> 'mobile',
		'phone:home'		=> 'homePhone',
		'phone:workfax'		=> 'facsimileTelephoneNumber',
		'street'		=> 'street',
		'zipcode'		=> 'postalCode',
		'region'		=> 'st',
		'locality'		=> 'l',
		'country'		=> 'c',
		'organization'		=> 'o',
		'department'		=> 'businessCategory',
		'notes'			=> 'description',
	),
	'scope'	=> 'base',
);

Личные адреса

Личная адресная книга.

dc=domain
ou=users
uid=user1
cn=address1
cn=group1
uid=user2
cn=address1
cn=group1

Часть файла config.inc.php

Часть файла config.inc.php

config.inc.php
$rcmail_config['ldap_public']['private'] = array(
	'name'				=> '1 Личные адреса',
	'hosts'				=> array('ldap0'),
	'port'				=> 389,
	'user_specific'		=> true,
	'base_dn'			=> 'uid=%u,ou=users,dc=domain',
	'bind_dn'			=> 'uid=%u,ou=users,dc=domain',
	'bind_pass'			=> '',
	'writable'			=> true,
	'LDAP_Object_Classes'	        => array('inetOrgPerson'),
	'LDAP_rdn'			=> 'cn',
	'required_fields'	=> array('cn', 'sn'),
	'search_fields'		=> array('cn','mail'),
	'fieldmap'			=>array(
	'name'				=> 'cn',
	'firstname'			=> 'givenName',
	'surname'			=> 'sn',
	'jobtitle'			=> 'title',
	'businessCategory'	=> 'businessCategory',
	'email'				=> 'mail:*',
	'phone:work'		=> 'telephoneNumber',
	'phone:mobile'		=> 'mobile',
	'phone:home'		=> 'homePhone',
	'phone:workfax'		=> 'facsimileTelephoneNumber',
	'street'			=> 'street',
	'zipcode'			=> 'postalCode',
	'region'			=> 'st',
	'locality'			=> 'l',
	'country'			=> 'c',
	'organization'		=> 'o',
	'department'		=> 'businessCategory',
	'notes'				=> 'description',
),
	'sub_fields' => array(),
	'sort'				=> 'cn',
	'scope'				=> 'list',
	'filter'			=> '(objectClass=inetOrgPerson)',
	'fuzzy_search'		=> true,
	'vlv'				=> false,
	'numsub_filter'		=> '(objectClass=organizationalUnit)',
	'sizelimit'			=> '0',
	'timelimit'			=> '0',
	'referrals'			=> true|false,
	'filter'			=> '(&(|(objectClass=person)(|(objectClass=nisMailAlias))) )',
	'groups'	=> array(
		'required_fields'	=> array('cn', 'sn'),
		'base_dn'			=> 'uid=%u,ou=users,dc=domain',
		'bind_dn'			=> 'uid=%u,ou=users,dc=domain',
		'bind_pass'			=> '',
		'writable'			=> true,
		'scope'				=> 'sub',
		'filter'			=> '(objectClass=groupOfNames)',
		'object_classes'	=> array('top', 'groupOfNames'),
		'member_attr'		=> 'member',
		'name_attr'			=> 'cn',
		'email_attr'		=> 'mail',
		'member_filter'		=> '(objectclass=*)',
		'vlv'				=> false,
	),
);
config.inc.php
$config['address_book_type'] = 'ldap';

Сотрудники

Адреса пользователей домена (сотрудников организации).

dc=domain
ou=users
uid=user1
uid=user2
uid=user3

Часть файла config.inc.php

Часть файла config.inc.php

config.inc.php
$rcmail_config['ldap_public']['company'] = array(
	'name'				=> '2 Сотрудники',
	'hosts'				=> array('ldap'),
	'port'				=> 389,
	'use_tls'			=> false,
	'ldap_version'		> 3,
	'network_timeout'	=> 10,
	'user_specific'		=> false,
	'base_dn'			=> 'ou=users,dc=domain',
	'bind_dn'			=> '',
	'bind_pass'			=> '',
	'search_base_dn'	=> '',
	'search_filter'		=> '',
	'search_bind_dn'	=> '',
	'search_bind_pw'	=> '',
	'search_dn_default'	=> '',
	'auth_cid'			=> '',
	'auth_method'		=> '',
	'hidden'		=> false,
	'searchonly'	=> false,
	'writable'		=> false,
	'search_fields'	=> array('cn','mail'),
	'fieldmap'		=> array(
		'name'				=> 'cn',
		// 'surname'		=> 'sn',
		// 'firstname'		=> 'givenName',
		// 'jobtitle'		=> 'title',
		'email:Основной'	=> 'maildrop:*',
		'email:Дополнит.'	=> 'mail:*',
		// 'email:Псевдоним'	=> 'rfc822MailMember:*',
		'phone:home'  =>	'homePhone',
		'phone:work'  =>	'telephoneNumber',
		// 'phone:workfax'	=> 'facsimileTelephoneNumber',
		'phone:mobile' =>	'mobile',
		'phone:pager'		=> 'pager',
		'street'			=> 'street',
		'zipcode'			=> 'postalCode',
		'region'			=> 'st',
		'locality'			=> 'l',
		'country'			=> 'c',
		'organization'		=> 'o',
		'department'		=> 'ou',
		'jobtitle'			=> 'title',
		'notes'				=> 'description',
		),
	'sub_fields' => array(),
	'sort'			=> 'cn',
	'scope'			=> 'sub',
	'filter'		=> '(objectClass=inetOrgPerson)',
	'fuzzy_search'	=> true,
	'vlv'			=> false,
	'numsub_filter'	=> '(objectClass=organizationalUnit)',
	'sizelimit'		=> '0',
	'timelimit'		=> '0',
	'referrals'		=> true|false,
	'filter'        => '(& (!(l=disabled)) (|(objectClass=mailUser)) )',
 
    'groups'    => array(
        'required_fields'       => array('cn', 'sn'),
        'base_dn'               => 'ou=groups,dc=domain',
        'bind_dn'               => 'ou=groups,dc=domain',
        'bind_pass'             => '',
        'writable'              => false,
        'scope'                 => 'sub',
        'filter'                => '(objectClass=mailGroup)',
        'object_classes'        => array('top', 'mailGroup'),
        'member_attr'           => 'member',
        'name_attr'             => 'description',
        'email_attr'            => 'mail',
        'member_filter'         => '(objectclass=*)',
        'vlv'                   => false,
    ),
 
 
);

Общее

Общая адресная книга.

dc=domain
ou=addressbook
cn=address1
cn=address2
cn=address3
cn=group1
cn=group2
cn=group3

Часть файла config.inc.php

Часть файла config.inc.php

config.inc.php
$rcmail_config['ldap_public']['common'] = array(
	'name'				=> '3 Общие',
	'hosts'				=> array('ldap0'),
	'port'				=> 389,
	'use_tls'			=> false,
	'ldap_version'		=> 3,
	'network_timeout'	=> 10,
	'user_specific'		=>false,
	'base_dn'			=> 'ou=addressbook,dc=domain',
	'bind_dn'			=> 'cn=addressbook,dc=domain',
	'bind_pass'			=> 'PASSWORD',
	'search_base_dn'	=> '',
	'search_filter'		=> '',
	'search_bind_dn'	=> '',
	'search_bind_pw'	=> '',
	'search_dn_default'	=> '',
	'auth_cid'			=> '',
	'auth_method'		=> '',
	'hidden'			=> false,
	'searchonly'		=> false,
	'writable'			=> true,
	'LDAP_Object_Classes'	=> array('inetOrgPerson'),
	'LDAP_rdn'			=> 'cn',
	'required_fields'	=> array('cn', 'sn'),
	'search_fields'		=> array('cn','mail'),
	'fieldmap'			=> array(
	'name'				=> 'cn',
	'firstname'			=> 'givenName',
	'surname'			=> 'sn',
	'jobtitle'			=> 'title',
	'businessCategory'	=> 'businessCategory',
	'email'				=> 'mail:*',
	'phone:work'		=> 'telephoneNumber',
	'phone:workfax'		=> 'facsimileTelephoneNumber',
	'phone:mobile'		=> 'mobile',
	'phone:home'		=> 'homePhone',
	'street'			=> 'street',
	'zipcode'			=> 'postalCode',
	'region'			=> 'st',
	'locality'			=> 'l',
	'country'			=> 'c',
	'organization'		=> 'o',
	'department'		=> 'businessCategory',
	'notes'				=> 'description',
	),
	'sub_fields'		=> array(),
	'sort'				=> 'cn',
	'scope'				=> 'sub',
	'filter'			=> '(objectClass=inetOrgPerson)',
	'fuzzy_search'		=> true,
	'vlv'				=> false,
	'numsub_filter'		=> '(objectClass=organizationalUnit)',
	'sizelimit'			=> '0',
	'timelimit'			=> '0',
	'referrals'			=> true|false,
	'filter'			=> '(&(|(objectClass=person)(|(objectClass=nisMailAlias))) )',
 
	'groups'	=> array(
		'base_dn'				=> 'ou=addressbook,dc=domain',
		'scope'					=> 'sub',
		'filter'				=> '(objectClass=groupOfNames)',
		'object_classes'		=> array('top', 'groupOfNames'),
		'member_attr'			=> 'member',
		'name_attr'				=> 'cn',
		'email_attr'			=> 'mail',
		'member_filter'			=> '(objectclass=*)',
		'vlv'					=> false,
		'class_member_attr'		=> array(
		'groupofnames'			=> 'member',
		'groupofuniquenames'	=> 'uniquemember'
		),
	),
);

Ссылки

roundcube/ldap.txt · Последние изменения: 2020-08-01 18:28 — GreyWolf