SASL
こちらはsmtp_authの説明と実験
http://d.hatena.ne.jp/toshi_hirasawa/20111124/1322134634
SASL(Simple Authentication and Security Layer、RFC4422)
プロトコル(例 SMTP,LDAP,XMPPなど)
と
メカニズム(例 external,gssapi,plain)
とのI/F仕様(フレームワーク)で
(1)認証や
(2)セキュリティ、暗号化(オプショナル)
に関する処理(暗号化など)を行う
RFC4422によると
SASLの仕様要件の一つサービス名についていえば、
"サービス名....smtp-auth(RFC2554)の場合のサービス名は"smtp"だそうです。
プロトコル(例SMTP)からみるとsaslという抽象的なi/fを介して、
認証、セキュリティをメカニズにまかせることができて、
置換可能なメカニズム(SMTPのばあいは、PLAIN,LOGIN,
CRAM-MD5,DIGEST-MD5の中から選択可能)
ちなみに、PLAIN,LOGINはOSのpasswd,shadow DBを使うのに対
し
CRAM-MD5,DIGEST-MD5はsasl独自のdbを使用。
SASLのインストールと実験
# apt-get install sasl2-bin (Debian系の場合)
# yum install cyrus-sasl (RedHat系の場合)
設定ファイルsaslauthd?に たとえば、
MECHANISMS="shadow" (Debian系の場合)
MECH=shadow (RedHat系の場合)
をいれて、デーモンを機動。
# testsaslauthd -u ユーザ名 -p パスワード
にて動作テストできる
実際にcentosでやってみた。
[root@cent5-64b-40 sysconfig]# cp -pr saslauthd saslauthd.orig [root@cent5-64b-40 sysconfig]# vi saslauthd [root@cent5-64b-40 sysconfig]# diff saslauthd.orig saslauthd 7c7,8 < MECH=pam --- > #MECH=pam > MECH=shadow [root@cent5-64b-40 sysconfig]# ps -ef | grep sasl root 27414 27304 0 21:45 pts/1 00:00:00 grep sasl [root@cent5-64b-40 sysconfig]# [root@cent5-64b-40 sysconfig]# /etc/init.d/saslauthd start saslauthd を起動中: [ OK ] [root@cent5-64b-40 sysconfig]# [root@cent5-64b-40 sysconfig]# testsaslauthd -u hirasawa -p xxxxxxxxx 0: OK "Success." [root@cent5-64b-40 sysconfig]#
つづいて ubuntu
root@ubunt1004-32-2:~# dpkg -l | grep sasl ii libauthen-sasl-perl 2.13-1 Authen::SASL - SASL Authentication framework ii libsasl2-2 2.1.23.dfsg1-5ubuntu1 Cyrus SASL - authentication abstraction libr ii libsasl2-modules 2.1.23.dfsg1-5ubuntu1 Cyrus SASL - pluggable authentication module root@ubunt1004-32-2:~# which saslauthd root@ubunt1004-32-2:~# root@ubunt1004-32-2:~# root@ubunt1004-32-2:~# apt-get install sasl2-bin パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libvpx0 これらを削除するには 'apt-get autoremove' を利用してください。 以下の特別パッケージがインストールされます: db4.8-util 以下のパッケージが新たにインストールされます: db4.8-util sasl2-bin アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 2 個。 283kB のアーカイブを取得する必要があります。 この操作後に追加で 905kB のディスク容量が消費されます。 続行しますか [Y/n]? y 取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main db4.8-util 4.8.24-1ubuntu1 [125kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main sasl2-bin 2.1.23.dfsg1-5ubuntu1 [157kB] 283kB を 0s で取得しました (402kB/s) パッケージを事前設定しています ... 未選択パッケージ db4.8-util を選択しています。 (データベースを読み込んでいます ... 現在 347253 個のファイルとディレクトリがインストールされています。) (.../db4.8-util_4.8.24-1ubuntu1_i386.deb から) db4.8-util を展開しています... 未選択パッケージ sasl2-bin を選択しています。 (.../sasl2-bin_2.1.23.dfsg1-5ubuntu1_i386.deb から) sasl2-bin を展開しています... man-db のトリガを処理しています ... ureadahead のトリガを処理しています ... ureadahead will be reprofiled on next reboot db4.8-util (4.8.24-1ubuntu1) を設定しています ... sasl2-bin (2.1.23.dfsg1-5ubuntu1) を設定しています ... update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) * To enable saslauthd, edit /etc/default/saslauthd and set START=yes root@ubunt1004-32-2:~# which saslauthd /usr/sbin/saslauthd root@ubunt1004-32-2:~# cd /etc/default/ root@ubunt1004-32-2:/etc/default# cp -pr saslauthd saslauthd.orig root@ubunt1004-32-2:/etc/default# vi saslauthd root@ubunt1004-32-2:/etc/default# set -o vi root@ubunt1004-32-2:/etc/default# vi saslauthd root@ubunt1004-32-2:/etc/default# diff saslauthd.orig saslauthd 7c7,8 < START=no --- > #START=no > START=yes 32c33,34 < MECHANISMS="pam" --- > #MECHANISMS="pam" > MECHANISMS="shadow" root@ubunt1004-32-2:/etc/default# root@ubunt1004-32-2:/etc/default# ps -ef | grep sasl root 12422 11797 0 21:51 pts/0 00:00:00 grep sasl root@ubunt1004-32-2:/etc/default# root@ubunt1004-32-2:/etc/default# root@ubunt1004-32-2:/etc/default# /etc/init.d/sa saned saslauthd root@ubunt1004-32-2:/etc/default# /etc/init.d/saslauthd start * Starting SASL Authentication Daemon saslauthd [ OK ] root@ubunt1004-32-2:/etc/default# root@ubunt1004-32-2:/etc/default# root@ubunt1004-32-2:/etc/default# which testsaslauthd /usr/sbin/testsaslauthd root@ubunt1004-32-2:/etc/default# testsaslauthd -u hirasawa -p xxxxxxxxx 0: OK "Success." root@ubunt1004-32-2:/etc/default#