既存のLDAPサーバーを使用するための Perditionプロキシソフトウェアの

既存のLDAPサーバーを使用するための
Perditionプロキシソフトウェアの構成
Richard L. Holbert
2003 年5 月15 日
はじめに
Perdition プロキシサーバーソフトウェアは、高可用性電子メールシステムの一部として Simon Horman が開発したもの
です。ISP が、エンドユーザーのメールボックスを複数のサーバーにシームレスに分散することができます。エンドユー
ザーは、このプロキシサーバーを通じて、POP や IMAP によって自分の電子メールを取り出します。gdbm、NIS、正規
表現、リレーショナルデータベース(MySQL、PostgreSQL)
、LDAPなどの多種多様な方法で、ユーザーのリダイレクト
情報を格納することができます。
Perdition のメインWebサイトはhttp://www.vergenet.net/linux/perdition/です。
筆者の電子メールアドレスはhorms@verge.net.au です。
また、Perdition を使用するためには、VAnessa(VA Network Enhanced Scalable Server Architecture)ライブラリもイ
ンストールする必要があります。VAnessaのWebサイトはhttp://www.vergenet。net/linux/vanessa/にあります。私は、
両方のツールセットを ftp.vergenet.net からダウンロードし、Redhat Package Manager(RPM)を使用して Linux ワーク
ステーションにインストールしました。業務用の環境では、一連の専用サーバーに Perdition と VAnessa をインストール
しておかなければなりません。
Perdition には、空の OpenLDAP サーバーにデフォルトスキーマの perditiondb̲ldap̲makedb を格納するためのツールが
付属しています。ただし、私の場合は、格納された情報を保持するためのインフラストラクチャとともに既にいくつか
のiPlanet LDAP サーバーが入っていたので、既存サーバーのスキーマを使用できるようにPerdition を調整することにし
ました。
LDAPのURL
Perdition は、専用に構成されたURLによってLDAPから情報を取り出します。
1
LDAP の URL は、RFC 2255(http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2255.html)
、 お よ び iPlanet Directory Server
Administrator's Guide(付録 C)
(http://docs.iplanet.com/docs/manuals/directory/51/html/ag/url.htm#1915312)に記載さ
れています。
LDAP の URLは次の形式になっています。
ldap[s]://hostname[:port]/search_base?attributes?scope?filter[?extension[,extension]]
平文接続は ldap://プロトコルによって行い、暗号化(SSL)接続はldaps://プロトコルによって行います。
LDAP の URLの構成要素
構成要素
定義
hostname
サーバー名または数値IPアドレス。例えば、ldap.mydomain.eduや10.10.220.90など
port
LDAPサービスのポート番号。例えば389、またはセキュア(ldaps)プロトコルを使用する
場合の636。空白にすると、ldapの場合はデフォルトで389、ldapsの場合はデフォルトで
636になる
search̲base
Perditionに検索の開始場所を伝えるエントリの識別名(DN)
attributes
返されるLDAPフィールドの名前。空白にすると、すべての可視属性が返される。標準POP3
およびIMAP4ポートを使用する場合、port属性はオプション
scope
base、one、subのいずれかから成る。テスト済みのすべてのスキーマに関する限り、
Perditionはoneやsubでは正常に機能するようだが、baseでは機能しない
filter
検索範囲内で使用する基準。例えば(uid=%25s)。%25sの部分は、ユーザーの電子メール
クライアントが指定するuseridに置き換わる
extension
LDAP拡張。現在サポートされているのは、BINDNAMEおよびX-BINDPW拡張のみ(LDAP
データの要求前に名前とパスワードにバインドする場合)。複数の拡張をコンマで区切ること
もできる。必須の拡張には接頭辞として!を付ける。cn=Managerをパスワードsecretにバイ
ンドする場合は、!BINDNAME=cn=Manager,!X-BINDPW=secretを使用する
構成
推奨する構成方法は、/etc/perdition/perdition.conf ファイルを変更することです。LDAP を使用するように Perdition を
構成するには、次の行を追加します。
M /usr/lib/libperditiondb_ldap.so
mldap://hostname.mydomain.com:port/ou=mailbox,dc=mydomain.com,dc=com?username,mailhost,port?one?(uid=%25s)
各自のサーバーの名前、ldapポート、search̲base などに置き換えてください。
上記の -M と -m の値をプロキシのコマンドラインに追加して、perdition の起動スクリプトを修正する方法もあります。
2
簡易テスト
Netscape、Konqueror、Mozilla などの Web ブラウザを、GQ などの GUI LDAP ツールと併用すると、LDAP クエリを導
出してテストできます。
この仮想iplanet-ldapサーバーでは、iPlanet のメッセージングサーバースキーマを使用します。
次に示すのは、iplanet-ldapのツリー構造の画面です。
ただし、directoryserver4 と directoryserver5 では修正した eduPerson スキーマを使用します。その結果、検索ベースが
異なります。
次に示すのは、directoryserver5のツリー構造の画面です。
3
directoryserver5のアクセス制御を修正して、匿名バインドからmailhost属性が見えるようにする必要があります。
LDAP クエリの例とその結果をいくつか示します。
ldap://iplanet-ldap.mydomain.edu:389/ou=people,o=mydomain.edu,o=internet?uid,mailhost?one?(uid=smith.13)
dn: uid=smith.13,ou=People、o=mydomain.edu、o=internet
uid: smith.13
mailhost: mail2.service.mydomain.edu
ldap://directoryserver5.service.mydomain.edu:20389/ou=people,dc=osu,dc=edu?uid,mailhost,port?one?(uid=jones.6)
dn: mydomainEduID=397427、ou=People、dc=mydomain、dc=edu
uid: jones.6
mailhost: mail1.service.mydomain.edu
検索ベース dn の順序が、ツリーの最下部から始まって最上部に向かうようになっている点に注意してください。また、
この例では directoryserver5で非標準ポート20389 をLDAPに使用している点にも注意が必要です。
拡張
LDAP の基本 URLを 2通りの方法で拡張できます。
4
LDAP サーバーで標準ポートを使用している場合は、LDAP の URL で複数のサーバーを使用できます。例えば次のよう
にします。
ldap://ldap1 ldap2 ldap3/ou=people,o=mydomain.edu,o=internet?uid,mailhost,port?one?(uid=smith.13)
これまでの例では、必ず匿名バインドを使用して LDAP サーバーに接続していました。bindname および x-bindpw 属性
を次のように使用すると、LDAPのURLを拡張できます。
ldap://ldap1:389/ou=people,o=mydomain.edu,o=internet?uid,mailhost,port?one?(uid=smith.13)?!
bindname=cn=admin,x-bindpw=secret
または
ldaps://secure-ldap:636/ou=people,o=mydomain.edu,o=internet?uid,mailhost?one?(uid=smith.13)?!
bindname=cn=super%20admin,x-bindpw=bigsecret
テスト
elnet、および構成を変更した電子メールクライアントを使用していくつかのテストを行いました。localhost で動作して
いる Perdition プロキシで電子メールクライアントをポイントすると、既存のどのメールサーバーからでもメールを取り
出せました。LDAP で mailhost 属性の値を変更すると、取り出した要求をプロキシが適切なメールサーバーにリダイレ
クトしました。
5