Cyrus SASL はこれまでにも何度か試したけれど、いつも何やら難しそうで途中で放棄していた。
今回は、なんとかやりおおせた。。。
使用した環境は以下のとおり:
OS: CentOS release 6.4 (Final)
1. Cyrus SASL のインストールと設定
SASL ではさまざまな認証機構を選択できるが、あまり複雑なことをやるとハマりそうなので Linux のパスワードファイル/etc/shadow
での認証を採用した。/etc/shadow
での認証は、saslauthd
で実現できる。saslauthd
は、CentOS の RPM パッケージ cyrus-sasl
に含まれている。PLAIN 認証機構のパッケージ
cyrus-sasl-plain
もインストールが必要。
# yum install cyrus-sasl cyrus-sasl-plain
saslauthd
を実行する前に、/etc/sysconfig/saslauthd
ファイルの起動オプションを設定して /etc/shadow
での認証を行うようにする。
MECH=shadow
# service saslauthd start
saslauthd
での認証がうまくいくかどうかは、testsaslauthd
コマンドで確認できる。
# testsaslauthd -u ユーザ名 -p パスワード
0: OK "Success."
と表示されれば成功。Postfix の SMTP 認証のために saslauthd は起動させておく必要がある。
chkconfig で on に設定しておこう。
# chkconfig saslauthd on
2. Postfix の設定
Postfix の SASL 認証は、SASL ライブラリーを経由して行っている。SASL ライブラリーの設定ファイル
/etc/sasl2/smtpd.conf
を以下のように設定する。
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
Postfix 本体の設定を以下のようにする。
(設定項目が存在しなければ追加)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
なお、Cyrus SASL ライブラリーは設定ファイルの検索パスから「
smtpd_sasl_path
の設定値+.conf
」というファイル名のファイルを探し出してそれを読み込むので、認証がうまくいかない場合は前述の /etc/sasl2/smtpd.conf
ファイルのファイル名と smtpd_sasl_path
の設定値が一致しているかどうか確認するとよい。/etc/postfix/master.cfg
ファイルで、-o smtpd_sasl_auth_enable=yes
と -o smtpd_client_restrictions=permit_sasl_authenticated,reject
オプションを有効にする。
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
Postfix の設定リロードを行って完了。
# service postfix reload