最初に
例のとごく、
まずは前回同様、
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: [email protected]
uid: HNAKAMITSU
givenName: Hideo
sn: NAKAMITSU
cn: Hideo NAKAMITSU
mailForwardingAddress: [email protected]
mailMessageStore: /home/mail/bluecoara.net/hnakamitsu
userPassword: hnakamitsu
Dovecotのインストール
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セッション時に入力されたユーザ名が代入されます。
という検索を行った結果から取得する、
設定が完了したら再びプロセスを再起動し、
長い道のりでしたがお疲れさまでした! もし接続できないようであれば、
次回は、