そろそろLDAPにしてみないか?

第16回 FDSとDovecot

この記事を読むのに必要な時間:およそ 4 分

最初に

例のとごく,前回の記事から少し時間が経ってしまいましたが,今回と次回で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

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。

コメント

コメントの記入