Dovecot で IMAP/POP3 の LDAP認証

最終更新日:2006年09月13日

はじめに

概要

Dovecot で IMAP/POP3 の LDAP認証を行う環境を作ってみた。

Dovecot SASL を使った SMTP Auth 環境の構築方法は、『Postfix で SMTP Auth(Dovecot SASL編)』参照。

構築条件

構築した環境

名称 バージョン 備考
Solaris x86 10
Dovecot 1.0 rc7 2006.09.11時点での最新版。
Dovecot のインストールや設定の詳細は、『Dovecot で IMAP サーバ構築』参照。
OpenLDAP 2.3.27 今回は、CSWパッケージを使用した。
CSWパッケージについては、『Solarisへのフリーソフトのインストール方法』参照。
メールの保存形式 --- やっぱ Maildir でしょう。

インストール

環境変数設定

OpenLDAP はCSWパッケージからインストールしたので、/opt/csw の下に入っている。
コンパイルに必要な環境変数を設定しておく。
LDFLAGS = -L/opt/csw/lib -R/opt/csw/lib
CPPFLAGS = -I/opt/csw/include

コンパイル & インストール

$ ./configure --with-ldap
$ make
# maek install

設定

LDAP認証に必要な部分のみを記述する。
基本的な設定は『Dovecot で IMAP サーバ構築』参照。

dovecot.conf 編集

/usr/local/etc/dovecot.conf を編集して認証部分を以下のように記述する(関連部分のみの抜粋)。
auth default {
  mechanisms = plain
  
  passdb pam {          ← ローカル認証に pam を使用
  }
  passdb ldap {         ← ローカル認証に失敗しららLDAP認証
    args = /usr/local/etc/dovecot-ldap.conf
  }
  
  userdb passwd {       ← ローカル認証のユーザ情報は passwd ファイルから取得
  }
  userdb static {       ← LDAP認証時のユーザ情報(本環境では static に設定した)
    args = uid=5000 gid=5000 home=/var/mail/vhosts/%d/%n        ← ※1
  }
  
  user = root
}
※1
LDAP認証のユーザは、バーチャルメールボックスを使用する。
バーチャルメールボックスへのアクセスは、uid=5000, gid=5000 で行う。
認証で使用したユーザ名(メールアドレス)が user1@example.com の時、%n=user1, %d=example.com となる。

dovecot-ldap.conf 作成

Dovecot ソースの下の doc/dovecot-ldap.conf を /usr/local/etc/ にコピーして編集する(関連部分のみの抜粋)。
hosts = ldap.example.com
auth_bind = yes
base = o=Example Limited, c=jp
pass_filter = (mail=%u)

キャッシュの設定(お好みで)

キャッシュしないと毎回LDAPサーバに問い合わせに行く(pamで解決したユーザは除く)ので、それを避けるにはキャッシュを有効にする。

dovecot.conf
auth_cache_size = 10      ← キャッシュサイズの最大値[KB](デフォルトは0で無効)
#auth_cache_ttl = 3600    ← キャッシュデータの生存時間[sec](デフォルトは1時間)
dovecot-ldap.conf
default_pass_scheme = PLAIN    ← 本環境では、パスワードを plaintext で扱ったので設定

動作確認

ログの出力設定

認証がうまく行かない場合は、dovecot.conf に以下を設定してログを確認してみる。
info_log_path = /tmp/dovecot-log
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

Postfix でのバーチャルメールボックス設定例

Postfix 2.3.3(2006.09.11時点での最新版)でのバーチャルメールボックスの設定例を簡単に説明しておく。

main.cf の設定

/etc/postfix/main.cf のバーチャルメールボックスに関連した設定の抜粋
virtual_mailbox_domains = example.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = dbm:/etc/postfix/vmailbox
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
※ virtual_uid_maps, virtual_gid_maps の値は、dovecot.conf の "userdb static" で設定する uid, gid と同じ値。

vmailbox の設定

/etc/postfix/vmailbox の設定例
user1@example.com 宛のメールは、Maildir形式で /var/mail/vhosts/example.com/user1/Maildir/ に入れる。
user1@example.com	example.com/user1/Maildir/

vmailbox の検索テーブル作成

vmailbox を変更したら、postmap コマンドで検索テーブルを作成する必要がある。
# postmap /etc/postfix/vmailbox