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

Данный сервис можно организовать посредством поднятия дополнительного сервера с демоном OpenLDAP
Установку Ubuntu server, настройку его сетевых интерфейсов и прочей лабуды опускаю (их можно посмотреть в разделе "Установка")
Поехали:
1. Ставим OpenLDAP сервер slapd и ldap-utils (пакет утилит для управления LDAP через консоль).

$sudo aptitude install slapd ldap-utils

2. Подключаем схемы:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

3. Генерируем пароль для админа:

$sudo slappasswd
{SSHA}Afaw3o8asdAWEfksj

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

$sudo nano /etc/ldap/schema/backend.my-company.local.ldif
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
Продолжение ниже ⇓

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=my-company,dc=local
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=my-company,dc=local
olcRootPW: {SSHA}Afaw3o8asdAWEfksj ⇐ это полученный ранее хэш
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=my-company,dc=local" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=my-company,dc=local" write by * read
# Create top-level object in domain
dn: dc=my-company,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: my-company
#dc: Example
description: LDAP my-company description
# Admin user.
dn: cn=admin,dc=my-company,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: {SSHA}Afaw3o8asdAWEfksj ⇐ сюда можно(нужно) вписать ещё один хэш
Продолжение ниже ⇓

dn: ou=addressbook,dc=my-company,dc=local
objectClass: organizationalUnit
ou: addressbook
dn: ou=groups,dc=my-company,dc=local
objectClass: organizationalUnit
ou: groups

5. Импортируем полученный корень в базу данных

$sudo ldapadd -x -D cn=admin,dc=my-company,dc=local -W -f /etc/ldap/schema/backend.my-company.local.ldif

6. Перезапускаем демона

$sudo /etc/init.d/slapd restart

7. Ставим себе программу управления (я пробовал "Luma" и оснастку для Yast "Обозреватель LDAP"(для windows есть замечательная программа "LDAP Admin"), на всякий случай, вдруг захочется взглянуть на содержимое каталога), если ставить управление на сервер, то можно сделать примерно так
Пользователь для подключения будет выглядеть так ⇒ cn=admin,dc=my-company,dc=local
Пароль вы задавали(генерировали его хэш) с помощью команды slappasswd

$sudo aptitude install xserver-xorg-core gdm gnome-core gnome-themes-ubuntu language-pack-gnome-ru-base gnome-utils gnome-system-tools update-manager update-notifier luma

8. Заносим данные для подключения Настройки сервера ⇒ OpenLDAP
Взаимодействие с OpenLDAP: Есть/Нет
DN сервера: ou=addressbook,dc=my-company,dc=local
Пользователь: cn=admin,dc=my-company,dc=local
Пароль: 123456
Адрес сервера: 172.30.1.83
Порт сервера: 389
9. Массовый экспорт существующих пользователей справочника можно произвести посредством кнопки "Экспорт в OpenLDAP", на главной странице админки.
10. Как подключить клиентов:
========
Outlook Express использует LDAPv2.
Сервис ⇒ Учётные записи ⇒ Добавить ⇒ Служба каталогов ⇒ Сервер каталогов (LDAP).
Затем нужно изменить в свойствах созданной службы каталогов, во вкладке Дополнительно Основу поиска например (ou=addressbook,dc=my-company,dc=local).
Поставить галочку "Простой фильтр поиска"
Далее сколько нужно жмём "ОК"
Перезагружаем программу
Открываем "Адресную книгу"(Ctrl + Shift + B) ⇒ "Сервис" ⇒ "Параметры"
Отображать первым в списке адресов ⇒ Контакты
При отправке сообщений сверять имена получателей... ⇒ ASE поднимаем в самый верх ⇑
Далее сколько нужно жмём "ОК"
========
Outlook 2003
Сервис ⇒ Учетные записи эл. Почты ⇒ Просмотреть или изменить имеющиеся каталоги ⇒ Добавить
Имя сервера ⇒ ip-адрес
Дополнительные настройки
Имя, отображаемое в адресной книге ⇒ то что увидят при выборе места поиска пользователи
База поиска, Другая ⇒ ou=addressbook,dc=my-company,dc=local
Далее сколько нужно жмём "ОК"
Перезагружаем программу
Открываем "Адресную книгу"(Ctrl + Shift + B) ⇒ "Сервис" ⇒ "Параметры"
Отображать первым в списке адресов ⇒ Контакты
При отправке сообщений сверять имена получателей... ⇒ ASE поднимаем в самый верх ⇑
Далее сколько нужно жмём "ОК"

