OpenLDAP活用術

 このドキュメントはドラフト版です。予告無く内容が修正されたり、内容が間違っていたりすることがあります。
 また、間違い箇所を見つけたら、ご連絡いただけると幸いです。

 

Courier-IMAP with LDAP

 Courier-IMAPはMailDir形式に対応しているPOP・IMAPサーバです。こちらもPostfixと同じようにLDAP対応に仕上げてしまいましょう。(ユーザーIDはSMTP認証と同様にUPN形式となります)

 LDAPサーバへの問い合わせ時も暗号化によるセキュアな通信を行いたいのですが、このバージョンのCourier-imap(このドキュメント作成時でimapは4.0.3-0vl2、authlibは0.56-0vl4)では、ldapクライアントを使ったTLSでしか動作しないようです。(設定が悪いのかな…)
 ちょっとスマートではありませんが、他にやりようがなさそうなのでこの方法で行きます。
 ちなみに、試していませんが、Courier-imap4.1ではこの辺が改善されているようです。 :)

 

 ここでの記述内容は、証明書の設定等、先にSMTPサーバを構築していることが前提となっていますので注意してください。

  • システム情報
    • 認証局サーバ
      ホスト名root.aineas.net
    • LDAPサーバ
      ホスト名ldapserver.aineas.net
      ポート番号389(STARTTLS対応LDAP), 636(LDAPS)
    • SMTPサーバ
      ホスト名(本体名)mailserver.aineas.net
      バーチャルドメイン名mail2.aineas.net
      ポート番号25(STARTTLS対応SMTP), 465(SMTPS)
    • IMAPサーバ
      ホスト名mailserver.aineas.net
      ポート番号110(STARTTLS対応POP3), 143(STARTTLS対応IMAP), 995(POP3S), 993(IMAPS)

Courier-IMAPのインストール

 まずはインストールです。VineにはCourier-imapのパッケージ郡が用意されていますので、これを使用します。(もしかすると一緒に依存関係にある他のパッケージも一緒にインストールされるかもしれません)
 また、LDAPサーバへのTLS通信の為に、LDAPクライアントが必要ですのでインストールします。(既にインストールされているならば、必要ありません)

# apt-get install courier-imap
# apt-get courier-authlib
# apt-get courier-authlib-ldap
# apt-get openldap

ldap.confの設定

 Courier-imapがTLSを使ってLDAPサーバと通信を行う際、証明書が必要になってきます。  しかし、このバージョンのCourier-authlibの場合、/etc/openldap/ldap.confに記述されるものを利用する形のようです。
 しかも、なぜかCAの証明書のみを要求します。(LDAPサーバの証明書はなくても接続できてます。)
 このあたりの挙動がどうにも解せないのですが…。誰かご存知でしたら教えてください。

 まず、このサーバにCAの証明書をコピーする必要があります。認証局サーバのcacert.pemを以下のファイルとして格納してください。

  • /usr/share/ssl/private/cacert.pem

 次いで、ldap.confの編集です。

Edit

HOST                    ldap.aineas.net
PORT                    389
BASE                    ou=users,dc=aineas,dc=net
TLS_CACERT              /usr/share/ssl/certs/cacert.pem
TLS_CIPHER_SUITE        HIGH
項目説明
HOSTLDAPサーバのホスト名です。証明書に登録してあるコモンネームが必要です。
PORTSTARTTLSを使用しますので、389でOKです。
TLS_CACERT認証局の証明書を指定します。
TLS_CIPHER_SUITEどの暗号化方式を受け付けるのか、優先順位を指定します。


 終わったら、次は/etc/authlib以下のファイルの修正に入ります。

 

認証デーモンの設定

 Courier-imapの認証デーモンは、courier-authlibという認証ライブラリとして別パッケージにまとめられています。
 先ほどインストールしたパッケージ、courier-authlib*がそれに当たります。

 /etc/authlibディレクトリ以下に設定ファイル群がありますので、これを編集していきます。

authdaemonrc

 まず、authdaemonrc.distファイルをauthdaemonrcにとしてコピーします。(が、authdaemonrcはRPMインストール時に既に作成されているかもしれません)

Exec

# cp authdaemonrc.dist authdaemonrc


 authdaemonrcファイルを編集します。下の内容は編集が必要な項目だけを抜粋しています。
Edit

authmodulelist="authldap"
authmodulelistorig="authldap"
 

authldaprc

 courier-authlib-ldapパッケージをインストールしているので、/etc/authlibディレクトリにはauthldaprc.distファイルもあるはずです。
 このファイルをauthldaprcとしてコピーします。
Exec

