Fetchmail + Procmail + Courier-IMAP + PostfixでIMAP環境構築

はじめに

最近、大学からISPに届くメールが読みたいと思うようになって来たので、家の Linux機(Debian sid)にIMAP環境を構築することにした。これはそのインストー ルメモである。(2001/8/27)

構築した環境

環境としては以下のようなものを構築した。

インストール手順

Courier-IMAP

とりあえず

 $ sudo apt-get install courier-imap
する。これでplain passwordの認証(LOGIN認証?)ではIMAPが使えるのだが、ここ ではCRAM-MD5認証を使いたいため、courier-baseのsourceを取ってきて、ちょっ といじって、debを作り直す。
 $ apt-get source courier-base
 $ cd courier-0.34.1/

こんな感じのパッチを当てる。

--- courier-0.34.1/debian/rules Wed Aug 22 13:59:23 2001
+++ courier-0.34.1.new/debian/rules     Wed Aug 22 13:18:19 2001
@@ -49,7 +49,7 @@
                --with-mysql-libs=/usr/lib \
                --without-authshadow \
                --without-authvchkpw \
-               --without-authcram \
+               --with-authcram \
                --with-db=gdbm \
                --without-fcgi \
                --with-htmllibdir=/usr/share/sqwebmail \

--- courier-0.34.1/debian/courier-base.files    Wed Aug 22 13:59:23 2001
+++ courier-0.34.1.new/debian/courier-base.files        Wed Aug 22 13:17:40 2001
@@ -17,6 +17,7 @@
 /usr/lib/courier/authlib/authcustom
 /usr/lib/courier/authlib/authpam
 /usr/lib/courier/authlib/authuserdb
+/usr/lib/courier/authlib/authcram
 /usr/lib/courier/courier/makedatprog
 /usr/lib/courier/courier/modules/dsn/courierdsn
 /usr/lib/courier/courier/modules/modules.ctl

--- courier-0.34.1/debian/makeauthmodulelist    Wed Aug 22 13:59:23 2001
+++ courier-0.34.1.new/debian/makeauthmodulelist        Wed Aug 22 13:53:54 2001
@@ -20,7 +20,7 @@

 use strict;

-my @known_modules = ('authcustom', 'authuserdb', 'authmysql', 'authpam');
+my @known_modules = ('authcustom', 'authuserdb', 'authmysql', 'authpam', 'authcram');
 my %known_hash;
 my @installed_modules;
 my $file;

debを作る。

$ dpkg-buildpackage -rfakeroot -us -uc

できたdebをインストール。

$ sudo dpkg -i courier-base_0.34.1-2_i386.deb

/etc/courier/imapd を適当に書き換える。以下最低限書き換える場所。

authcramを付け足す。

AUTHMODULES="authcram authpam"

MD5用bannerのコメントをはずす。

IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT AUTH=CRAM-MD5 AUTH=CRAM-SHA1"
通常のbannerをコメントにする。
# IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT"

次に、パスワードデータベースを作る。Courier-IMAPdでは/etc/courier/userdb 以下にテキスト形式でユーザ名、パスワード等を格納し、makeuserdbでバイナリ 形式の/etc/courier/userdb.datを作成するらしい。

ということで、まずは、UNIX passwdファイルから必要なユーザのみを切り出すことにす る。[username]のところは適当なユーザ名に置き換える。

# pw2userdb | grep [username] >> /etc/courier/userdb/users
その後、CRAM-MD5用のパスワードを設定する。 makeuserdbを実行するのを忘れずに。
# userdbpw -hmac-md5 | userdb users/[username] set imap-hmac-md5pw
# makeuserdb

$HOME/Maildirがない場合は作成する。

$ cd && maildirmake Maildir

以上でCourier-IMAPの設定は完了。

Fetchmail, Procmail

とりあえず

 apt-get install fetchmail procmail
する。

各々の設定ファイルはこんな感じ。

.fetchmailrc

defaults
        protocol pop3
        no rewrite
        mda "/usr/bin/procmail"
poll [mailservername] user [username] pass [password]

Procmail + Courier-IMAPの場合、IMAPフォルダ上の/ML/sylpheed/は、実 ファイルシステム上の$HOME/Maildir/.ML.sylpheed/に対応するの で注意が必要。

.procmailrc

PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/from
LOCKFILE=$HOME/.lockmail

:0
* ^X-ML-Name: sylpheed-jp
.ML.sylpheed-jp/

:0
* ^X-ML-Name: sylpheed
.ML.sylpheed/

...

Postfix

PostfixでSMTP AUTHを使うためにはCyrus-SASLというライブラリが必要。あと、 sourceもちょっといじらないとだめ。 DebianでのPostfixとCyrus-SASLのインストールに関してはyooseeさんのページ に詳しい。ので省略(w。

最近のDebian sidではPostfixは/var/spool/postfix/以下にchroot()して動いて いるらしく、/etc/sasldbが読めないようだ。そこで

ln /etc/sasldb /var/spool/postfix/etc/sasldb
して解決。


追伸

現在(2002/4)のsidのcourier関連のパッケージは、CRAM-MD5が 使えるようなコンパイルオプションで作成されているみたいです。