server

S25R/SPAM対策その4

紆余曲折の末、qmail+S25Rパッチはホワイトリストのメンテナンスが異常に辛い事が分かり、さとうさん@ジーワークスにパッチを書いて貰ってgreylistを使うことに落ち着いています。

困ってるひとが沢山居るはずですからこれのqmail版パッチを公開して欲しいと思います。>さとうさん

なづけて
qmail用S25R+greylistingパッチ
そのまんまかー。

S25R/SPAM対策その3

S25R/SPAM対策ですが実装も簡単で効果も高いのですが、やはりホワイトリストのメンテナンスが肝ですね。

拒否リストを整形して日々チェックしないと不達事故が起こります。

これを参考にして再送を繰り返した回数順に表示させるスクリプトを動かして日々メンテナンスしています。(げっそり)


#!/bin/sh
echo "Content-Type: text/plain"
echo
echo "Mail reject log"
echo
cat /var/log/all.log | \
grep 'mailfrom' | \
gawk > tmp.txt '
BEGIN {
count=0
}
{
printf "%s %2d %s %s\n", $1, $2, $3, substr($0, match($0, /mailfrom/))
++count
}
END {
print "\ncount =", count
}
'

sort +4 < tmp.txt > tmp-sort.txt
cat tmp-sort.txt | uniq -f 4 -c | sort -r

ウィルススキャン

もしかしてS25R方式によるSPAM対策をしておけば、メイルサーバに仕掛けたウィルススキャンも不要かまたはウィルススキャナサーバの負荷が非常に軽くなるのかもしれません。

今世間で出回っているウィルス・ワーム付きメイルは丸腰パソコンが感染して、勝手に自力でMXレコードを引いてSMTPセッションを張りウィルス・ワーム付きメイルを送りつけて来るのが大部分。

このSMTPセッションはまさにS25R方式の拒否ルールにそのまま当てはまるケースが大部分のハズ。となると、やっぱりこの方式が現状ではもっとも効果的で低コストなSPAM対策なんでしょうね。

一番のコストはホワイトリストのメンテナンスだったりします。

S25R/SPAM対策その2

自社ドメイン宛メイルに仕掛けたS25R SPAM対策ですが、昨日一日(24時間)で1129通をSPAMとして受け取り拒否してくれました。

ホワイトリストのメンテナンスとしては初日と言うことで8個のルール追加。

週末と言うこともあり明日から1週間がホントの勝負(?)と言うことになるでしょうか。

ベイジアンフィルタ(bsfilter)に引っかかるゴミメイルも激減。そのヘッダを見るとまだ古いMXに送りつけてるのが殆どですから、ベイジアンフィルタを外してしまってもOKかな?と思えるレベルです。

SPAMも来なくなると寂しいものです。(笑)

SPAM対策その後

結局副作用の大きかったantibadmailを諦め、ベイジアンフィルタだけに頼っていたSPAM対策ですが、ちょっと前から気になっていたS25R(Selective SMTP Rejection)と言う方式を試してみました。

S25R(Selective SMTP Rejection)

を実装して自社ドメイン宛のメイルだけMXを振り向けテスト中です。

結果から先に言うとホワイトリストのメンテナンスは面倒ですが、SPAMをブロックするのに非常に効果が高く満足しています。以前に試したantibadmailより良さそうです。 ゴミメイルとウィルス・ワーム付きメイルが激減!

インストールは以下のパッチをqmailにあてます。

続きを読む

エアコン

サーバルームのエアコン様、そろそろ3年を経過してヘタってきたので高効率のものをもう一台追加しました。

実際の工事は業者さんなのですが、この暑いさなか私もずっと立ち会いしてました。あつー。

工事が終わったら強力になったエアコン様のお陰でサーバルームもより一層寒くなりました。

antibadmailを試してみました。

SMTPのセッションだけでSPAMかそうでないかを有る程度判定するsmtp wrapper、antibadmailを試してみました。これでゴミメイルをウィルスチェックするなど無駄な動作を減らすことができます。

qmailとセットなら実に簡単。

$ cvs -d :pserver:anonymous@yatex.org:/qmail co antibadmail

でソースが取ってこれたら

$cd antibadmail

$ su -
Password:
# cd /home/hogehoge/antibadmail/
# make all install

でインストールは完了

# cd /etc/
# vi syslog.conf

local1.info /var/log/smtp-stat
を追加

# vi newsyslog.conf

/var/log/smtp-stat 640 7 * @T00 Z
を追加したら

# cd /var/log
# touch smtp-stat
# chmod 600 smtp-stat

してlogファイルを作っておいてから

# killall -1 syslogd

qmailの起動スクリプト
/var/qmail/rc に

/usr/local/bin/antibadmail \
/var/qmail/bin/qmail-smtpd 2>&1 \

みたいに qmail-smtpdを動かす直前にantibadmailを記述すればよい。

起動スクリプトを動かして(動いていればいったん停めて)から
/var/log/maillogや /var/log/smtp-statを見て機能しているかどうか確認。