# cp authldaprc.dist authldaprc


 authldaprcファイルを次のように編集します。ここで記述のない設定についてはそのままでOKです。(サーバ名やベースDN名などは環境に合わせてください。ここではあくまでも私の環境での設定となります。)

Edit

LDAP_SERVER             ldapserver.aineas.net
LDAP_PORT               389
LDAP_PROTOCOL_VERSION   3
LDAP_BASEDN             ou=users,dc=aineas,dc=net
#LDAP_BINDDN            cn=administrator, o=example, c=com
#LDAP_BINDPW            toto
LDAP_TIMEOUT            5
LDAP_AUTHBIND           1
LDAP_MAIL               mail
LDAP_FILTER             (imapEnable=TRUE)
LDAP_GLOB_UID           10001
LDAP_GLOB_GID           10001
LDAP_HOMEDIR            homeDirectory
LDAP_MAILDIR            mailDir
#LDAP_DEFAULTDELIVERY   defaultDelivery
#LDAP_FULLNAME           cn
#LDAP_CLEARPW           clearPassword
LDAP_CRYPTPW            userPassword
LDAP_TLS                1

 いくつかのパラメータの説明をします。

LDAP_SERVERLDAPサーバが動いているホスト。
LDAP_PORTLDAPのポート番号。デフォルトは389。
LDAP_PROTOCOL_VERSIONLDAPのバージョンは3です。
LDAP_BASEDNベースDN。検索を開始するDN。
LDAP_TIMEOUT検索時のタイムアウト時間。
LDAP_AUTHBIND認証付きバインドをするかどうかの指定。この値が1のとき、各ユーザのuserPasswordが使用されます。
LDAP_MAILエントリ検索時に返される属性。
LDAP_FILTER検索フィルタです。メール受信の有効/無効機能を付けます。
LDAP_GLOB_UIDMaildirのデータの読み書き権限を持つユーザーIDを指定します。ここではmanagerのUIDです。
LDAP_GLOB_GIDMaildirのデータの読み書き権限を持つグループIDを指定します。ここではmanagerのGIDです。
LDAP_HOMEDIRホームディレクトリの値を返す属性を指定します。homeDirectoryで問題ありません。
LDAP_MAILDIRユーザーのMaildirの値を返す属性を指定します。mailDirでOKです。
LDAP_CRYPTPWパスワードを返す属性を指定します。userPasswordを指定してください。
LDAP_TLSSTARTTLSを使用してLDAPサーバと通信します。
 

Courier-imap

Courier-imapのSSL対応

 今回は、POP3SとIMAPSもサービスしますので、この為の証明書を作成しなければいけません。
 IMAPサーバはSMTPサーバと同一マシンで運用していますので、証明書もOpenLDAP活用術 - SMTPサーバ構築(後編)で作成したものをそのまま流用します。

 Courier-imapの証明書は、秘密鍵と公開鍵が同一ファイルに記述されたタイプとなります。  これは単純に鍵をまとめてしまえばOKです。

Exec

# cp -p /usr/share/ssl/private/mail.key /usr/share/courier-imap/mail.pem
# cat /usr/share/ssl/certs/mail.crt >> /usr/share/courier-imap/mail.pem

 このファイルには秘密鍵が含まれますので、一般ユーザから読み取りできないようパーミッションを適切に設定してください。

 

 その後、/etc/courier-imap 以下にある、pop3d-sslとimapd-sslファイルを修正します。
 両方のファイルとも、TLS_CERTFILE の指定ファイルを先ほどのmail.pemに変更してください。

Edit

TLS_CERTFILE=/usr/share/courier-imap/mail.pem

 これで完了です。

起動と確認

 Courier-imapを起動します。が、認証デーモンとして、一緒にCourier-authlibが起動していなければいけません。

Exec

# /etc/init.d/courier-authlib start
# /etc/init.d/courier-imap start

 起動したら、メールクライアントで接続テストを行います。
 気を付けることは、一度もメールを受信していないユーザの場合、mailDirが作成されていない可能性があるということです。
 一旦、送信テストを行って、ディレクトリを作成しておくのが吉でしょう。

 接続テストにおける情報は次の通りとなります。

POP3/IMAPサーバ名mailserver.aineas.net
ポート番号110(STARTTLS対応POP3), 143(STARTTLS対応IMAP), 995(POP3S), 993(IMAPS)
ユーザ名mimmim@mailserver.aineas.net
パスワードsecret

 とりあえず、こんなところです。

 

 

コメント:

コメントスパム対策中です。投稿の際はこのキャラクターが登場する映画シリーズを一緒に答えてください。
この質問は2009/01/07 11:06に締め切られます。 
 

Return to OpenLDAP活用術


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-20 (日) 19:04:47 (597d)