debian postfix + dovecot + sasl(PAM)

postfix + dovecot をインストールしている前提。
http://d.hatena.ne.jp/kt_hiro/20120317/1331972844

OSユーザのアカウントでSMTP認証させる方法。

sasl

・インストール

# apt-get install sasl2-bin libsasl2-modules libsasl2-2 libsasl2-dev

postfixとの連携設定
※OPTIONS の設定は、Postfixchroot環境で動作している場合は必須。
 chrootかどうかは、master.cf の smtp行の第5カラムの設定を確認する。
 "-" だったら chroot、"n"だったら chrootではない。

# vi /etc/default/saslauthd 
START=yes
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

・OPTIONS で指定したディレクトリの作成(chroot環境で動かす場合のみ)

# mkdir -p /var/spool/postfix/var/run/saslauthd

・起動

# /etc/init.d/saslauthd restart

postfix

・設定追加

# vi /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = 
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_unauth_destination
smtpd_sasl_security_options = noanonymous

・認証方法の設定

# vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list:plain login

・sasl認証を有効にする
※main.cf で有効にしていれば不要かも

# vim /etc/postfix/master.cf
smtp      inet  n       -       -       -       -       smtpd
-o smtpd_sasl_auth_enable=yes

・起動

# /etc/init.d/postfix restart


・動作確認

# telnet localhost 25
	Trying 127.0.0.1...
	Connected to localhost.
	Escape character is '^]'.
	220 mail.hirohiro.net ESMTP Postfix (@@DISTRO@@)
EHLO localhost
	250-mail.hirohiro.net
	250-PIPELINING
	250-SIZE 10485760
	250-VRFY
	250-ETRN
	250-AUTH LOGIN PLAIN
	250-ENHANCEDSTATUSCODES
	250-8BITMIME
	250 DSN
AUTH LOGIN
	334 VXNlcm5hbWU6
****						←BASE64でエンコードしたユーザ名を入力
	334 UGFzc3dvcmQ6
****						←BASE64でエンコードしたパスワードを入力
	235 2.7.0 Authentication successful

BASE64でのエンコード方法

# perl -MMIME::Base64 -e 'print encode_base64("username");'
# perl -MMIME::Base64 -e 'print encode_base64("password");'

※AUTH LOGIN の後の応答はBASE64エンコードされている。
 334 VXNlcm5hbWU6 → 334 Username:
 334 UGFzc3dvcmQ6 → 334 Password: