binc-imap with qmail-ldap

qmail-ldap と組み合わせる IMAP4 サーバを幾つか見ていたのですが、Courier-IMAP は設定がどうも馴染めなかった*1ので、Binc IMAP を前から見ていました。日本語だと http://www.iron-horse.org/~naokih/bincimap/ にすばらしいドキュメントがあります。Binc IMAP の特徴は以下のとおりだそうです。

  1. Maildir 用にデザインされた、モジュール式の IMAP サーバです。 安全で、安定して高速に動作し、また拡張しやすい、 管理が簡単なサーバを目指している。
  2. qmail-pop3d を知っている人にとっては、 この IMAP サーバは、自然な選択 でしょう。 Binc IMAP は、同様の方法で起動されますし、 認証には checkpassword を使います。
  3. バージョン 1.2 は Maildir 専用の IMAP サーバですが、 将来のバージョンでは他のメールボックス(たとえば mbox)もサポートする予定です。
  4. RedHatMandrakeSuSeDebian LinuxOpenBSDFreeBSDSolaris/SunOSMac OS X などでコンパイル、実行可能です。

私の場合、2(と 4 もね :-)が重要でした。設定が複雑になるとスタッフに説明するのが面倒なので、qmail(qmail-ldap)と同様の設定なのは非常に有難いのです。

インストール

VMware 上の FreeBSD 5.4-PRERLELEASE*2で以下のように Binc IMAP をインストールしました。

# cd /usr/ports/mail/bincimap
# make install clean
# pkg_info | grep bincimap
bincimap-1.2.11     Light-weight IMAP server for Maildir

設定

設定ファイルは以下の 2つくらいです。

/usr/local/etc/bincimap/bincimap.conf

こんな感じです。空行、コメント行は省いてあります。

Authentication {
    allow plain auth in non ssl = "yes",
    auth penalty = 4,
    disable starttls = "yes"
}

Security {
    jail path = "/usr/local/bin",
    jail user = "nobody",
    jail group = "nobody"
}

Log {
    type = "syslog",
    environment ip variable = "TCPREMOTEIP"
}

Mailbox {
    depot = "Maildir++",
    type = "Maildir",
    path = "Maildir",
    auto create inbox = "yes",
    auto subscribe mailboxes = "INBOX",
    umask = "077"
}

Session {
    idle timeout = 1860,
    auth timeout = 60,
    transfer timeout = 1200,
    transfer buffer size = 1024
}

SSL {
    pem file = "/usr/local/etc/bincimap/bincimap.pem",
    ca file = "",
    ca path = "",
    cipher list = "!ADH:RC4+RSA:HIGH:MEDIUM:LOW:EXP:+SSLv2:+EXP",
    verify peer = "no"
}
/var/qmail/boot/qmail-imapd/run

qmail-ldap 付属の Courier-IMAP 用 run スクリプトをちょっといじっただけです。

#!/bin/sh
exec 2>&1
#
# IMAP service: this script is for Binc IMAP
#
QMAIL="/var/qmail"
ME="`head -1 $QMAIL/control/me`"
PATH="$QMAIL/bin:$PATH"


# source the environemt in ./env
eval `env - PATH=$PATH envdir ./env awk '\
        BEGIN { for (i in ENVIRON) \
                if (i != "PATH") { \
                        printf "export %s=\"%s\"\\n", i, ENVIRON[i] \
                } \
        }'`

# enforce some sane defaults
PBSTOOL=${PBSTOOL:="$QMAIL/bin/pbsadd"}

if [ X${NOPBSR+"true"} = X"true" ]; then
        unset PBSTOOL
fi

exec \
        tcpserver -v -HRl $ME -x$QMAIL/control/qmail-imapd.cdb \
            ${CONCURRENCY:+"-c$CONCURRENCY"} ${BACKLOG:+"-b$BACKLOG"} 0 imap \
        /usr/local/bin/bincimap-up \
        --logtype=multilog --conf=/usr/local/etc/bincimap/bincimap.conf -- \
        $QMAIL/bin/auth_pop  ${PBSTOOL:+"-d$PBSTOOL"} \
        /usr/local/bin/bincimapd Maildir

起動

daemontools 管理下におきます。以下のように symlink しました。

# cd /var/service
# ln -s /var/qmail/boot/qmail-imapd .

テスト

telnet コマンドでテストしてみます。太字は入力部分です。

 % telnet localhost 143
 Trying ::1...
 telnet: connect to address ::1: Connection refused
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 *** OK Welcome to Binc IMAP Copyright (C) 2002-2004 Andreas Aardal Hanssen at 2005-03-02 14:51:03 JST
 0001 LOGIN ueda hogehoge
 0001 OK LOGIN completed
 0002 LIST "" "%"
 *** LIST (\Unmarked) "/" "INBOX"
 0002 OK LIST completed
 0003 LOGOUT
 *** BYE Binc IMAP shutting down
 0003 OK LOGOUT completed
 Connection closed by foreign host.
 %

こんな感じで、とりあえず動きました。

その他

mobileimap: an IMAP-based web mailer for mobile phones を見ると、「2004年1月現在、まだ日本語の検索に対応していないようです。」と書いてありますね。試してみたら確かに対応していないようです。むむ... http://lifewithbincimap.org/index.php/Main/WhatsPlannedForTheFuture を見ると、1.2.x では対応予定がないみたいですね。はよ 1.3.x を stable にしてくれないかなぁ。

*1:qmail, daemontools, ucspi-tcp/ssl の一般的な設定方法とは違うから、というだけです。Courier-IMAP の方がドキュメントは多そうですね

*2:05/2/26 に CVSup しました