CentOS 7.1 (1503)にmaildrop 2.8をインストールする

またしてもCentOS 7です。

CentOS 7でPostfixと組み合わせるMDAはprocmailで特に困っていないのですが、5年前にVPSを使い始めたときにもprocmailは古いとすでに言われており、5年ほど経った今もprocmailは使われていながらももう古いという同じ状況です。

procmailのレシピも書いて使うのはもう慣れたので問題ないのですが、別の機会でmaildropを使うことになったのでCentOS 7でもわざわざmaildropを使ってみることにしました。

みんなprocmailで十分なのか、CentOS標準のパッケージにも、EPELにもありませんでした。

仕方ないのでソースからmaildropをインストールします。
標準で用意されているパッケージしか使わないと思って使い始めたCentOS 7も、なんだか方向性が変わってきました。
./configure時に–prefixを指定すれば、OSそのもののディレクトリを汚さずにソフトを入れられるのでむしろ歓迎です。

SourceForgeを見ると、maildropはCourierの一部のようです。
Courierはほかに何も使ってないので、不思議な感じです。

今回はmaildrop 2.8.3をインストールします。
maildrop 2.7以降は、ビルドにCourier Unicode Libraryが必要なようなので、先にCourier Unicode Libraryをインストールします。

# wget http://downloads.sourceforge.net/project/courier/courier-unicode/1.3/courier-unicode-1.3.tar.bz2
# tar xjf courier-unicode-1.3.tar.bz2
# cd courier-unicode-1.3

# ./configure --prefix=/opt/courier-unicode
# make
# make install

./configureの際に、–prefixを指定していつも通りインストール先を変えています。

Courier Unicode Libraryの作業が終わったら、maildropをビルドします。

# wget http://downloads.sourceforge.net/project/courier/maildrop/2.8.3/maildrop-2.8.3.tar.bz2
# tar xjf maildrop-2.8.3.tar.bz2
# cd maildrop-2.8.3

# ./configure --prefix=/opt/maildrop \
    CFLAGS="$CFLAGS -I/opt/courier-unicode/include" \
    CPPFLAGS="$CPPFLAGS -I/opt/courier-unicode/include" \
    LDFLAGS="-L/opt/courier-unicode/lib"
# make
# make install

こちらも./configureの際に、–prefixを指定していつも通りインストール先を変えています。
Courier Unicode Libraryを/opt/courier-unicodeにインストールしたので、include pathとlibrary pathを追加しています。ライブラリは標準のパスにインストールしないと少し面倒ですね。

Courier Unicode Libraryがないと怒られたりしましたが、インストール作業自体は簡単です。
Postfixではmain.cfで”mailbox_command = /opt/maildrop/bin/maildrop -d ${USER}”という感じで使います。

OpenSSHでユーザーのhomeをChrootDirectoryにしている場合、homeのオーナーがrootでなければChrootできないですが、この場合にはmaildropは”Home directory owned by wrong user.”と言って動作しません。
homeディレクトリのオーナーはユーザーにしましょう。ChrootDirectoryは仕方ないので/homeにします。

ユーザーごとのprocmailの設定は.procmailrcに書きましたが、maildropは.mailfilterに書きます。
maildropの設定ファイルの方が内容はわかりやすいですね。

以下、.mailfilterの設定例。
重複メールを消す場合
(dovecotだとMaildriの中にある.から始まるファイルはIMAPのメーラからフォルダに見えてしまうので注意)

`/opt/maildrop/bin/reformail -D 8192 $HOME/Maildir/duplicate.cache`
if ( $RETURNCODE == 0 )
    exit

SpamAssassinに渡す場合

xfilter "/usr/bin/spamc"

SpamAssassinにSPAM判定されたメールをSPAMフォルダに入れる場合

if ( /^X-Spam-Flag:.*YES/ )
{
	to "$HOME/Maildir/.SPAM"
}