SMTP Authにはcyrus-sasl2-saslauthdを使用しています。
# portsinstall security/cyrus-sasl2-saslauthd [X] OPENLDAP ON
# saslauthd -v saslauthd 2.1.23 authentication mechanisms: sasldb getpwent kerberos5 pam rimap ldap ↑Ldap対応確認
/etc/rc.confに以下を追加。
saslauthd_enable="YES" saslauthd_flags="-a ldap"
# /usr/local/etc/rc.d/saslauthd start
saslauthd.confは作成されていないので自分で作ります。
# touch /usr/local/etc/saslauthd.conf
中身はこんな感じです。
ldap_servers: ldap://ldapサーバアドレス/ ldap_version: 3 ldap_bind_dn: cn=管理者,dc=yyyy,dc=zzz ldap_password: パスワード ldap_search_base: ou=xxxx,dc=yyyy,dc=zzz ldap_filter: uid=%u ldap_deref: search
mailアドレスをキーにしたい場合は
ldap_filter: mail=%u または ldap_filter: mail=%u@%d # %U=info@example.com # %d=example.com # %u=info
に変更
# /usr/local/etc/rc.d/saslauthd start
# testsaslauthd -u XXX -p ***** 0: OK "Succes."と出力されれば、Cyrus-SASLとOpenLDAPの連係はOK 0: NO "authentication failed" だと失敗
ただし、IDに@が含まれていると動作が怪しい。
うちではtestsaslauthd がエラーなのに、SMTP AUTHは動作するというケースが出ています。
かなり、特殊な設定のため以下の様に設定しています。
ldap_filter: (|(mail=%U)(mail=%u@%d))
このときtestsaslauthd はこんな感じです。
# testsaslauthd -u myname -p password 0: OK "Success." # testsaslauthd -u virtialuser@example.com -p password 0: NO "authentication failed"
ですが、メールの送信は
postfix/smtp[xxx]: xxx: to=<hoge@example.net>, relay=xxx.xxx[nnn...]:25, delay=........., status=sent (250 2.0.0 Ok: queued as xxxxx)
のように成功します。う~ん、なぜだろう。
/etc/postfix/main.cfを以下の様に変更する。
smtpd_sasl_auth_enable=yes smtpd_recipient_restrictions=・・・・・・permit_sasl_authenticated・・・・・・ ↑追加