courier-imap インストール奮闘記

SERVER

qmail の Maildir 形式に対応した IMAP サーバ、courier-imap を RedHat 6.2J にインストールしてみました。

思わぬエラーに見舞われて大苦戦でした。


courier-imap

courier-imap は、qmail の Maildir 形式に対応した IMAP サーバです。

IMAP は、サーバにてメールを管理しますので、POP3 のように、ひとりで複数台のコンピュータを利用するような場合でもサーバからダウンロードしてしまうことがないので、気兼ねなくメールの受信ができます。

クライアントコンピュータの再インストール時も、メールのバックアップは必要なくなるので、使い方しだいでなにかと便利だと思います。

 

この記事は 「失敗談」 だったのですけど、ようやく動くところまでたどり着いたので、「奮闘記」 に変更になりました。

 

courier-imap 1.4.2 のインストール

とりあえず、現時点の最新版である、courier-imap 1.4.2 をインストールしてみます。

なお、下記で RPM がらみのお話がありますけど、それらはとことん失敗に終わっていますので、気をつけて読み進めてくださいませ。

 

以前に Slackware でですがインストール経験があったので簡単かと思ったのですが、これがうまくいきませんでした。以前のお話は EZ-NET: courier-imap 0.32 のインストール から参照できます。

 

今回は、./configure の時点でなぜだかエラーが出てしまいました。エラーは checking for locking method という部分で起こりました。記載によると --with-locking-method オプションを特定しないといけないとか…。

しょうがないのでとりあえず、RPM パッケージを作成する方法が載っていたので、それを試してみることにしました。

rpm -ta courier-imap-1.4.2.tar.gz

こうしてみると、次のようなエラーが発生しました。

error: failed build dependencies:

openssl-devel is needed by courier-imap-1.4.2-1.6.2

rpm >= 4.0.2 is needed by courier-imap-1.4.2-1.6.2

とりあえず、RPM 自体のバージョンが古そうです。調べてみたところ、現在使用している RPM は 3.0.5 でした。なのでとりあえず RPM のバージョンをあげてみることにします。

RedHat のホームページ をさがしてみると、http://redhat.com/swr/i386/rpm-4.0.2-8.i386.html からダウンロードできるようです。それと openssl-devel、これは http://www.redhat.com/swr/i386/openssl-devel-0.9.6-9.i386.html から入手できるようです。

ついでだったので、openssl と openssh の方もそれぞれ、http://www.redhat.com/swr/i386/openssl-0.9.6-9.i386.html http://www.redhat.com/swr/i386/openssh-2.5.2p2-5.i386.html から入手することにしました。

 

そしてざくざくっとパッケージをアップグレードしてきます。

rpm -U rpm-4.0.2-8.i386.rpm

ここでいきなりエラー。glibc のバージョンも 2.1.92 以上必要のようです。なので、http://www.redhat.com/swr/i686/glibc-2.2.4-19.3.i686.html からダウンロードしました。

ほかにも glibc-common とか、glibc-devel も必要のようです。これらは http://www.redhat.com/swr/i386/glibc-common-2.2.4-19.3.i386.html http://www.redhat.com/swr/i386/glibc-devel-2.2.4.19.3.i386.html から入手ですね。

 

そして再び、ざくざくっとパッケージをアップグレードしてきます。

けれどもやっぱり依存関係のエラーが発生してしまいます。glibc-common とかその周りが不足しているということなのでそれらもダウンロードしてみたのですが、glibc-common のインストールが、単純にインストールエラーになってしまって、その先が一向に進みません…。

 

仕方ないので、別のバージョンの courier-imap を入手して、それを普通にコンパイルするという方針に切り替えることにしました。

バージョン 1.4.1 を試してみましたが、これも同じところで同じエラーが発生してしまいます。バージョン 1.4.0 も試してみましたが、こちらもやっぱり同様のエラーが発生するようです。

