最初に
例のとごく、
まずは前回同様、
smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject# Postfixで管理するバーチャルドメイン
# 宛先がこれ以外のドメイン名であれば、MX検索より外部に配送する。
virtual_mailbox_domains = ldap:/etc/postfix/domains.cf
# LDAPからホームディレクトリを取得する際のベースディレクトリ
# セキュリティ上の理由から設定した方が良いが、今回は属性の値をそのまま使うため/と設定 
virtual_mailbox_base = /
# メールアドレスとメールボックスを対応させるためのLDAP設定ファイル
virtual_mailbox_maps = ldap:/etc/postfix/vmailbox.cf
# メールファイルを保存する場合の最小UID
virtual_minimum_uid = 5000
# メールファイルの所有者、グループ(5000という固定設定)
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# メール転送用
virtual_alias_maps = ldap:/etc/postfix/forward.cf
# メールサーバが所属するネットワーク
mynetworks = 127.0.0.0/8, 10.0.100.0/24
smtpd_recipient_restrictions =
  permit_mynetworks
  permit_sasl_authenticated
  reject# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 該当するドメイン名が見つかった場合は、バーチャルドメインとして扱う
query_filter = (mailAccessDomain=%s)
# なんでも良いので、適当な値を返すようにする
result_attribute = ou
# パフォーマンスを考慮し、子ツリー以下は検索しない
scope = one# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 検索フィルタ(%sがメールアドレスに置き換わる)
query_filter = (mail=%s)
# エントリが見つかった場合はmail, mailFOrwardingAddressの両方へメールを配送 
result_attribute = mail, mailForwardingAddress# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 検索フィルタ(%sがメールアドレスに置き換わる)
query_filter = (mail=%s)
# 検索後に取得する属性
result_attribute = mailMessageStore
# 属性取得後に文字列の後ろに/Maildir/という文字を付加することでメールを
# ホームディレクトリ/Maildir/以下に保存するようにする
result_filter = %s/Maildir/# プラグインの定義
auxprop_plugin: giengerldap
# LDAPサーバの場所
gl_uri: ldap://localhost
# バインドDN、パスワード、検索ベース
gl_binddn: cn=Directory Manager
gl_bindpw: dssecret
gl_basedn: dc=bluecoara,dc=net
# 検索フィルタ。メールアドレスをSMTP Auth時のユーザ名とする
gl_search: (mail=%s)
# 認証方式の定義
mech_list: LOGIN PLAIN CRAM-MD5 DIGEST-MD5# Mail, bluecoara.net
dn: ou=Mail,dc=bluecoara,dc=net
ou: Mail
description: Postfix/Dovecot
objectClass: top
objectClass: organizationalunit
objectClass: mailRecipient
mailAccessDomain: bluecoara.net
mailAccessDomain: example.co.jp
# HNAKAMITSU, Mail, bluecoara.net
dn: uid=HNAKAMITSU,ou=Mail,dc=bluecoara,dc=net
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
objectClass: mailRecipient
mail: hnakamitsu@bluecoara.net
uid: HNAKAMITSU
givenName: Hideo
sn: NAKAMITSU
cn: Hideo NAKAMITSU
mailForwardingAddress: forward@example.com
mailMessageStore: /home/mail/bluecoara.net/hnakamitsu
userPassword: hnakamitsuDovecotのインストール
Dovecotとは、
では、
- 高速で安全
- POP3/POP3S/ IMAP/ IMAPS対応 
- LDAP/SQLなどさまざまな認証サービスに対応 
- (Cyrus-saslとは異なる)独自SASLサポート 
- バーチャルドメイン・バーチャルユーザサポート 
- APOP/CRAM-MD5/ DIGEST-MD5のようなチャレンジ・ レスポンス認証に対応 
- プラグインなどを活用することで、Sieve (IMAP4時のメール振り分け) やソフトウェアQuotaに対応 
- MDA等の機能も付属
- mboxやMaildirのメールボックスをサポート
- 豊富なドキュメント
Fedora CoreやCentOSでは標準のリポジトリにも登録されているため、
# yum -y install dovecot
Dovecotの設定ファイルは/etc/
デフォルトのdovecot.
auth default {
}で囲まれた部分です。Dovecotはさまざまな認証をサポートしているため、
簡単な例を挙げて、
auth default {
《省略》
  # パスワード情報検索
  passdb passwd-file {
    args = /tmp/mypasswd
  }
  # ユーザ情報検索
  userdb passwd-file {
    args = /tmp/mypasswd
  }
《省略》
}次にパスワードファイルは/etc/
user:{plain}password:5000:5000:gecos:/home/mail/bluecoara.net/hnakamitsu:/bin/sh: 設定ファイルの準備が終わったら、
# /etc/init.d/dovecot restart
% telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK Dovecot ready. USER user ←─── ユーザ名を入力 +OK PASS password ←─── パスワードを入力 +OK Logged in. QUIT ←─── QUITで終了 +OK Logging out.
% telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. * OK Dovecot ready. 1 LOGIN user password ←─── ユーザ名とパスワードを入力 1 OK Logged in. 1 LOGOUT ←─── LOGOUTで終了 * BYE Logging out 1 OK Logout completed.
うまく接続できたでしょうか?
LDAP向けの設定
先ほどの簡単な例をふまえて、
auth default {
《省略》
  # パスワード情報検索
  passdb ldap {
    args = /etc/dovecot-ldap.conf
  }
  # ユーザ情報検索
  userdb ldap {
    args = /etc/dovecot-ldap.conf
  }
《省略》
}次に、
# LDAPサーバ
hosts = localhost
# パスワード検索用のバインドDN,パスワード。実際には管理者ではない専用ユーザを使用するように! 
dn = cn=Directory Manager
dnpass = dssecret
# 検索ベースとスコープ
base = ou=Mail,dc=bluecoara,dc=net
scope = subtree
# ユーザを識別するための検索フィルタ
user_filter = (mail=%u)
# mailMessageStore属性をホームディレクトリとみなす
user_attrs = mailMessageStore=home
# パスワードを識別するための検索フィルタ
pass_filter = (mail=%u)
# mail属性をユーザ名、userPassword属性をパスワードとみなす
pass_attrs = mail=user,userPassword=password
# 認証スキーマ。LDAPサーバ側で平文パスワードを保持するため、PLAINと設定
default_pass_scheme = PLAIN
# メールボックスにアクセスする時のUID/GID(Postfix側の設定とあわせる)
user_global_uid = 5000
user_global_gid = 5000設定を順番に見ていくと、
基本設定の後は、
- ユーザ名: foo@example.com 
- パスワード: bar
という情報が入力された場合、
(mail=%u)
※ %uにはPOP3セッション時に入力されたユーザ名が代入されます。という検索を行った結果から取得する、
設定が完了したら再びプロセスを再起動し、
長い道のりでしたがお疲れさまでした! もし接続できないようであれば、
次回は、
