Linux Tips

LDAPにメールアドレス帳データを入力するには

北浦訓行
2006/7/13

 LDAPサーバへエントリを追加するにはで、LDAPサーバに最初のエントリを追加した。次にやるべきことはデータの入力である。ここでは、メールクライアントのアドレス帳で使用するためのデータを入力してみる。Outlook ExpressやBecky! Internet Mail、Mozilla Thunderbirdなどのメールクライアントは、いずれもLDAPサーバへのアクセス機能を持っている。

 OpenLDAPは、/etc/openldap/schemaディレクトリにあるスキーマファイルでエントリの属性を定義している。例えば、基本的なスキーマは、/etc/openldap/schema/core.schemaにある。メールクライアントのアドレス帳のデータは、/etc/openldap/schema/inetorgperson.schemaで定義されている。

 基本となる定義は、core.schemaのpersonというオブジェクトクラスだ。これを拡張する形でcore.schemaにorganizationalPersonが、さらにinetorgperson.schemaでinetOrgPersonが定義されている。

 必須の入力項目は、MUSTで定義されたsn(Sir Name:姓)とcn(Common Name:名)だけで、後はすべて省略可能である。

objectclass ( 2.5.6.6 NAME 'person'
        DESC 'RFC2256: a person'
        SUP top STRUCTURAL
        MUST ( sn $ cn ) ←sn=姓、cn=名
        MAY ( userPassword $ telephoneNumber $ seeAlso $ 
description ) )

objectclass ( 2.5.6.7 NAME 'organizationalPerson'
        DESC 'RFC2256: an organizational person'
        SUP person STRUCTURAL
        MAY ( title $ x121Address $ registeredAddress $ 
destinationIndicator $
                preferredDeliveryMethod $ telexNumber $ 
teletexTerminalIdentifier $
                telephoneNumber $ internationaliSDNNumber $
                facsimileTelephoneNumber $ street $ postOfficeBox $ 
postalCode $
                postalAddress $ physicalDeliveryOfficeName $ 
ou $ st $ l ) )
/etc/openldap/schema/core.schema

# inetOrgPerson
# The inetOrgPerson represents people who are associated with an
# organization in some way.  It is a structural class and is derived
# from the organizationalPerson which is defined in X.521 [X521].
objectclass     ( 2.16.840.1.113730.3.2.2
    NAME 'inetOrgPerson'
        DESC 'RFC2798: Internet Organizational Person'
    SUP organizationalPerson
    STRUCTURAL
        MAY (
                audio $ businessCategory $ carLicense $ 
departmentNumber $
                displayName $ employeeNumber $ employeeType $ 
givenName $
                homePhone $ homePostalAddress $ initials $ 
jpegPhoto $
                labeledURI $ mail $ manager $ mobile $ o $ 
pager $
                photo $ roomNumber $ secretary $ uid $ 
userCertificate $
                x500uniqueIdentifier $ preferredLanguage $
                userSMIMECertificate $ userPKCS12 )
        )
/etc/openldap/schema/inetorgperson.schema

 アドレス帳で必要となるのは、名前とメールアドレスだ。名前は、core.schemaのpersonによって姓と名を別にする必要がある。また、OpenLDAPサーバにエントリを入力する際は、LDIF形式のテキストファイルを用意しなければならない。

dn: mail=nori@example.com,dc=example,dc=com
objectclass: inetOrgPerson
displayName: Noriyuki Kitaura
sn: Kitaura
cn: Noriyuki
mail: nori@example.com
address.ldif(LDIFファイルの例)

 既存のアドレス帳をコンバートする場合は、アドレス帳→CSV→LDIFという変換作業が必要になる。Mozilla Thunderbirdの場合、直接LDIFへのエクスポートが可能だが、OpenLDAPが標準ではサポートしていないオブジェクトクラスのエントリが出力されてしまうため、.schemaファイルを変更するか、サポートされていないオブジェクトクラスのエントリを削除するなどの作業が必要になる。CSVからLDIFへの変換は、PerlやRubyなどを使用すると簡単だろう。

 LDIFファイルの準備ができたら、以下のコマンドで入力する。

# ldapadd -f address.ldif -x -D 'cn=Manager,dc=example,dc=com' -w パスワード
adding new entry "cn=Kitaura Noriyuki,mail=nori@example.com"

 以上で、データの入力は完了だ。

 メールクライアントからLDAPサーバにアクセスするには、ディレクトリサーバの設定を行う必要がある。ここでは、Thunderbirdの設定法を紹介する。

 Thunderbirdを起動したら[編集]メニューの[設定]を選択して、[Thunderbirdの設定]ダイアログボックスの[編集]アイコンをクリックする。[ディレクトリサーバ]をオンにして[ディレクトリサーバの設定]ボタンをクリックすると、[LDAPサーバ]ダイアログボックスが表示される。

 [追加]ボタンをクリックして、[LDAPサーバのプロパティ]ダイアログボックスにサーバの情報を入力する。注意が必要なのは[ベース識別名]だ。以下の画面例を参照していただきたい。

[LDAPサーバのプロパティ]ダイアログボックス

 設定が完了したらアドレス帳を開いて左のペインで登録したLDAPサーバを選択し、画面右上の検索ボックスに名前など入力して[Enter]キーを押す。すると、該当するアドレスが表示される。

アドレス帳でLDAPサーバからデータを取得

 ほかのメールクライアントでも、同じような操作と設定でLDAPサーバにアクセスできるはずだ。

Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間