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を使用。


postfixdovecotsvnserve などはSASLをサポートしている

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#