ログを見るといかにも怪しいゴミメイルは Rejectされてる様子がよく分かる。

細かい設定は

http://www.gentei.org/~yuuji/software/antibadmail/index-j.html
を参照の事。

計算機名

計算機って言うと私たちネットワーク管理・サーバ管理を商売にしている人たちにはサーバやワークステーションを表すごく一般的な言い回しだと思ってるんですが、今日の人には通じませんでした。

当社がサーバ管理でお世話になっているお客さんのところに、ファイアウォールの設置で訪れた某業者さん(女性)には、まったく通じません。

某業者:「FTPしたいんですが、できないのでどうにかしてください。」
私:「どの計算機に対してFTPしようとしたのでしょうか?」
某業者:「計算機?」
私:「はい。計算機名を教えてください。」
某業者:「計算機名? 何ですか?」
私:「へ? ですから計算機の名前です。」
某業者:「は? IPアドレスとかですか?」
私:「IPアドレスでもよいですが、計算機名って分かりませんか? FQDNとか。」
某業者:「・・・・他に話の分かる人はいないんですか!」(なんか逆ギレ!)
私:苦笑(話がわからないのはアンタだろ・・・)

仮にもファイアウォールを設置しにくるような人なら計算機ってコトバくらい通じると思ったのが間違いのもとなのかも。 そのひとはきっと「なんちゃって技術者」だったんだな。(と思うことにしよう。) それとも、もしかして計算機なんてコトバは死語なのか?

いや・・・さっきの某業者に「サブネット」を尋ねても「255.255.・・・」とか言ってたからヤッパなんちゃって技術者でしょう。(それはサブネットじゃなくとサブネットマスクだろーがっ。)

いつもより疲れた一日でした。

bsfilterでヘッダにspamフラグを付加

【システムアカウント宛】(vpopmail仮想アカウントではない)

/home/hoge/bsfilter をおいておき実行フラグを立てる。

鍛えた.bsfilterを /var/tmp/.bsfilter に置いて
chmod 777 .bsfilter
cd .bsfilter
chmod 666 *
しておく。

cd /home/hoge
ln -s /var/tmp/.bsfilter .bsfilterとリンクを張る。

.procmailrc の内容

LOGFILE=/dev/null
#LOGFILE=$HOME/procmail.log
MAILDIR=$HOME/Maildir

:0fw
| $HOME/bsfilter --auto-update --pipe --insert-flag --insert-probability

:0
$HOME/Maildir/


.qmail の内容

|IFS=' '&& exec /usr/local/bin/procmail -f-||exit 75 #

にしておく。

これで .qmailを見て、到着したメイルは全てprocmailに渡り.procmailrc(レシピ)に沿って処理。
レシピは
・ログは取らない
・全てのメイルは$HOME/bsfilterに渡されフラグ付加後、$HOME/Maildir/ 以下に配送される。
全部配送するのではなくSPAM用のアカウントなどに振り分けることもこの後のレシピに追記することにより可。


【vpopmail仮想アカウント宛】

/home/vpopmail/.bsfilter (学習DBディレクトリ)
/home/vpopmail/bsfilter (実行スクリプト)

を置いて vpopmail:vchkpwの持ち物にしておく。(ディレクトリはchown -R オプションを付けること)

/home/vpopmail/domains/hoge.com/.user1procmailrc

#LOGFILE=/dev/null
LOGFILE=$HOME/domains/hoge.com/procmail.log
MAILDIR=takamura/Maildir

:0fw
| $HOME/bsfilter --auto-update --pipe --insert-flag --insert-probability

:0
$HOME/domains/hoge.com/user1/Maildir/

をこのように設定し、
.qmailには
|IFS=' '&& exec /usr/local/bin/procmail -m ./.user1procmailrc -f-||exit 75 #

と書いておく。-m ./.user1procmailrcと言うのがミソ。 これを書かないと$HOME/.procmailrcを読みにいくので動かない。

それにつけてもアカウントごとに .user1procmailrcを書かなきゃならんとは実に面倒。もっと楽な方法は無いものか。。。

HDDは壊れる

当たり前のことなんですが、HDDはいつか必ず壊れるものです。先週は2個のHDDが故障しえらい目に遭いました。

IDEミラリングユニットはHDDが完璧(?)にご昇天なさってくれれば、もう一台のHDDだけで動き続けてくれるのですが、今回のケースだととりあえず起動するけどあるセクタだけ読み込みエラーを起こすというものでした。fsckもcleanで通っちゃうだけに発見が遅れました。(あとでゆっくりlogを見るとしっかりI/O read errorが記録されていましたが。)

結局2台(HDDにして4個)を全て交換することで事なきを得ました。何も障害がなくてもHDDは定期的に交換しなきゃならないのかも。

でもなー経験上ディスク障害を引き起こすのはLinuxマシンだけなんですよ。FreeBSDの方が圧倒的に台数が多いのにディスク障害によるサーバ停止は無いんです。 なんでかなー。
Recent Comments
QRコード
QRコード
  • ライブドアブログ