Поиск работает только посредством кнопки Найти (через форму расширенного поиска) или посредством набора части фамилии адресата и последующим нажатием кнопки "Проверить имена"

Outlook 2007
Сервис ⇒ Настройка учётных записей ⇒ Адресные книги ⇒ Создать ⇒ Служба каталогов интернета LDAP
Имя сервера ⇒ ip-адрес
Дополнительные настройки
Имя, отображаемое в адресной книге ⇒ то что увидят при выборе места поиска пользователи
База поиска, Другая ⇒ ou=addressbook,dc=my-company,dc=local
Далее сколько нужно жмём "ОК"
Перезагружаем программу
Открываем "Адресную книгу"(Ctrl + Shift + B) ⇒ "Сервис" ⇒ "Параметры"
Отображать первым в списке адресов ⇒ Контакты
При отправке сообщений сверять имена получателей... ⇒ ASE поднимаем в самый верх ⇑
Далее сколько нужно жмём "ОК"
========
Thunderbird
Адресная книга ⇒ Файл ⇒ Создать ⇒ Каталог LDAP
Название ⇒ то как будет отображаться каталог в списке
Имя сервера ⇒ ip-адрес
Корневой элемент ⇒ ou=addressbook,dc=my-company,dc=local
Порт ⇒ 389
Не возвращать более чем 100 результатов
Область поиска ⇒ Поддерево
Фильтр поиска (если нужно) ⇒ (objectclass=*)
Способ аутентификации ⇒ Простой
========
KMail
Сервис ⇒ Адресная книга ⇒ Настройки ⇒ НастроитьKAddressBook ⇒ Настройка сервера LDAP ⇒ Добавить хост
Host: ⇒ вносим ip-адрес
DN: ⇒ dc=my-company,dc=local (или просто нажимаем кнопку "Query Server")
Port: ⇒ 389
LDAP version: ⇒ 3
Size limit: ⇒ Default
Размер страницы ⇒ No paging
Security ⇒ No
Authentication ⇒ Anonymous
BAT
Инструменты ⇒ Адресная книга ⇒ Файл ⇒ Новая адресная книга
Название ⇒ то как будет отображаться каталог в списке
Хранится в файле ⇒ путь до файла
Закладка LDAP ⇒ Ставим галочку "Эта книга связана с LDAP-сервером"
Адрес ⇒ ip-адрес
Порт ⇒ 389
База поиска ⇒ ou=addressbook,dc=my-company,dc=local
Выдать максимум 50 совпадений
Тайм-аут ⇒ 30 секунд
Ставим галочку ⇒ Отправлять 8-битные данные в формате UNICODE (UTF-8)
ОК ⇒ Сохранить
========
HP Digital sender 9250, HP Color LaserJet CM4730 MFP
Разрешить устройству прямой доступ к адресной книге LDAP
Способ привязки к серверу LDAP: ⇒ Анонимно
Сервер LDAP: ⇒ ip-адрес
Порт: ⇒ 389
Начало поиска: ⇒ dc=my-company,dc=local
Способ выборки информации пользователя устройства: ⇒ Нестандартный
Сопоставить указанное имя с атрибутом LDAP ⇒ cn
Выборка данных получателя адреса эл. почты с пом. атрибута ⇒ mail
========