qmail + qmail-scanner + Clamav + SpamAssassin
うちのサーバーでも、新しいのはみんな Postfix にしてるし。
でも、高速、セキュアな MTA として、 Postfix と qmail が人気を二分していた頃がありました。
その頃に qmail で構築した MTA が今でも現役バリバリで稼動しており、 大量のユーザーを抱えているため、なかなか移行できない。。というケースに陥いった、うちのメールサーバー。
qmail でも、いろいろパッチを当ててやれば、まだまだ十分使えるのですが、Postfix に比べて機能不足は否めません。。。
いろいろ調べたあげく、いまさらながら、qmail-scanner + Clamav + SpamAssassin で、ほぼ満足いくようなメールサーバーが構築できたので、簡単にまとめておきます。
導入は、ほとんど ports を使っているので、詳細は省略。。。要点のみです。
また、 portupgrade を使っているので、portinstall の場合とか読みかえてください。
- まず、suidperl が必要なので、Perl5.8 を ENABLE_SUIDPERL=yes オプションをつけてインストール。
# portinstall -Cc -m ENABLE_SUIDPERL=yes lang/perl5.8
- - FreeBSD4.x系は、ports の Perl を使うように変更
# use.perl port
- Clamav と SpamAssassin をインストール
# portinstall -Cc security/clamav # portinstall -Cc mail/p5-Mail-SpamAssassin
- qmail を WITH_QMAILQUEUE_PATCH=yes オプション付きで再構築
# portupgrade -Cc -m WITH_QMAILQUEUE_PATCH=yes mail/qmail
- qmail-scanner をインストール。SpamAssassin と Clamav を使うように自動認識してくれるはず。してくれなかったら、起動してから再コンパイルしてみましょう。。
#portinstall -Cc -m QMAILSCAN_NOTIFY=recips,admin mail/qmail-scanner
- 各種初期設定。。
/etc/rc.conf に追加
clamav_clamd_enable="YES" clamav_freshclam_enable="YES" spamd_enable="YES"
clamd を qscand で動作するように変更- /usr/local/etc/clamd.conf
User clama を User qscand に変更
- /var/run/clamav の所有者を qscand に変更
# chown -R qscand:qscand /var/run/clamav
- 以下を /usr/local/etc/rc.d/qmail.sh と tcpserver の起動スクリプトに記載
PRIFIX=/usr/local export QMAILQUEUE="${PREFIX}/bin/qmail-scanner-queue.pl"
- /usr/local/etc/clamd.conf
- 各デーモンを起動
# /usr/local/etc/rc.d/qmail.sh restart # /usr/local/etc/rc.d/clamav-clamd.sh start # /usr/local/etc/rc.d/clamav-freshclam.sh start # /usr/local/etc/rc.d/sa-spamd.sh start
これでほぼ完了。。 /var/log/maillog を眺めて、エラーログがでてないかどうか確認しましょう。 qq temporary problem (#4.3.0) っていうのを返したり、 clamscan: corrupt or unknown ClamAV scanner error or memory/resource/perms problem - exit status 50 って出る場合は、だいたい permission 関係のトラブルでしょう。。 suidperl とか、 ちゃんと clamd が qscand で動いているかとか確認しましょう。 - あと、SpamAssassin は、 デフォルトで root の .spamassassin を見にいくので、-u username オプション付で起動して、ユーザーを指定したほうが良いでしょう。。