最初に
前回までのFDS記事でSASLという言葉が出てきましたが、
SASLとはSimple Authentication and Security Layerの略であり、
また、
OpenLDAPとSASLの関係
たとえば、
% ldapsearch -x -D “uid=nomo,ou=People,dc=example,dc=com" -w abc123 -b “dc=example,dc=com" "objectClass=*"
という検索を行う場合、
SASLを有効にすることで、
それではさっそくSASLの設定です。/etc/
sasl-regexp 
  uid=([^,]+),.*,cn=auth 
  uid=$1,ou=People,dc=example,dc=com 
password-hash {CLEARTEXT} 
クライアント側からSASL認証が要求されると、
uid=ユーザ名,cn=,cn=digest-md5,cn=auth 
(レルムが省略された場合はuid=ユーザ名,cn=digest-md5,cn=auth)
といったDNを生成します。ただし、
sasl-regexp 変換前DN 変換後DN
です。また、
password-hash {CLEARTEXT} 
を設定しています。この設定を行うことで
% ldappasswd -U nomo -w abc123 -Y digest-md5 -s hoge
のようにパスワードを変更しても、
エントリの登録
今回は
sasl-regexp    uid=([^,]+),.*,cn=auth    uid=$1,ou=People,dc=example,dc=com 
という設定を行っているため、
dn: dc=example,dc=c、om 
objectClass: dcObject 
objectClass: organization 
dc: example 
o: example 
dn: ou=People,dc=example,dc=com 
objectClass: organizationalUnit 
ou: People 
dn: uid=nomo,ou=People,dc=example,dc=com 
objectClass: inetOrgPerson 
sn: nomo 
cn: nomo 
uid: nomo 
userPassword: abc123 
エントリを登録できたら、
% ldapsearch -U proxy -Y digest-md5 -b "dc=example,dc=com" "objectclass=*"
Wiresharkで確認してみても、
Postfix SMTP AuthとSASL
OpenLDAP側でSASL設定を行っておくことにより、
この概念としては、
今までとの違いは、
リスト3 proxyuserアカウントの登録
dn: uid=proxyuser,ou=People,dc=example,dc=com 
objectClass: inetOrgPerson 
sn: proxyuser 
cn: proxyuser 
uid: proxyuser 
userPassword: proxy_passwd 
saslAuthzTo: dn.regex: uid=.*,ou=People,dc=example,dc=com 
また、
sasl-authz-policy To 
を加えるとともに、
access to * 
  by self write 
  by dn="uid=proxyuser,ou=People,dc=example,dc=com" write 
  by * read 
といったACLを設定しておきます。あとはSMTP Auth用にsmtpd.
リスト4 /usr/
pwcheck_method: auxprop 
auxprop_plugin: ldapdb 
ldapdb_uri: ldap://localhost 
ldapdb_id: proxyuser 
ldapdb_pw: proxy_passwd 
ldapdb_mech: DIGEST-MD5 
mech_list: LOGIN PLAIN CRAM-MD5 DIGEST-MD5 
駆け足になりましたが、
最後に
OpenLDAPには以前紹介したSSLや今回紹介したようなSASLのように、
また、
たとえばインターネット越しにLDAP検索を行う場合でも、
2008年最後の記事となってしまいましたが、
