memo.xight.org

日々のメモ

Postfix + SMTP-AUTH2(SASL2)

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