Jay's Room

思ったこと、感じたこと、未来の自分に伝えたいことを記していきたい

qmail-scannerからsimscanに変えてみる

今までは qmailのwrapperにqmail-scannerを使っていたけど、
Perlのアップグレードをした際に調子が悪くなったりしたし、
Perlスクリプトのwrapperってオーバーヘッドが気になって、
なんか他にいいのはないかなと探してみたら、
simscanというのがあるらしい。

早速自宅の環境で試すことにした。

参考にしたのはこちら。
BSD にくびったけ - (qmail)simscan
にぐるの日々 | qmail with simscan on FreeBSD
しかし日本語の情報が少ないなー。
普通はqmail-scanner使うもんな。

まずはsimscanユーザ・グループを追加

# groupadd simscan
# useradd simscan -g simscan -s /bin/false

spam や感染したメールを保管するディレクトリを作成する

# mkdir /var/spool/quarantine
# chown simscan.simscan /var/spool/quarantine

tarを解凍後 configure

$ ./configure --enable-custom-smtp-reject=y --enable-per-domain=y --enable-attach=y --enable-spam=y --enable-spam-hits=20 --enable-quarantinedir=/var/spool/quarantine --enable-received=y --enable-clamavdb-path=/usr/local/share/clamav/
$ make
# make install

ドメインごとにSPAMチェック・ウィルスチェックをするための設定をする。
# vi /var/qmail/control/simcontrol

soph.jp:clam=yes,spam=yes,spam_hits=20.1,attach=.com
:clam=yes,spam=no,attach=.com

configureオプションに
--enable-custom-smtp-reject=y
を設定したので、qmailにパッチを当てる。
そのままパッチをあてると失敗してしまったので、
失敗した部分だけ手パッチする。
qmail.c.rejが出来ているので参照。

--- 14,43 ----
{
int pim[2];
int pie[2];
+ int pierr[2];

if (pipe(pim) == -1) return -1;
if (pipe(pie) == -1) { close(pim[0]); close(pim[1]); return -1; }
+ if (pipe(pierr) == -1) {
+ close(pim[0]); close(pim[1]);
+ close(pie[0]); close(pie[1]);
+ close(pierr[0]); close(pierr[1]);
+ return -1;
+ }

switch(qq->pid = vfork()) {
case -1:
+ close(pierr[0]); close(pierr[1]);
close(pim[0]); close(pim[1]);
close(pie[0]); close(pie[1]);
return -1;
case 0:
close(pim[1]);
close(pie[1]);
+ close(pierr[0]); /* we want to receive data */
if (fd_move(0,pim[0]) == -1) _exit(120);
if (fd_move(1,pie[0]) == -1) _exit(120);
+ if (fd_move(4,pierr[1]) == -1) _exit(120);
if (chdir(auto_qmail) == -1) _exit(61);
execv(*binqqargs,binqqargs);
_exit(120);

qmailを再コンパイル後インストール

SPAM・ウィルス定義情報DBの作成
crontabで更新の設定もする。


# /var/qmail/bin/simscanmk -g
# crontab -e
以下の行を追加
#simscan dbrefresh
9 * * * * /var/qmail/bin/simscanmk -g > /dev/null 2>&1

インストール後のテスト

$ QMAILQUEUE=/var/qmail/bin/simscan SIMSCAN_DEBUG=2 echo "To: foo@example.jp(テスト送信先のメールアドレス)" | /var/qmail/bin/qmail-inject

テストメールの送信先にメールが届けばテスト完了

vpopmailの設定を変更

# vi /home/vpopmail/etc/tcp.smtp
127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"
:allow,QMAILQUEUE="/var/qmail/bin/simscan"

# tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp

あとは、qmailの起動スクリプトの該当部分を以下のように変更

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

QMAILQUEUE="/var/qmail/bin/simscan"

メールのヘッダーに以下のようなものがあれば正常に動いているのが確認できる。

Received: by simscan 1.1.0 ppid: 12780, pid: 12783, t: 0.0834s scanners: attach: 1.3.1 clamav: 0.90.2/m:43/d:3251 spam: 3.2.0

ヘッダに出てるが、メールのスキャンがものすごく早くなった。
qmail-scannerでは1通あたり1〜2秒かかっていたが、
simscanに変えたら0.1秒弱ぐらいでスキャンが終わっている。

それに、変えてからメールの送信も早くなったような気がする。

まだ事例が少ないのでトラブったときが不安だけど、
とりあえずこのまま使ってみようと思う。

Posted by Jay at 2007年5月17日 00:53 | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク | CLIP!
このカテゴリの最新エントリー
08/08/23 - MovableType Perlのパスを一括変換
08/07/06 - CentOS 5.2 アップグレード
08/06/28 - サーバ再開
- サーバ止まります
08/06/09 - ハードディスクが壊れました

この記事に対するコメント

この記事に対するコメントはまだありません。


コメントを投稿する






この記事のトラックバックURL


この記事に対するトラックバック

この記事に対するトラックバックはまだありません。



Made with dreamweaverMade with fireworksPowered by Movable Type 4.25Powered by Wandering Windbeta_tester.gif
Copyright : [Articles] (C) Jay's Room All Rights Reserved.
[Comments/Trackbacks] ... Authors of those have rights.