owls-nest.netではMTAとしてqmailを使っています。
qmailは意外と古くなってしまっていて、
いくつもパッチを当てないと現代的な使用方法に
対応できない問題も出てきてしまってます。
※SPF、アンチウィルスやスパムフィルタとの連携機能など。
Postfixへの移行もありでしょうが、Postfixでもclamd, spamassassinとの連携を
やろうと思ったら、やっぱり別のパッケージが必要になるようで、
それならqmailでいいや、と思いました。
qmailにはメールを配送用スクリプトの.qmailの中で処理する方法があり、
受信用アカウントが限られている場合にはシンプルで簡単です。
ですが、受け取り時にスパム判定などが出来るのであれば、
ログも汚れませんし、うれしいです。
ちょうど、最近、qmailでclamd、spamassassinとの連携に使われてきた
qmail-scannerを置き換える
simscanに出会いました。
Cで書かれており、qmail-scannerがperlで実装されていることから来る性能と
セキュリティの問題を解決します。
■インストール、設定について
インストールは非常に簡単。
よくあるGNU Autotoolsを使ったタイプで、configureの際に
--enable-clamav, --enable-spam,などで連携するパッケージを指定し、
--enable-quarantineや--enable-dropmsgなどで
引っかかったメールの扱いを決めます。
そして、make; make install。
おっと、configure前にuseraddでsimscanを追加しておく必要があります。
# groupadd simscan
# useradd -g simscan -d /var/qmail/simscan -s /sbin/nologin simscan
--enable-per-domainをつかうなら/var/qmail/control/simcontrolに
windows-user@local.domain:clam=yes,spam=yes,spam_hits=8.0
@virtual.domain..domain:clam=no,spam=yes,spam_hits=5.0
:clam=no,spam=yes,spam_hits=8.0
って感じで受け取りユーザごと、ドメインごとの設定を書いて
simscanmkでcdbにします。
# /var/qmail/bin/simscanmk
テストはこんな感じ。
# echo To:root | QMAILQUEUE=/var/qmail/bin/simscan /var/qmail/bin/qmail-inject
simscan: starting: work dir: /var/qmail/simscan/1235480180.547260.26302
simscan: calling clamdscan
simscan: normal clamdscan return code: 255
simscan: calling spamc
simscan: calling /usr/bin/spamc spamc
simscan:[26301]:CLEAN (7.30/8.00):0.1081s::(null):root@local.domain:root@local.domain
simscan: done, execing qmail-queue
simscan: qmail-queue exited 0
ちゃんとspamcを呼び出してますね。
あとはqmailがsimscanを使うように設定します。
環境変数QMAILQUEUE=/var/qmail/bin/simscanを
qmail-smtpdに与えたり、tcprulesを使っていればtcp.smtpd.txtにて
スキャン対象の接続元につけたりです。どちらの方法でもOKです。
127.0.0.1:allow,RELAYCLIENT=""
192.168.1:allow,RELAYCLIENT=""
:allow,NOP0FCHECK="",QMAILQUEUE="/var/qmail/bin/simscan"
RELAYCLIENTでない時にはNOP0FCHECK=""が必要だそうです。
ハマリどころはqmail-scannerと同じく、spamcやclamdをユーザ権限で動かす
場合の各種ディレクトリ、ファイルの権限設定とかですね。
どうにも動かない場合はrootにするのが一番楽です。
ということでqmail-scannerよりも高速になるsimscan、ぜひ使ってみてください。