人気ブログランキングへ

2013年12月31日

Postfix+Cyrus SASL で SMTP 認証

SMTPサーバーの認証をやらざるをえなくなり、SASL を導入した。
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
posted by K/I at 18:13 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック