このドキュメントはドラフト版です。予告無く内容が修正されたり、内容が間違っていたりすることがあります。
また、間違い箇所を見つけたら、ご連絡いただけると幸いです。
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 |
| ホスト名 | ldapserver.aineas.net |
| ポート番号 | 389(STARTTLS対応LDAP), 636(LDAPS) |
| ホスト名(本体名) | mailserver.aineas.net |
| バーチャルドメイン名 | mail2.aineas.net |
| ポート番号 | 25(STARTTLS対応SMTP), 465(SMTPS) |
| ホスト名 | mailserver.aineas.net |
| ポート番号 | 110(STARTTLS対応POP3), 143(STARTTLS対応IMAP), 995(POP3S), 993(IMAPS) |
まずはインストールです。VineにはCourier-imapのパッケージ郡が用意されていますので、これを使用します。(もしかすると一緒に依存関係にある他のパッケージも一緒にインストールされるかもしれません)
また、LDAPサーバへのTLS通信の為に、LDAPクライアントが必要ですのでインストールします。(既にインストールされているならば、必要ありません)
# apt-get install courier-imap # apt-get courier-authlib # apt-get courier-authlib-ldap # apt-get openldap
Courier-imapがTLSを使ってLDAPサーバと通信を行う際、証明書が必要になってきます。
しかし、このバージョンのCourier-authlibの場合、/etc/openldap/ldap.confに記述されるものを利用する形のようです。
しかも、なぜかCAの証明書のみを要求します。(LDAPサーバの証明書はなくても接続できてます。)
このあたりの挙動がどうにも解せないのですが…。誰かご存知でしたら教えてください。
まず、このサーバにCAの証明書をコピーする必要があります。認証局サーバの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
| 項目 | 説明 |
| HOST | LDAPサーバのホスト名です。証明書に登録してあるコモンネームが必要です。 |
| PORT | STARTTLSを使用しますので、389でOKです。 |
| TLS_CACERT | 認証局の証明書を指定します。 |
| TLS_CIPHER_SUITE | どの暗号化方式を受け付けるのか、優先順位を指定します。 |
終わったら、次は/etc/authlib以下のファイルの修正に入ります。
Courier-imapの認証デーモンは、courier-authlibという認証ライブラリとして別パッケージにまとめられています。
先ほどインストールしたパッケージ、courier-authlib*がそれに当たります。
/etc/authlibディレクトリ以下に設定ファイル群がありますので、これを編集していきます。
まず、authdaemonrc.distファイルをauthdaemonrcにとしてコピーします。(が、authdaemonrcはRPMインストール時に既に作成されているかもしれません)
Exec
# cp authdaemonrc.dist authdaemonrc
authdaemonrcファイルを編集します。下の内容は編集が必要な項目だけを抜粋しています。
Edit
authmodulelist="authldap" authmodulelistorig="authldap"
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_SERVER | LDAPサーバが動いているホスト。 |
| LDAP_PORT | LDAPのポート番号。デフォルトは389。 |
| LDAP_PROTOCOL_VERSION | LDAPのバージョンは3です。 |
| LDAP_BASEDN | ベースDN。検索を開始するDN。 |
| LDAP_TIMEOUT | 検索時のタイムアウト時間。 |
| LDAP_AUTHBIND | 認証付きバインドをするかどうかの指定。この値が1のとき、各ユーザのuserPasswordが使用されます。 |
| LDAP_MAIL | エントリ検索時に返される属性。 |
| LDAP_FILTER | 検索フィルタです。メール受信の有効/無効機能を付けます。 |
| LDAP_GLOB_UID | Maildirのデータの読み書き権限を持つユーザーIDを指定します。ここではmanagerのUIDです。 |
| LDAP_GLOB_GID | Maildirのデータの読み書き権限を持つグループIDを指定します。ここではmanagerのGIDです。 |
| LDAP_HOMEDIR | ホームディレクトリの値を返す属性を指定します。homeDirectoryで問題ありません。 |
| LDAP_MAILDIR | ユーザーのMaildirの値を返す属性を指定します。mailDirでOKです。 |
| LDAP_CRYPTPW | パスワードを返す属性を指定します。userPasswordを指定してください。 |
| LDAP_TLS | STARTTLSを使用してLDAPサーバと通信します。 |
今回は、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 |
とりあえず、こんなところです。
Return to OpenLDAP活用術