そろそろLDAPにしてみないか?
第16回 FDSとDovecot
最初に
例のとごく,前回の記事から少し時間が経ってしまいましたが,今回と次回でDovecotによりPOP3/IMAP4サービスを構築することで,一連のFDSのお話はいったん終了する予定です。
まずは前回同様,それぞれの設定ファイルやデータについて整理しておきましょう。
リスト1 /etc/postfix/master.cfの一部
smtp inet n - n - - smtpd
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
リスト2 /etc/postfix/main.cfの一部
# 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
リスト3 /etc/postfix/domains.cf
# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 該当するドメイン名が見つかった場合は,バーチャルドメインとして扱う
query_filter = (mailAccessDomain=%s)
# なんでも良いので,適当な値を返すようにする
result_attribute = ou
# パフォーマンスを考慮し,子ツリー以下は検索しない
scope = one
リスト4 /etc/postfix/forward.cf
# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 検索フィルタ(%sがメールアドレスに置き換わる)
query_filter = (mail=%s)
# エントリが見つかった場合はmail, mailFOrwardingAddressの両方へメールを配送
result_attribute = mail, mailForwardingAddress
リスト5 /etc/postfix/vmailbox.cf
# LDAPサーバの基本情報
server_host = localhost
search_base = dc=bluecoara,dc=net
# 検索フィルタ(%sがメールアドレスに置き換わる)
query_filter = (mail=%s)
# 検索後に取得する属性
result_attribute = mailMessageStore
# 属性取得後に文字列の後ろに/Maildir/という文字を付加することでメールを
# ホームディレクトリ/Maildir/以下に保存するようにする
result_filter = %s/Maildir/
リスト6 /usr/lib/sasl2/smtpd.conf
# プラグインの定義
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
リスト7 LDAPエントリ
# 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: hnakamitsu


