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にその旨記録するので、ちょっとうざったい。再起動の間隔を設定する手段は無い。どれも作者は直す気なしと。