なので今度はバージョン 1.3.12 を試してみました。が、これも同じようですね…。しかたなく一気にバージョンを落として、1.2.3 を試してみることにしました。けれどこれまただめ…。バージョン 1.2 と 1.1 と 1.0 もまったく同じで ./configure の時点でダメでした。

 

あまりにもうまくいかないので、インターネットで調べてみると、どうやら場合によっては --with-locking-method を fcntl / lockf / flock のいずれかに特定してあげないといけないことがあるようです。

いままで出ていたエラーメッセージを引用してみると、

checking for fcntl... yes

checking for flock... no

checking for lockf... no

checking for locking method... configure: error: must specify --with-locking method option

configure: error: ./configure failed for liblock

といった感じになっています。

ここを見る限りだと、fcntl がサポートされていて flock と lockf はサポートされていない、というように読み取れますね…。

というわけで、改めて最新版の courier-imap 1.4.2 に挑戦してみることにします。

./configure --with-locking-method=fcntl

けれどまたしてもエラーです。fcntl のテストに失敗してしまったとか…。こうなったら賞がありません。flock も試してみることにします。

けれどこれもダメでした。lockf も試してみましたがこれもダメ。自分の実力の範囲では、もはやお手上げですね…。

 

もう一度 RPM 化の方を試してみたところ、バージョン 1.2.3 ならば依存関係をクリアできることが発覚。けれど root 権限ではコンパイルできませんというエラーが出てしまいますけど。

で、そのときのログをみてみると、もしかすると RedHat であることを通知すれば ./configure が通るかも知れなそうな感じだったので実験です。

 

 

./configure i386-redhat-linux

依存関係の問題等もありそうなので、最新版はやめて、安全のため 1.2.3 を利用することにします。が、結局ダメみたいです。--with-locking-method=fcntl もつけてみましたけど、結果変わらずです。

う〜ん、とりあえずなすすべなく、今日のところは断念です…。

 

courier-imap 1.2.3 のインストール成功

その後も glibc をアップデートしてみたり、kernel-source を入手してみたり、libtool なるものを入れてみたり gcc をアップデートしたり…、それはそれはいろいろな RPM を落としてはインストールの日々が続きました。

 

何度も ./configure を打ってはエラーメッセージを見ているうちに、liblock/ というディレクトリがあることに気がつきました。そこで、liblock/ ディレクトリに突入して ./configure と打ち込んでみると、ちょこっとメッセージが表示された後でいつものエラーが発生しました。

そんなわけで、それ以降 liblock 周りに重点を置いて調べていたのですけど、ふと root 権限で ./configure をやったらどうなるんだろうと思いました。

courier-imap は root 権限で ./configure をしようとするとエラーを出して停止してしまうのですが、途中から入ればごまかせるでしょう、ということで liblock/ のなかから root 権限でいきなり ./configure を行ってみました。

すると、fcntl も flock も lockf も ok でパスした上、正常に Makefile が出来上がるではないですか。

 

ということは、一番初めの ./configure の時点で root 権限チェックをごまかせばとりあえず何とかなりそうですね。というわけで configure を vi で開いて root チェックの部分を書き換えてしまえ!

という意気込みで configure の該当箇所を探そうと、root という文字で検索をかけてみると…。

目に留まったのは --disable-root-check という文字。なんと configure のオプションとして root 権限かどうかのチェックをはずす機能が用意されているではないですか。

さっそく root 権限のまま、./configure --disable-root-check としてみると、ずらずらとメッセージが表示された後、正常に Makefile の作成に成功しました。

 

その後 make とやると、courier-imap 1.3.12 や courier-imap 1.4.2 の場合はなにやらデータベース系のヘッダがないと言われてしまいました。けれど courier-imap 1.2.3 だとエラーなく make を通過することができました。

imap を起動してメールソフトから接続してみても、ばっちり動いているようです。

 

いろいろとつきつめて courier-imap 1.4.2 が使えるようにがんばってみようかとも思いましたが、あんまり時間をかけている余裕もないので、今回は courier-imap 1.2.3 を使うことにしました。