Mail管理をVirtual Domainで実施しようとすると、どうしてもLDAPが欲しい局面があらわれる。なので、OpenLDAPを入れてみる。
というわけで、openldapをインストールする。
PKG_OPTIONS.openldap-client= slp inet6 # kerberos sasl PKG_OPTIONS.openldap-server= bdb slp inet6 dso # sasl smbk5pwd PKG_OPTIONS.odbc= iodbc unixodbc
start_precmd="set_limits"
set_limits()
{
ulimit -s 4096
}
slapd=YES
以前は、pkgsrc下のOpenLDAPはUID=rootで動作していた。しかし現在では、その権限のないアカウント(slapd:ldap)で動作している。 従って、各種のpermissionを正しく設定しないと、はまることになるので注意。
特にLDAP管理ツール(slapadd, slapindex等)をroot権限で動作させる場合に、注意が必要。
# /usr/sbin/chown -R slapd:ldap /var/openldap/openldap-data/* # /usr/sbin/chown :ldap /usr/pkg/etc/openldap/slapd.conf # /bin/chmod 640 /usr/pkg/etc/openldap/slapd.conf
まず、Databaseの雛形が/usr/pkg/share/examples/openldap/DB_CONFIGなので、これを/var/openldap/openldap-data/にコピーする。
コピーしたら、/usr/sbin/chown -R slapd:ldap /var/openldap/openldap-data/*を実行しておこう。
このファイルに、OpenLDAPのDB関係のパラメータを設定する事ができるので、性能問題を感じたらここに設定を入れる。
OpenLDAP関連の設定は
で行う。
#######################################################################
# OpenLDAP slapd Configuration File.
# See slapd.conf(5) for details on configuration options.
# Database Schema
include /usr/pkg/etc/openldap/schema/core.schema
include /usr/pkg/etc/openldap/schema/cosine.schema
include /usr/pkg/etc/openldap/schema/inetorgperson.schema
include /usr/pkg/etc/openldap/schema/nis.schema
include /usr/pkg/etc/openldap/schema/mail.schema
# System File
pidfile /var/openldap/run/slapd.pid
argsfile /var/openldap/run/slapd.args
#######################################################################
# BDB database definitions
database monitor
database bdb
#######################################################################
# Root DN Definition.
suffix "o=example"
rootdn "cn=Manager,o=example"
rootpw secret
directory /var/openldap/openldap-data
#######################################################################
# Access Control List.
access to dn.subtree="ou=vmail,o=example" attrs=userPassword
by self write
by anonymous auth
by * none
access to *
by self write
by * read
# Indices to maintain
index objectClass eq
上記slapd.conf内のrootpwには、RootDNのパスワードを入力する必要がある。 このパスワードは、以下の方法で作成する。
$ /usr/pkg/sbin/slappasswd -h [CRYPT|MD5|SMD5|SSHA|SHA] -s secret
標準のHASH方式はSSHAなので、slappasswd -s secretでパスワードを作成すればOK
$ slappasswd -s 12345678
{SSHA}tTTZQEwu7eair4ISCNmxrS/U2Qn8laHO
$
この結果を貼り付ければok
ここまで問題がなければ、
# /etc/rc.d/slapd start
でslapd(OpenLDAP Server)が起動する。
なお、slapdを起動する際にlogに
bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
というメッセージがでることがあるが、これは、monitor database backend付きでCompileされているのに、database monitorを利用していない場合にでるメッセージなので、今は無視していて良い。
とにかくまず、LDAPを動かすために必要な最小限のデータは登録しなければならない。 何はともあれ、基本ディレクトリと、その管理者を登録する。
基本ディレクトリ構造は以下の通り
この構造に合わせたLDIFファイルを作成する
dn: o=example, c=net objectClass: organization o: example dn: cn=Manager, o=example, c=net objectClass: organizationalRole cn: Manager
その後、以下のコマンドを入力して、DataをLDAP Serverに投入する
$ ldapadd -x -D "cn=Manager, o=example" -W -f init.ldif Enter LDAP Password: adding new entry "o=example" adding new entry "cn=Manager, o=example"
これで最小限の設定は終了。あとはApplication毎の設定を投入するだけ。
ldapadd -x -h localhost -D "cn=Manager,o=example" -w 12345654321 -f LDIF-file
ldapsearch -x -h localhost -b '' -s base +
ldapsearch -x -h localhost -b 'dc=example.net,ou=vmail,o=example' uid=test1
slapindex -v -b o=example -f /usr/pkg/etc/openldap/slapd.conf