Summary
Postfix で SMTP-AUTHを実現する方法.
SASL関連をインストール
# aptitude install sasl2-bin libsasl2 libsasl-modules
■SASLの設定
SASLのアカウント操作
- アカウント作成
# saslpasswd2 -c -u myhostname username
- アカウント削除
# saslpasswd2 -d -u myhostname username
- アカウント確認
# sasldblistusers2
Postfix 側とのデータベース関連付け
ユーザ登録毎に以下作業が必要.
# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# cp /etc/sasldb2 /var/spool/postfix/etc/
パスワードチェックメソッド (pwcheck_method) の指定
/usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
mech_list: cram-md5
Plain loginのみ対応のMUAを使用する場合
/usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
(pwcheck_method に saslauthd を指定した場合,mech_list にはplain loginしか指定できない)
smtpd.confのコピー
# cp /usr/lib/sasl2/smtpd.conf /etc/postfix/sasl/
■Postfixの設定
/etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,
regexp:/etc/postfix/recipient_checks.reg,
check_sender_access hash:/etc/postfix/bad_sender,
reject_rbl_client relays.ordb.org,
reject_rbl_client spamcop.net,
reject_rbl_client dynablock.wirehub.net,
reject_rbl_client opm.blitzed.org,
reject_non_fqdn_recipient,
permit_auth_destination,
permit_sasl_authenticated,
reject_unauth_destination
/etc/postfix/master.cf
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtp_error_sleep_time=0
-o smtp_soft_error_limit=1001
-o smtp_hard_error_limit=1000
■動作確認
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix
EHLO localhost
250-example.com
250-PIPELINING
250-SIZE 51200000
250-ETRN
250-AUTH NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
ログの確認
sasl_method=CRAM-MD5, sasl_username=xxxx
エラーログについて
openldap + sasl2 を導入していると,auth.logに以下のメッセージが記録されることがある.
Aug 17 14:54:37 ns postfix/smtpd[3819]: sql_select option missing
Aug 17 14:54:37 ns postfix/smtpd[3819]: auxpropfunc error no mechanism available
Aug 17 14:54:37 ns postfix/smtpd[3819]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
■トラブルシューティング
/etc/sasldb2: Permission denied
以下のエラーが発生
Nov 24 03:58:22 myhostname postfix/smtpd[12200]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
/var/spoold/postfix/sasldb2 の権限が間違っている場合でも /etc/sasldb2 の Permission deniedが発生していた.
# cp /etc/sasldb2 /var/spool/postfix/sasldb2
# chgrp postfix /var/spool/postfix/sasldb2
# chmod 640 /var/spool/postfix/sasldb2
Reference
Kozupon.com - Postfix + SMTP-AUTH2(SASL2)のセットアップ!
http://www.kozupon.com/mail/sasl2.html