Courier Mail Server on Debian Squeeze

概要

下記の用件を満たすメールシステムを構築する。

  • MTA,IMAP,Webメール,メールフィルタといったサーバ機能
  • メールフィルタ設定はWebでできるようにする
  • 保存形式はMaildir
  • 拡張メールアドレスのdelimiterが「-」

これを満たすメールシステムはすでに動いていて、Postfix+Cyrus-SASL+Courier-IMAP+Courier-authlib+procmail+SquirrelMailで構築していた。これはこれで盆栽的な楽しさはあったが、ワンストップで全部そろうCourierで構築してみたい。

環境はOpenBlocks600のDebian Squeeze。メールドメインはexample.org。

パッケージの導入

rootで実行する。パッケージに依存関係が定義されていないが、gaminも必要。

# apt-get courier-mta courier-imap courier-maildrop sqwebmail courier-mta-ssl gamin
...
# dpkg -l | grep courier
ii  courier-authdaemon                0.63.0-3                     Courier authentication daemon
ii  courier-authlib                   0.63.0-3                     Courier authentication library
ii  courier-authlib-userdb            0.63.0-3                     userdb support for the Courier authentication library
ii  courier-base                      0.65.0-3                     Courier mail server - base system
ii  courier-imap                      4.8.0-3                      Courier mail server - IMAP server
ii  courier-maildrop                  0.65.0-3                     Courier mail server - mail delivery agent
ii  courier-mta                       0.65.0-3                     Courier mail server - ESMTP daemon

Courier設定ファイル

Courierは1設定1ファイルが基本となっており、設定ファイルが多い。

  • /etc/courier/defaultdomain
example.org
  • /etc/courier/me

SMTP Greetingがこの名前で出る。

obs.example.org
  • /etc/courier/locals
-e localhost
obs.example.org
example.org
  • /etc/courier/esmtpacceptmailfor
obs.example.org
example.org
  • /etc/courier/esmtpd-msa

Submissionポートの設定。SMTP Authを有効にする。下記の行を末尾に追記する。

AUTH_REQUIRED=1
AUTHMODULES="authdaemon"
ESMTPAUTH="LOGIN"

ESMTPDSTART=YES
  • /etc/courier/courierd

下記の行を修正する。

DEFAULTDELIVERY="| /usr/bin/maildrop"
  • /etc/courier/bofh

RFC2045違反をCORRUPTED MESSAGEとして扱わないようにする。携帯メールがこれにひっかかってしまうため。

opt BOFHBADMIME=accept
  • SqWebmail

Apacheにaliasesを入れるだけ。Debian標準の設定ではなにもしなくても使えると思われる。

  • /etc/apache2/sites-enabled/ の設定
    # -- SqWebmail
    ScriptAlias /courier/ /usr/lib/cgi-bin/
    Alias /sqwebmail/ /var/www/sqwebmail/

ユーザ個別設定

ここからは個別ユーザでログインして設定する。

  • ~/.courier-default

hogeユーザでhoge-xxxあっとexample.orgの様な拡張メールアドレスが使えるようになる。 もともとprocmailでMaildirへ配送するように設定していて、今後もprocmailから改宗しない場合は ~/.forwardの内容をコピーしてもOK

|/usr/bin/maildrop

自分だけ読み書きできるようにパーミッションを設定する。このパーミッションにしないと動かない。

# chmod 600 ~/.courier*
  • ~/.mailfilter

maildropに改宗する場合はこちら。 bsfilterでSPAMを排除してから、SqWebmailで生成したフィルタに渡す。

LOGFILE=$HOME/log/maildrop.log
BSFILTER=/usr/bin/bsfilter
BSFILTERHOME=$HOME/.bsfilter
VERBOSE=9

logfile "$LOGFILE"

# -- bsfilter 
xfilter "$BSFILTER -a --pipe --max-mail 500 --min-mail 400  --homedir $BSFILTERHOME"
if($RETURNCODE != 0)
{
   to "$HOME/Maildir/.spam/."
}

# -- chain filter commands defined in SqWebmail
include "$HOME/.mailfilter_sqwebmail"

# -- last resort
to "$HOME/Maildir/."

# -- EOF
  • ~/.mailfilter_sqwebmail

このファイルはSqWebmailが上書きする。

to "$HOME/Maildir/."

自分だけ読み書きできるようにパーミッションを設定する。このパーミッションにしないと動かない。

# chmod 600 ~/.mailfilter*
  • ~/Maildir/maildirfilterconfig

SqWebmailでフィルタ設定を有効にする

MAILDIRFILTER=../.mailfilter_sqwebmail
MAILDIR=$HOME/Maildir

まとめ

  • よかったこと。設定ファイルの場所が/etc/courierに統一された。SqWebmailはSquirrelMailより速い。
  • いまいちだったこと。SqWebmailでメールを送信するとcharsetがUTF-8である。iso-2022-jpだといいのに。読む方は問題ない。常駐プロセスは一時間に一回再起動してsyslogにその旨記録するので、ちょっとうざったい。再起動の間隔を設定する手段は無い。どれも作者は直す気なしと。

参考