OpenLDAP で共有アドレス帳

生の OpenLDAP を使って、共有アドレス帳を作る方法。しかし、いちいちテキストファイルでエントリを作るのはつらい。

Zimbra を使う方法はこちら; Zimbra で LDAP アドレス帳を共有

rootエントリ

OpenLDAP のインストール、設定方法はこちら; OpenLDAP の設定

最初に, olcSuffix と完全に一致するオブジェクトを追加する。これがないと, 子エントリが追加できない。

なお, olcSuffix より短い部分しかないエントリ (dn: dc=localdomain) は, 追加できない。エラーになる。

次の例は, olcSuffix が空の前提で、最上位からエントリを作っている。orange.fruits というホスト名の仮定で, ou=people, cn=groups も作っておく。

root.ldif::

dn: dc=fruits
# suffix に対しては STRUCTURAL なオブジェクト
# 'organization' is a STRUCTURAL
objectClass: dcObject
objectClass: organization
dc: fruits
o: sample org

dn: dc=orange,dc=fruits
# suffix に対しては STRUCTURAL なオブジェクト
# 'organization' is a STRUCTURAL
objectClass: dcObject
objectClass: organization
dc: orange
o: sample org

dn: cn=groups,dc=orange,dc=fruits
# organizationalRole => core.schema
# MUST cn
objectClass: organizationalRole
cn: groups
description: dynamic groups base

dn: ou=people,dc=orange,dc=fruits
objectClass: organizationalRole
ou: people
cn: people

ldapaddコマンドで追加する。今度は -D "cn=admin,dc=pineapple,dc=localdomain".

$ ldapadd -x -W -D "cn=admin,dc=pineapple,dc=localdomain" -f root.ldif 
Enter LDAP Password: 
adding new entry "dc=pineapple,dc=localdomain"

アドレス帳エントリ

ようやく, アドレス帳のエントリを追加してみる。

LDIFファイルを作る. "属性名::" と、コロンが2つある行は、UTF-8テキストをBASE 64エンコードしたもの。

注意: 以下のdnはあまりよくない。別ページで解説する。

dn: mail=hhorikawa@nslabs.jp,dc=pineapple,dc=localdomain
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
givenName: Hisashi
sn: HORIKAWA
cn: Hisashi HORIKAWA
mail: hhorikawa@nslabs.jp
o:: 5Za25qWt5pys6YOo

ldapadd コマンドで追加する。

$ ldapadd -x -W -D "cn=admin,dc=pineapple,dc=localdomain" -f mailtest.ldif 
Enter LDAP Password: 
adding new entry "mail=hhorikawa@nslabs.jp,dc=pineapple,dc=localdomain"

WindowsのメーラでLDAPに対応しているものから, アドレス帳を見てみる. 表示できた。