オフィシャルサイト: QUALCOMM

Qpopper

「世界で最も多く使われている」と言われる軽量な POP3 サーバ。開発元は、古くからのMacユーザならお馴染みのメールクライアント EUDORA で有名な QUALCOMM。メールボックスに Maildir 方式を使うのなら qmail の pop3d を使うほうがセキュリティ面でずっと安心だし、旧来のメールスプールでも Maildirでも (要パッチ) 使えて qmail-pop3d のセキュリティ思想を見習って作られた popa3d という選択肢もある。それでも使わなきゃならない場面もあるが、最近の RedHat系ではコンパイルにさえ苦労することが分かったので、このページを作った。

インストール

コンパイル

執筆時点で 4.0.8 が出ているが、最近の RedHat系環境ではエラーが出てコンパイルできない。どうやら QUALCOMM のソースが Cライブラリの strerror 関数周りをコードの中でわざわざ再定義しているのがネックらしい。そこで、 pbone.net で SRPM を探し、リパッケージして使うことにした。執筆時点では PLD-Linux 用のソースRPM のうちで最新(?)のパッチの当たったものが最も「使えそう」で、その spec ファイルを RedHat向きに改造することによって、バイナリパッケージを作成することができた。

元にしたソースRPM: qpopper-4.0.5-8.src.rpm

改造済みファイル

[2006/9/5 RH.1.0 -> RH.1.1] スタンドアローン版の initスクリプトにいろいろと不具合を発見したので修正した。起動スクリプトファイル名が、スタンドアローンは qpopper -> qpopperd、SSL版スタンドアローンは qpoppers -> qpoppersd に変わったのでご注意。

qpopper-4.0.5-8_RH.1.1.src.rpm RedHat用に構築しなおしたソースRPM。
qpopper.spec 上記で使用した spec ファイル。RedHat用に最適化してある。 rpmbuild の際のコマンドラインで `--with mysql' を指定することによって qpopper 自体のコンパイルパラメータ --with-mysql が有効にできるように書かれているらしい。
qpopper-4.0.5-8_RH.1.1_legacy.src.rpm 上記は mysql サポートを実現するために比較的新しい rpmマクロ %bcond_with を使用しているため、例えば Fedora Core 3 ではビルドできない。そのため、こちらは %bcond_with を mysql サポートもろとも排除したバージョン。
qpopper.legacy.spec 上記 legacy バージョンで使用している spec ファイル。
qpopper.init ソースのうち、スタンドアローン版RPMで /etc/rc.d/init.d/qpopperd としてコピーされることになる起動スクリプト。 PLD-Linux とでは /etc/rc.d/init.d/functions スクリプトの仕様が異なるので改造した。
qpopper-ssl.init SSL有効版の RPMパッケージ作成で使われる起動スクリプト。上記と同様の改造を施した。 /etc/rc.d/init.d/qpoppersd としてインストールされる。
qpopper.sysconfig スタンドアローン版 RPM で使用される qpopperd の起動オプション指定ファイル。最終的には /etc/sysconfig/qpopper としてコピーされることになる。やはり RedHat用に改造。
qpopper-ssl.sysconfig 上記の SSL 有効版RPM用。 /etc/sysconfig/qpopper-ssl としてインストールされるもの。

いろいろ挙げたが、基本的には qpopper-4.0.5-8_RH.*.*.src.rpm を元にしてバイナリパッケージをビルドすればよい。 PLD のソース RPMは凝った造りになっていて、基本部分である qpopper-common と、 xinetd 起動用とスタンドアローン版、 それらの SSL 有効版といった具合に、バイナリRPMパッケージは幾つかに分割されて出来上がる。

パッケージのビルド手順

基本的な手順を示そう。コンパイルエラーが出る場合には qpopper-4.0.5-8_RH.*.*.legacy.src.rpm のほうを使ってみていただきたい。

root# rpm -ivh qpopper-4.0.5-8_RH.1.1.src.rpm

/usr/src/redhat 下の必要なディレクトリに材料が展開される。

root# cd /usr/src/redhat
root# vi SPECS/qpopper.spec

2箇所、確認と適宜変更をお勧めする;

root# rpmbuild -bb --clean SPECS/qpopper.spec

/usr/src/redhat/RPMS/i386/ (環境によっては i686 などかもしれない) に幾つかのバイナリパッケージができる。

インストール

ここでは、最もパフォーマンスが良いとされるスタンドアローンモード (つまり rc起動) で動かすケースを想定する。(***部はケースバイケースで変わる部分という意味。)

既にインストールされている qpopper パッケージがないか調べる:

root# rpm -qa | grep qpopper

上記でパッケージが挙がったら、全てアンインストールしておく;

root# rpm -ev qpopper***

qpopper-common パッケージは xinetd起動でもスタンドアローンモードでも必要。スタンドアローンモードの場合、qpopper-common と qpopper-standalone をインストールする;

root# rpm -ivh qpopper-common-4.0.5-8_RH.1.1*** \
 qpopper-standalone-4.0.5-8_RH.1.1***

設定

当ページで紹介しているパッケージでは、 qpopper のランタイム設定が /etc/qpopper/config ファイル (SSL版は config-ssl) で行える。インストール時にサンプルがコピーされるが、スタンドアローンでお勧めのチューニング項目は以下。

起動

当ページに掲載したソースRPMからコンパイルしたスタンドアローンパッケージでは、起動スクリプトは /etc/rc.d/init.d/qpopperd となる。よって、サービスをスタートさせるには;

root# service qpopperd start

とコマンドすればいい。ちなみに、SSL版をインストールした場合は qpoppersd となる。