Courier-IMAP

Courier-IMAPとは?

Courier-IMAP は、Maildir形式で保存された電子メールを扱うサーバーソフトウェアです。

IMAPなので「家のPCじゃなくてもメールが読める」(ユビキタス思想)、Maildir形式なので「高速で安全なファイルアクセス」というメリットがあります。

目次

はじめに

IMAPって?

IMAP (Internet Message Access Protocol) は、サーバーにある電子メールにアクセスするための方法です。従来は POP3 と呼ばれる方法で電子メールを取り扱ってきましたが、POP3だと「メールはダウンロードしなければならない」「ダウンロードするとメールがサーバーから消える」などのデメリットがありました。IMAP だとメールはサーバー上に保存され、「不要なメールをダウンロードする必要がない」「どこに行ってもメールが読める」という長所があります。

参考: What is IMAP? (imap.org)

Maildirって?

従来、電子メールは mbox と呼ばれる保存形式で保存されてきました。これは、すべてのメールを1つのファイルにまとめるもので、ファイルが分散せず、電子メールの流通量が現在ほど多くなかった昔には重宝されていました。ところが、電子メールの量が多くなった今、mbox 形式だと1つのメールを読むのにわざわざ大きなファイルを開かなければならないことや、受信者が1つのファイルを読んでいる最中に新たなメールがきても書き込みができなかったり、ファイルシステムの不具合でファイルが破損した時にすべてのメールを失ってしまうなど、デメリットが目立つようになりました。

そこで、「メールは1通につき1ファイル」とし、一人に対して一つの(ファイルではなく)ディレクトリを割り当てるようにした保存形式が出現しました。これが Maildir で、Qmail (Courierの対抗馬です^^;) が最初の実装だったので Qmail 形式とも呼ばれます。

Maildir 形式を使えば、サーバーにいくら電子メールを蓄えても、メール1通の読み取りや検索に時間も取られないですし、万が一ファイルが破損しても該当するメール以外のメールは無事なので、電子メールをすべてサーバーに保存しようという IMAP の理念をすっきりと実現できるのです。

インストールの手順

ソースからのインストール

Courierは、http://www.courier-mta.org/download.phpからダウンロードすることができます。今回は IMAP のみ (本当は POP3 も含まれている) 利用するので、Package: Courier-IMAP の部分からダウンロードします。

「正式な」リリースは、Version 1.7.1 のような番号がつけられていますが、実際にはその下の "the latest development version" のほうが各種のbug fixを含む安定したバージョンなので、こちらをダウンロードすることをお勧めします。

今回は、version 1.7.1-20030501を使います。(ちなみに、Ver 1.7.1 以前は日本語対応部分がとても buggy なので、日本語環境では -20030423 以降を使うことが強く推奨されています)

wassy ~% wget http://www.courier-mta.org/beta/imap/courier-imap-1.7.1.20030501.tar.bz2

解凍

wassy ~% bunzip2 < courier-imap-1.7.1.20030501.tar.bz2 | tar xvf -
courier-imap-1.7.1.20030501/
courier-imap-1.7.1.20030501/ChangeLog
   :
wassy ~%

最近の tar だと、bunzip2 に対応した -j オプションがあるので、tar jxvf courier-imap...tar.bz2 なんていうオプションもあります。

make & build

解凍してできたディレクトリに入って、configure します。

wassy ~% cd courier-imap-1.7.1.20030501
wassy courier% ./configure --enable-unicode=iso-2022-jp
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
          :
config.status: creating config.h
config.status: executing depfiles commands
wassy courier%

make します。

wassy courier% make
make all-gmake-check FOO=BAR
make[1]: Entering directory `/home/wassy/courier'
make[1]: Leaving directory `/home/wassy/courier'
Making all in numlib
          :
cp imap/imapd.cnf .
cp imap/pop3d.cnf .
cp -f ./maildir/quotawarnmsg quotawarnmsg.example
make[1]: Leaving directory `/home/wassy/courier'
wassy courier%

root になって、make install します。

wasst courier% su
Password: ********
root courier# make install

パッケージのインストール

Red Hat Linux 8 以降からは、rpm コマンドのうち、パッケージ作成関係は rpmbuild というコマンドで独立しています。以下の rpmbuild コマンドは、Red Hat Linux 7.x 以前では rpm コマンドにそのまま読み替えてください。

まず、courier-imap-1.7.1-20030501.tar.bz2 を取得します。

wassy ~% wget http://www.courier-mta.org/beta/imap/courier-imap-1.7.1.20030501.tar.bz2

このtar-ballの中には、rpmパッケージの作り方を記述した spec ファイルが含まれていますので、そのまま rpm パッケージを作成することができます。

ただし、MySQL や OpenLDAP に対応したサブパッケージなども同時に作りますので、あらかじめ mysql-devel だとか openldap-devel などを必要に応じて用意する必要があります。mysql-devel がない環境で rpm パッケージを作成しても、courier-imap-mysql というサブパッケージが作成されますが、これは使えませんのであしからず。

また、日本語環境では、configure スクリプトに --enable-unicode=iso-2022-jp というオプションを渡したいので、このオプションを rpmbuild に --define オプションで渡す必要があります。

wassy ~% rpmbuild -ta --define 'xflags "--enable-unicode=iso-2022-jp"' --nodeps \
         courier-imap-1.7.1-20030501.tar.bz2
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.287654
+ umask 022
+ cd /usr/src/redhat/BUILD
    :
Writing: /usr/src/redhat/RPMS/i386/courier-imap-pgsql-1.7.1.20030501-1.8.0.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.12345
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd courier-imap-1.7.1.20030501
+ rm -rf /var/tmp/courier-imap-install
+ exit 0

で、これで RPM パッケージが作成されましたので、あとはインストールします。

wassy ~% cd /usr/src/redhat/RPMS/i386
wassy i386% ls
courier-imap-1.7.1.20030501-1.8.0.i386.rpm
courier-imap-ldap-1.7.1.20030501-1.8.0.i386.rpm
courier-imap-mysql-1.7.1.20030501-1.8.0.i386.rpm
courier-imap-pgsql-1.7.1.20030501-1.8.0.i386.rpm
wassy i386% su
Password: ********
root i386# rpm -Uvh courier-imap-1.7.1.20030501-1.8.0.i386.rpm \
                    courier-imap-mysql-1.7.1.20030501-1.8.0.i386.rpm
Preparing...                ########################################### [100%]
   1:courier-imap           ########################################### [ 50%]
   2:courier-imap-mysql     ########################################### [100%]
root i386# exit
wassy i386%

日本ユーザー会

日本ユーザー会、というか、日本のユーザーが日本語で気軽に質問したり開発を行ったりできるようなグループを作りました。http://courier-users.jp/ です。