среда, 17 февраля 2010 г.

FreeBSD: Общая адресная книга на openLdap

Заранее оговорюсь что это полноценно работает только для Thunderbird 2 (для 3-го нет пока этого дополнений) с дополнением ContacSide Bar - авто подбор адресов по первым буквами email, вывод всего списка, централизованный ввод адресов.

В outlook работает только поиск, больше ничего нет потому что outlook умеет работать только с технологией VLV (Virtual List View) которая реализована только в MS Server Exchange - если вы фанат MS и хотите централизованный список адресов смело покупайте за несколько тысяч евро Exchange :")))

Для работы должны быть установлены Aapche22, php5, php5-extensions
с опцией OpenLDAP support эта опция за собой потянет openldap24-client (тоже нужен)

далее ставим
//> cd /usr/ports/net/openldap23-server/
/usr/ports/net/openldap23-server/> make config

выбираем опции

[X] TCP_WRAPPERS With tcp wrapper support
[X] BDB With BerkeleyDB support
[X] DYNAMIC_BACKENDS Build dynamic backends
[X] SLURPD Build slurpd replication daemon

/usr/ports/net/openldap23-server/> make clean install
Генерируем пароль администратора OpenLDAP командой slappasswd, хеш которого мы ниже добавим в конфиг OpenLDAP

//> slappasswd -s vash_parol
{SSHA}HaXoFVeJ5HOmvVbFnSB00lCYjIw8N0y+

Правим конфиг OpenLDAP
//>vi /usr/local/etc/openldap/slapd.conf

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

# Load dynamic backend modules:
modulepath /usr/local/libexec/openldap

moduleload back_bdb
# moduleload back_ldap
# moduleload back_ldbm
# moduleload back_passwd
# moduleload back_shell

# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
by self write
by users read
by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!
#######################################################################
# BDB database definitions
#######################################################################

database bdb
suffix "dc=mail,dc=local"
rootdn "cn=root,dc=mail,dc=local"

# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}HaXoFVeJ5HOmvVbFnSB00lCYjIw8N0y+

# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/db/openldap-data

loglevel 256

# Indices to maintain
index objectClass eq
index cn eq

Добавляем в автозагрузку /etc/rc,conf

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"'
slapd_sockets="/var/run/openldap/ldapi"

и перезагружаемся
//> reboot

Проверяем запустился ли OpenLDAP

//> ps axw | grep openldap
1671 ?? Is 0:00,44 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0 -u ldap -g ldap

5874 p1 DL+ 0:00,00 grep openldap


//> netstat -nap tcp | grep 389
tcp4 0 0 *.389 *.* LISTEN


Создаем КОРЕНЬ

//> vi /var/db/openldap-data/base.ldif

dn: dc=mail, dc=local
objectClass: dcObject
objectClass: organization
objectClass: top
dc: mail
o: mail

//> cd /var/db/openldap-data/
//> ldapadd -x -D "cn=root,dc=mail,dc=local" \
-h 0.0.0.0 -W -f base.ldif
Enter LDAP Password:
тут тот пароль что вводился в начале (символами буквами и пр)


Установка phpLdapadmin
//> cd /usr/ports/net/phpldapadmin
/usr/ports/net/phpldapadmin/> make install clean

Но скорей всего с версией из портов openLDAP не будет корректно работать
надо скачать свежий разархивировать и кинуть в ту же папку что и этот
http://sourceforge.net/projects/phpldapadmin/files/

Добавляем
//> vi /usr/local/etc/apache/httpd.conf

Alias /phpldapadmin "/usr/local/www/phpldapadmin/htdocs/"

Options none
AllowOverride none
Order Deny,Allow
Deny from all
Allow from 10.10.30.0/24 .domain.local


10.10.30.0/24 - айпи вашей сети
http://ip_server/phpldapadmin - ссылка по который вызываем phpLdapadmin

Слегка правим конфиг
//> vi /usr/local/www/phpldapadmin/config/config.php

$ldapservers->SetValue($i,'server','host','ip_server');

Заходим в папку скриптов LDAP и копируем \templates\creation в \templates\modification без этого некоторые шаблоны нельзя будет редактировать


Настраиваем адрессную книгу

заходим http://ip_server/phpldapadmin
имя: cn=root,dc=mail,dc=local
пароль: тут тот пароль что вводился в начале (символами буквами и пр)

dc=mail,dc=local > Создать потомка > Organisation Unit
назовем addressbook

dc=mail,dc=local > ou=addressbook > Создать потомка > Address Book Entery
и здесь уже забиваем личные данные

В почтовых клиентах выбираем
Имя пользователя: cn=root,dc=mail,dc=local
Имя сервера: ip_servera
Корневой каталог: ou=addressbook,dc=mail,dc=local (в Outlook это каталог поиска)
Порт: 389



В настройках ContacSide Bar во вкладке ПОИСК надо поставить LDAP надо поставить галочку и заменить * на @



Экспорт в phpldapadmin не работает, точнее не работает тот единственный который нужен в VCARD - когад надо сделать экспорт всех выдается только один из контактов, Outlook отображает готовый файл в неправильнйо кодировки хотя Notepad все конктретно видит!

В любом случае в экспорте есть фильтр!

Если нужны только адреса с определенного домена надо набрать в "Фильтр поиска"
(mail=*@mail.ru)

Комментариев нет: