●シンプルスパムメール対策 SpamAssassin + Qmail-Scanner
 
必要なパッケージ
Qmail-Scanner qmailからアンチウイルスソフトを起動させるモジュールみたいなもの
※以下Qmail-Scannerインストールに必要なパッケージ
・maildrop(apt)
・daemontools(source)
qmailqueue-patch 環境変数QMAILQUEUEを使えるようにするパッチ
SpamAssassin spamチェックソフトウェア
razor Spam判定強化
perl-suid スキャン時に必要とされる
(あんまりよろしくないみたいだけど・・・。デビアンではこんな感じ。)
unzip スキャン時に必要とされる(aptで適当にいれてね)

今回はvpopmailに対応した方法です。qmail + vpopmailはインストール済みという前提です。
 
・SpamAssassinのインストール
Debianはaptにパッケージが存在するので、aptでひょいっといれます。
 
# apt-get install spamassassin
 
その後設定ファイルを変更します。local.cfファイルは、こちらを参考に。
 
# vi /etc/spamassassin/local.cf
※ 必要がある場合は、chownでvpopmailのユーザーに変更
 
さらに起動/etc/default/spamassassinの以下の部分を修正
 
# ENABLED=1
# OPTIONS="-d -m5 -x -v -u vpopmail
 --virtual-config-dir=/home/vpopmail/domains/%d/%l -s /var/log/spamd.log"
※OPTIONSは一文で表示
※補足
このままでは、各ユーザーディレクトリーに、「bayes_toks」「bayes_seen」「auto_whitelist」ができてしまうので、以下の文で無効にできます。
use_bayes 0
bayes_auto_learn 0
use_auto_whitelist 0 ※デフォルトでは有効(1)になってるっぽい

これでspamassassinを起動します。
※ここでspamassassinを起動しないと、後でqmail-scannerをコンパイルするときに正常にspamassassinとの連動ができませんでした。
 
・Qmailにqmailqueue-patchのパッチあて
QMAILQUEUEパッチがあたってない場合は、以下の手順で再コンパイル
/var/qmail/controlに入ってるファイルが初期状態にもどっちゃうかも知れないので、要注意。
 
# cd qmail-1.03/
# patch -p1 <../qmailqueue-patch
# make setup
# make check
# ./config

※補足
一度インストールしている場合は、./configは必要ないみたいです。こいつを実行すると、/var/qmail/controlに入ってるファイルが初期状態に戻るようです。(未検証)
 
・Qmail-Scannerのインストール
まずはdaemontoolsをソースからコンパイルします。aptでdaemontools-installerなるものがあったんですが、うまく動作しなかったので、ソースからやりました。
インストール関係上ルートにpackageフォルダを作る必要があるそうです。/packageディレクトリに対して適切なパーミションを設定します。スティッキービットも付加します。
 
# mkdir -p /package
# chmod 755 /package
# chmod +t /package
               //スティッキービット
 
本体をwgetでとってきて、コンパイル、インストールします。
 
# cd /package
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# tar zxvf daemontools-0.76.tar.gz
# cd admin/daemontools-0.76/
# ./package/install

 
以上の作業で、以下のディレクトリとファイルが作成されます。
 
新たに作成されるディレクトリ
/service
/command
 
作成されるファイルおよびそのシンボリックリンク
/package/admin/daemontools/command/下に実行ファイル
/command/下にそのシンボリックリンク
/usr/local/bin/下にさらにシンボリックリンク
 
また、/etc/inittabファイルの末尾に次の1行が追加されます。
 
# SV:123456:respawn:/command/svscanboot
 
次は、Qmail-Scannerがメールを解析するのに必要なreformimeが含まれている、maildropをインストールします。これはaptでちょいちょいっと。
 
# apt-get install maildrop
 
上手くインストールができたら、Qmail-Scannerのソースをとってきて、インストールします。インストールに必要な、qscandユーザーを追加しますが、ホームディレクトリは任意の場所でOKです。
 
# tar zxvf qmail-scanner-2.02.gz
# cd qmail-scanner-2.02
# groupadd qscand
# useradd -g qscand -s /bin/false -d /var/qmail/ qscand
# ./configure --domain connan.jp --scanners verbose_spamassassin
  --notify admin --install
〜 全てYESでOK 〜
 
※オプション
--scanners
"verbose_spamassassin"
spamassassinの指定
--domain サーバドメイン
--notify ウイルス検知メールの送り先。[none]は無し・[admin]は管理者・[recips]は受信者・[sender]は送信者 ウイルス、スパムは送信者が偽装の場合がほとんどなので[sender]は指定しない方が吉
--install 文字通り
 
※補足
SpamAssassin3.x以上の注意点
デフォルトだと、fast_spamassassinでインストールされるんですが、これだと件名に追記ができないため、--scanners verbose_spamassassinとして認識させないと駄目っぽいです。
ちなみに、local.cfの記述も、
rewrite_header Subject [SPAM]
こんな感じで。

※補足2
デフォルトの状態だと、/var/spool/qscan/qmail-queue.logに膨大にlogが蓄積されるので、
/var/qmail/bin/qmail-scanner-queue.pl にある$DEBUG = '1'を'0'に変更しておきます。

※補足3
Debianの設定ファイルは、「/var/spool/qscan/quarantine-events.txt」ここになります。
ちなみに、ドットが2個入り(例:hoge.xls.exe)のファイルをOKにする場合は、
is-set Policy-FILEDOUBLEBARRELED: Double-barreled extensions disallowed
ここをコメントアウトして、
/var/qmail/bin/qmail-scanner-queue.pl -g
検索用データベースの再構築で適応されます。
 

問題なくインストールが完了したら、/etc/init.d/qmail 起動スクリプトに以下の文を追加しておきます。
 
# vi /etc/init.d/qmail

#!/bin/sh
#
# qmail This shell script takes care
# of starting and stopping qmail.
#
# chkconfig: 2345 80 30
# description: Starts and stops qmail.
# See how we were called.

QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE

 
case "$1" in
start)



 
再起動後チェックコマンドでテストします。
 
# /etc/init.d/qmail stop
# /etc/init.d/qmail start
# ./contrib/test_installation.sh -doit
 
・perl-suidのインストール
Debianはaptにパッケージが存在するので、aptでひょいっといれます。これをいれとかないと、メール送信時に、「451 qq temporary problem」のエラーがでるはず。
 
# apt-get install perl-suid
 
・razorのインストール
 
# apt-get install razor
# razor-client
# razor-admin -d -create -home=/etc/razor
 
これで、受信したメールのヘッダーに、
X-Spam-Status: Yes, score=13.2 required=13.0
こんな感じで付いてればOKだと思います。
 
参考サイト http://nos-takamatsu.ddo.jp/linux/qmail-scanner.html
 
 
●シンプルスパムメール対策 パッチあて
ユーザー名に%、!、複数の@を含む中継はリレーされてしまう穴があったので、それを埋めてくれるパッチをあてましょう。
 
http://www.qmail.org/qmail-smtpd-relay-reject パッチの場所
 
wgetでおとして、パッチをあてて、qmailを再コンパイルです。
# wget http://www.qmail.org/qmail-smtpd-relay-reject
# cd qmail-1.03
# patch -p1 < ../qmail-smtpd-relay-reject
# /etc/init.d/qmail stop
※ここで止めておかないと、コンパイルの時に「bin/qmail-lspawn: text busy」などと怒られる
# make setup
# make check
# ./config
 
ここでもqmailを再コンパイルするので、内容が分かるように/var/qmail/controlの中身はバックアップしておきましょう。
 
●IP制限でSMTP接続を禁止する

vpopmailを導入している場合、以下のファイルにdenyしたいIPアドレスを追記し、tcp.smtp.cdbを再度作り直します。
# cd /home/vpopmail/etc/
# vi tcp.smtp
 
***.***.***.***:deny
 
# /usr/local/bin/tcprules ./tcp.smtp.cdb ./tcp.smtp.tmp < ./tcp.smtp

 
これでtelnetなどでのSMTP接続を拒否することができます。
 
●バウンスメールの禁止(vpopmailの場合)

vpopmailを導入している場合、/home/vpopmail/domains/hoge.jp/.qmail-defaultファイルに、
| /home/vpopmail/bin/vdelivermail '' delete
の一文を追加。unknowメールも届くなるので、注意してください。