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