cyrus-sasl

出典: wiki.nodoka.org

postfixと連携させてSMTP認証に使用する。認証情報はmysqlにストアする。

cyrus-sasl-2.1.22のインストール

openssl, mysqlが既にインストールされている前提。

cd /usr/local/src
wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
tar xvzf cyrus-sasl-2.1.22.tar.gz
cd cyrus-sasl-2.1.22
./configure \
    --prefix=/usr/local/sasl \
    --with-saslauthd=/usr/local/sasl/var \
    --with-pwcheck=/usr/local/sasl/var \
    --with-openssl=/usr/local/openssl \
    --with-mysql=/usr/local/mysql \
    --enable-static \
    --enable-sql \
    --enable-plain \
    --enable-login \
    --enable-cram \
    --disable-otp \
    --disable-krb4 \
    --disable-gssapi \
    --disable-anon
make
make install

プラグイン確認

/usr/local/sasl/sbin/pluginviewer

→以下のような出力が返ってくる。

Installed SASL (server side) mechanisms are:
LOGIN CRAM-MD5 PLAIN DIGEST-MD5 EXTERNAL
List of server plugins follows
Plugin "login" [loaded],        API version: 4
        SASL mechanism: LOGIN, best SSF: 0, supports setpass: no
        security flags: NO_ANONYMOUS
        features:
Plugin "crammd5" [loaded],      API version: 4
        SASL mechanism: CRAM-MD5, best SSF: 0, supports setpass: no
        security flags: NO_ANONYMOUS|NO_PLAINTEXT
        features: SERVER_FIRST
Plugin "plain" [loaded],        API version: 4
        SASL mechanism: PLAIN, best SSF: 0, supports setpass: no
        security flags: NO_ANONYMOUS
        features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION
Plugin "digestmd5" [loaded],    API version: 4
        SASL mechanism: DIGEST-MD5, best SSF: 128, supports setpass: no
        security flags: NO_ANONYMOUS|NO_PLAINTEXT|MUTUAL_AUTH
        features: PROXY_AUTHENTICATION
                :
                :
                :

設定ファイル作成

pwcheck_method: auxprop
auxprop_plugin: sql
allowanonymouslogin: no
allowplaintext: yes
mech_list: plain login cram-md5
sql_engine: mysql
sql_user: mailadmin
sql_passwd: xxxx
sql_hostname: localhost
sql_database: maildb
sql_select: SELECT password FROM mailbox WHERE username='%u@%r'
sql_verbose: yes
log_level: 5
cd /usr/lib
ln -s /usr/local/sasl/lib/sasl2