<<IE7インストール>> |
やっぱりIE6に戻しました>>
2006年11月08日
gtech-simscanを改良
SPAM対策としてgtech-simscanを使用していたのですが、DSPAMの異常終了を検出できず、空のメールが送られる(メール本文が行方不明になる)現象が発生したので使うのを中止していました。DSPAMの異常終了はDSPAMのデータベースが壊れたことが原因です。データベースが壊れた原因はわかりませんが、おそらくプログラムのバグでしょう。ストレージエンジンにhash_drvを使ってはダメなんだろうなぁ。。。どこのサイトをみてもhash_drvを使わずmysql_drvを使っているのはこのためでしょう。
プログラムのバグにガッカリして暫く放置していたのですが、最近SPAMが増えてきたので、gtech-simscanのソースコード(Cで書かれています)を解析してみました。解析の結果、
vfork() → execve() → waitpid()
という手順でDSPAMを呼び出しているのですが、waitpid()のあとにstatusのチェックが甘いのが原因のようです。WIFEXITED(status)が真のとき、WEXITSTATUS(status)で終了コードを拾うようにコードを追加したら上手くいきました。
DSPAM以外のSpamAssassin等の外部プログラムを呼び出す手順も同様の処理なので、手を入れないと異常終了したときに泣きを見ますね、たぶん。。。
エラー処理が甘いプログラムは結構多いかもしれません。
コメント
コメントはまだありません
<<IE7インストール>> |
やっぱりIE6に戻しました>>

