山田邦博です。


Masamichi Takatsu <taka2@doga.jp> writes:
> 今回、
>
>>       elsif(/[\200-\377]/io) { &refile(__LINE__,"junk",$n); last;}
>
> これをやろうかどうしようか悩んでたわけですが、手元のメールをちょっと調べて
> みたら、cron の実行結果で、日本語なメッセージ(EUC)を出してたのがそのまま、
> 8bit目が立った EUC で届いてるのがありました。
>
> crontab からの報告は white list に入れておけとか、crontab に「| nkf」 って
> 入れとけ、とか、まあ対策はありますが抜けがあると怖いので、結局、
> [\x80-\x9f\xe0-\xff] として、EUC は通して、Shift_JIS のみ没にすることに
> しました。

LANG=C を入れておけば良いような。(それでもダメなのが私の所にもあるな。)
私は、自分のサイトからの管理用のメイルは専用のアカウントとして、ノーチェッ
クです。 qmail だと簡単。

> ちなみに、私はメール処理の流れとして、
>
> ・ClamAV で、virus チェック 
> ・自前の perl script で、日本語じゃないメールなどを除外
> ・ベイジアンフィルタ(bsfilter)でチェック

私のやり方とはずいぶん違いますね。 私は、基本的に virus チェックはしな
い。  Virus メイルが来たら、必ず 開く 事にしています。 MUA が mew なの
で問題になりません。(実行ファイルをいきなり実行するような馬鹿なソフト
は使いません。) 開いたら、binary を保存して、strings で除いてみる。 記
念に取っておく。(ちなみに、当サイトには Windows マシンがない。)

私の(個人の)サイトでのメイル処理は;
        Router で特別しつこい IP をはねる。
        qmail (ソース書き換えあり)で;
              IP を paranoia チェック(追加)
              bad remote host(追加)
              HELO
              bad mail from/to 等
              good mail to(追加)
                   IP によってはこれらの全部あるいは一部が省略されます。
        これで受け取ってしまったメイルは perl script で;
              文字コード
              サイズ
              Bcc
              添付ファイルの内実行形式のもの
              ついでに HTML メイル
                   等などを、基本的に個別アカウント毎に拒否設定するよ
                   うにしています。(何を拒否するかはアカウントによる)

個人の小さいサイトならではの技で、大きなサイトでは使えないかも。例外設
定がやたら多くなりそうで。

実行形式と HTML を全面拒否にしたら virus メイルはゼロになりました。
ベイジアンフィルタなんぞ糞食らえ。


> 感じです。iso-2022-jp を名乗る Shift_JIS なメールは、文字コードの認識や
> 単語分解がちゃんと出来てなかったのでしょうか。

もし、私が spammer だったら、そんな面倒なことはせんな。 単純に挿入。
charset も決め打ち。 どうせ ゴミ メイルなんだから。


>> もっとも IP 逆引きの手段は MUA でやるのは無理かな?
>
> 私のとこは sendmail を使ってるのですが、Received: を見れば、MUA でも
> 逆引きできるところからかどうかチェックできそうです。
>
> Received: from ほげほげ (逆引き名 [IPアドレス]) by 自分とこのメールサーバ
>
> ってところで、逆引き名が空のを探せばOK。

qmail だと 最初の行に Return-Path: <hogehoge@foo.bar> が付いて来るので
もっと簡単かも。


> 調べてみたら、スパムじゃないメールには、確かに逆引きできないとこからの
> メールはほとんどありません。とはいえ、0 じゃないのが難しいところ。

この例外設定がやらしい所です。 よほど小さいサイトでないとサーバレベル
ではやりにくいでしょう。 私のような個人のサイトでも相当の期間をかけて
(時間はたいしたことないが)地道にやっています。


> 文科省の科学技術週間 ポスタークイズ http://stw.mext.go.jp/20060301/ への
> 応募で届いた「応募受け付けましたメール」が逆引き出来ませんでした。
> ( stw.mext.go.jp → 210.175.225.214 の正引きはできるけどねぇ…)
>
> ダメじゃん文科省。

私に言わせれば、管理の基本が出来ていないだけ。 情報漏洩問題等のレベル
以前でしかないという事。
こんなレベルの管理の所では、何が起こっても不思議ではない。

-...-

先の router での spam IP チェックですが、iptables を使ったパケットフィ
ルタとして以下のようなものを使っています。(抜粋)
外部から smtp が来たら別チェイン(ckspam)に分岐してつかいます。
結構強力です (.cn からと思われるものが多い。) が、地道な設定が必要です。

---

SPAMMERS="/etc/spammers.ip"         # File of IP list of Spammers
   ...
######################
### Check spammers ###
######################
echo -n ".Check SPAMMERS."
if [ -r $SPAMMERS ]; then
    while read ip cmt; do
        ip=${ip##\#*}              # remove comment
        if [ -n "$ip" ]; then
#           iptables -A ckspam -s $ip -p tcp --dport smtp \
#               -m limit --limit 5/min -j LOG --log-prefix "SPAMMER: "
            iptables -A ckspam -s $ip -p tcp --dport smtp -j DROP
        fi
    done < $SPAMMERS
fi
iptables -A ckspam -j RETURN