前回までの設定
前回から少々時間がたってしまいましたので,今までの設定内容をここで一旦まとめておきます。前回までに行った設定は次の通りです。
- FDSのインストールと初期設定
- メールユーザ用ディレクトリエントリの追加
- Postfix側のvirtual_mailbox_maps設定
- テストメールの配送
つまり,バーチャルドメインユーザ宛のメールを25/tcpで受信すれば,メールボックスの保存パスがLDAPサーバから取得され,適切な場所にメールが保存される状態になっています。念のため,具体的なディレクトリエントリや設定ファイル等に関しても,ここで整理しておきます。
リスト1 FDSのディレクトリエントリ
# メールユーザ用トップツリー
dn: ou=Mail,dc=bluecoara,dc=net
ou: Mail
description: Postfix/Dovecot
objectClass: top
objectClass: organizationalunit
# バーチャルドメインユーザ用エントリ
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
userPassword: {SSHA}tTyYPQIq9ZDzoCDnAiLZaXvs2zA3Cc0B
mailForwardingAddress: forward@example.com
mailMessageStore: /home/mail/bluecoara.net/hnakamitsu
リスト2 /etc/postfix/main.cf
# Postfixで管理するバーチャルドメイン
# 宛先がこれ以外のドメイン名であれば,MX検索より外部に配送する。
virtual_mailbox_domains = bluecoara.net, example.co.jp
# 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
リスト3 /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/
転送設定
Mail属性として登録されているhnakamitsu@bluecoara.net宛のメールを受信した場合,そのメールをmailForwardingAddress属性であるforward@example.com 宛に転送するようにします。そのためにはvirtual(5)のvirtual_alias_mapsパラメータを使用します。
内容はシンプルで,(mail=メールアドレス)に合致するエントリが見つかった場合には,そのメールをmail属性とmailForwardingAddress属性両方に転送する設定となります。
リスト4 main.cfに設定する内容
# メール転送用
virtual_alias_maps = ldap:/etc/postfix/forward.cf
リスト5 /etc/postfix/forward.cf
server_host = localhost
search_base = dc=bluecoara,dc=net
query_filter = (mail=%s)
result_attribute = mail, mailForwardingAddress
設定が終わったら,忘れずにPostfixをリロードしてください。ログを見ながらテストメールを送信すると,メールボックスへの配送と共に,外部へメールが転送されていることが分かると思います。

