2007年08月27日

SpamAssassinでspamメール対策 (14/n) : 壊れかけたSpamAssassin

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

今朝のメールチェックでinboxにspamが多い事に気づく。
原因調査と対応の記録。



■原因調査

▼SpamAssassinの動作確認
SpamAssassinのログを調査してみたらrecoveryのメッセージ。
$ tai64nlocal< /service/spamd-ro/log/main/$(tai64nlocal).s | lv
2007-08-27 04:40:28.563005500 [8096] warn: prefork: select returned -1! recovering: Bad file descriptor
2007-08-27 04:40:29.791522500 [8096] warn: prefork: select returned -1! recovering: Bad file descriptor
2007-08-27 04:40:30.793415500 [8096] warn: prefork: select returned -1! recovering: Bad file descriptor
2007-08-27 04:40:31.795259500 [8096] warn: prefork: select returned -1! recovering: Bad file descriptor
2007-08-27 04:40:32.797110500 [8096] warn: prefork: select returned -1! recovering: Bad file descriptor


1. spamdが反応しない
 ↓
2. spam判定をスルーしてしまう
 ↓
3. inboxへメールが入り込む

こう言う経緯。


▼『spamdは起動している?』
$ sudo svstat /service/spamd-ro
/service/spamd-ro: up (pid $(pid)) $(time) seconds


起動している


▼対応優先順位付け
・じっくり原因調査
・一刻も早く復旧

業務に影響が出るので、1秒でも早い復旧を選択。
『spamdを再起動してみて、もしも駄目だったら次を考えよう。』
そう思い、再起動。

$ sudo svc -t /service/spamd-ro
$ sudo svstat /service/spamd-ro


無事、起動して来た。
その後の動作に問題ない。



■メール再判定

inboxに紛れ込んでしまっている。spamが邪魔。
どうにかしたい。さてどうする?


▼対応手順
1. inboxに入っているファイルリスト取得
2. spamcコマンドに-cオプションを付けて実行
3. spam判定された場合、sandboxへ移動

spamcに-cオプションを追加する事で、
終了ステータスコードを利用出来る。


▼spamc -cの終了ステータスコード
$? = 0: ham
$? !=0: spam



▼実行例
$ cd $(HOME)/Mail/inbox
$ mkdir sandbox
$ for i in *; do spamc -c $i || mv $i ./sandbox/; done



▼何故直接spamフォルダへ移動せず、sandboxへ移動するのか
それは、spamフォルダに同ファイル名が存在するケースを避ける為。
一度sandboxへ移動し、sandboxに入ったメールを改めてspamへ移動。
これでファイルが上書きされる事も無く、順番通りにメールが並ぶ。



■独り言
何事も経験


トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