SASL2+LDAPのビルド手順


PostfixにSMTP AUTH機能を加える場合、Cyrus-SASLを経由してSASLの認証ソースをLDAPとするのが定石です。LDAP対応のCyrus-SASLのビルド方法を概説します。

Cyrus SASL

SASL(Simple Authentication and Security Layer)は、接続認証を伴うプロトコルをソフトウェアに実装する際に、その認証手段に抽象化されたAPIを提供する仕組み(ライブラリ)です。Postfix,SendmailようなMTAや、OpenLDAPなど、さまざまなネットワークサービスソフトウェアで、SASLによる認証がサポートされます。SASLを実装したライブラリはCyrus Projectにより提供されています(Cyrus-SASLv2)。SASL2では認証のもととなる情報ストアとしてLDAPの利用が可能になりました。以下は、 LDAPを認証ベースとして利用する場合のCyrus-SASL2のビルド手順の一例です(saslauthdを使ってSMTP AUTHなどを行うときの典型的な設定例です)。

ビルド手順

前提条件

この文書の中で概説するビルド手順は以下の条件を前提としています。

  • OpenSSLがインストール済みで、OpenSSLのライブラリが/usr/local/lib/sslに存在する。
  • OpenLDAPがインストール済みで、OpenLDAPのライブラリが/usr/local/libに存在する。

ソースtarボールの取得と解凍

Project CYRUSのホームページからcyrus-sasl2のソースtarボールを取得し、/usr/local/src/以下にコピーしたのち、以下の手順で解凍します。

# cd /usr/local/src
# tar -zxf cyrus-sasl-2.1.20.tar.gz

configureの実行

–with-ldapパラメータでldapの使用を指定してconfigureを実行します。以下の例では、事前にOpenSSLの最新版をソースからビルドしているため、併せて–with-opensslでOpenSSLのライブラリの場所を指定しています。

# cd /usr/local/src/cyrus-sasl-2.1.20
# ./configure –with-plugindir=/usr/local/lib/sasl2
–with-ldap=/usr/local
–enable-login
–disable-krb4
–disable-gssapi
–with-openssl=/usr/local/lib/ssl

make,インストール

以下のようにmake, makeインストールを実行します。

#make; make install

saslauthd

saslauthdはcyrus-saslで提供されるネットワーク経由でsasl認証を利用するためのデーモンです。Postfixのsmtp-authへの利用は典型的なsaslauthdの使用例です。saslauthdは前記の手順でcyrus-saslをビルド、インストールすることによりインストールされます。

saslauthdの設定

以下はsaslauthdの主な設定ファイルとその記述例です。この例では、ユーザアカウントはPosixAccountオブジェクトクラスを併せ持つPersonオブジェクトとして、ou=peopleのレイヤーに登録されていること、また、認証に際してログインIDにメールアドレスを使用することを前提としています。”ldap_search_base:”や”ldap_filter:”部のクエリー式を変更することにより、他の構成に対応してください。

ファイル 記述例
/usr/local/etc/salsauthd.conf ldap_servers: ldap://localhost
ldap_bind_dn: cn=admin, dc=eis, dc=co, dc=jp
ldap_password: ********
ldap_search_base: ou=people,dc=eis.dc=co,dc=jp
ldap_filter: (&(mail=%u)(objectClass=posixAccount))
/usr/local/etc/default/saslauthd START=yes
MECHANISMS=”ldap”

saslauthdの起動

以下はldapを認証のメカニズムとして明示的に指定してsaslauthdを起動する際の起動方法です。

#/usr/local/sbin/saslauthd -a ldap

saslauthdのテスト

cyrus-saslのソースには、saslauthdの機能をテストするユーティリティプログラムが提供されています。以下は、このプログラムをビルドして、saslauthdによる認証機能をテストする手順です。

# cd /usr/local/src/cyrus-sasl-2.1.20/saslauthd
# make
# ./testsaslauthd -u [email protected] -p ********

この例は、LDAPディレクトリにあらかじめ、mailアドレスを[email protected]とし、PosixAccountをオブジェクトクラスとして持つPersonオブジェクトが登録”>[email protected]とし、PosixAccountをオブジェクトクラスとして持つPersonオブジェクトが登録されていることを前提としています。以下の応答が返されれば、認証は成功です。

0: OK “Success.”