Postfix で Dovecot SASL を使った SMTP Auth 環境を作ってみた。
Dovecot SASL は複数の認証エンジンを組み合わせて使えるので、まずは pam で認証して、失敗したら LDAP で認証するような環境にしてみた。
Cyrus SASL を使った環境の構築方法は、『Postfix で SMTP Auth(LDAP編)』参照。
名称 | バージョン | 備考 |
---|---|---|
Solaris x86 | 10 | |
Postfix | 2.3.3 | 2006.09.12時点での最新版。 |
Dovecot | 1.0 rc7 | 2006.09.12時点での最新版。 『Dovecot で IMAP/POP3 の LDAP認証』で構築した環境を使用して設定変更のみ行った。 |
OpenLDAP | 2.3.27 | 今回は、CSWパッケージを使用した。 CSWパッケージについては、『Solarisへのフリーソフトのインストール方法』参照。 |
$ make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SASL_SERVER=\"dovecot\"' $ make # make install
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_type = dovecot ← Cyrus SASL の設定からの変更箇所 smtpd_sasl_path = private/auth ← Cyrus SASL の設定からの変更箇所
auth default {
mechanisms = plain login
passdb pam {
}
passdb ldap {
args = /usr/local/etc/dovecot-ldap.conf
}
userdb passwd {
}
userdb static {
args = uid=5000 gid=5000 home=/var/mail/vhosts/%d/%n
}
user = root
# === ここから下が追加した部分 ===
# Postfix SMTP Auth
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
hosts = ldap.example.com auth_bind = yes base = o=Example Limited, c=jp pass_filter = (mail=%u)
キャッシュしないと毎回LDAPサーバに問い合わせに行く(pamで解決したユーザは除く)ので、それを避けるにはキャッシュを有効にする。
dovecot.confauth_cache_size = 10 ← キャッシュサイズの最大値[KB](デフォルトは0で無効) #auth_cache_ttl = 3600 ← キャッシュデータの生存時間[sec](デフォルトは1時間)dovecot-ldap.conf
default_pass_scheme = PLAIN ← 本環境では、パスワードを plaintext で扱ったので設定
$ postconf -a cyrus dovecotSMTP+LMTPクライアントでのSASLサポート
$ postconf -A cyrus