2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Procmailで悪質なエロSpamをブロックする!

SPAM系広告メールの宣言が「!広告!」から「未承諾広告※」に随分前に変更された。俺としてはとりあえず、「未承諾広告※」とか「未 承 諾 広 告 ※」という文字列を見つけたら消しぃ~!のレシピを研究してみた。さらに、その応用で最近非常に多い、hotmail.comyahoo.co.jpから来るむかつくエロSpamを撃退したい。


1.なぜ、こんな善人にエロSpamが来るのか(笑)?
未承諾広告で配信されるSpamメールは未だかわいい方である。
みなさんはメーリングリストとか他人のサイトの掲示板への書き込みとかすると思う。いや、それをどうこう言ってるのではない。メーリングリストの投稿内容を公開しているメーリングリストなどは投稿者のメールアドレスをグローバルに公開していると言うことだ。それと、他人のサイトのBBSに書き込んだときにメールアドレスをおっこどしてくればそれもグローバルに公開していると言うことになる。そういう、インターネットにおっこちっているメールアドレスを根こそぎゲットできるソフトでSpam業者は他人のメールアドレスを専門に収集してる(時にはそれを業者間で売り買いする)。そして、それらのメールアドレス宛に一斉にエロリンクURLを記載して配信して、受信者がアクセスするように誘発する。そして後は架空請求が如く脅しをかけるのであろう。そういう汚いやり方がSpam業者の手口である。人のついうっかりの弱みにつけ込んで金にする非常に卑劣で汚い奴らである。実は俺ではないが俺の知り合いが先日、この汚いやり口に引っかかった。大事には至らなかったが、とてもいやな思いをしたそうである。
俺の場合は、過去にメーリングリストに加入していてその投稿が今でもログとして残っている。そのログがネットに公開されていてそこに有るメールアドレスがSpam業者にゲットされているんだと思う。


2.完全なブロックは不可能です(-.-;)
未承諾広告もそうだが、俺は現在それよりもタダメールのアカウントから送られてくるエロSpamの方が深刻な問題である。敵もさるもの、hotmailとかyahooとかのタダメールを巧妙に利用してエロサイトのリンク情報Spamを送ってくる。無償メールのシステム自体に問題があるとは思うが、いくらでもメールアドレスがタダで作れてしまうのでSpam業者はウハウハである。メールアドレスでブロックしようと思っても、@以前のユーザIDの部分をいくらでも変えて来るのでいたちごっこである。また、ドメインでブロックすると本来のhotmailを使ってる友人のメールもブロックされてしまう(-.-;)。したがって、完全にブロックする方法は今のところ無い。俺が考えたブロック方法は、 Procmail でブロックする方法と ベイジリアンフィルタ を使ったブロック方法である。ここで説明するのは、前者の方である。
ここで、Fromヘッダーでブロックするのは無理であることは前を読んで分かると思う。したがって、subjectに「いかがわしい文字列」が有ったら削除。と言う方法を取ることにした。


3.レシピを研究する
以下では、Subjectにエンコードされた文字列が含まれていれば、環境変数 $MATCH にサブジェクトを格納したうえで、 nkfを使いパラメータ”nkf -meZ2″ によって MIME のデコードを行い、さらにEUC への変換を行い、さらには全角から半角への変換を行っている。 sed は [ ] 内で指定した空白やタブ、改行文字などの制御文字を置換によって消去している。そして最後に簡略された文字列に対して egrep により正規表現を用いたマッチングを行っている。もちろんこの場合のレシピファイルの文字コードは EUC である。尚、Procmailのセットアップと全体の詳細設定方法は以下のサイトを参照してほしい。このレシピは設定の部分的に必要なところを紹介するだけである。
但し、nkfを必ずセットアップしておくこと。俺は馬鹿なのでnkfがてっきりセットアップされているものとしてprocmailを動かしていた(;-_-;)全くアホである。

Procmail関連ネタ :
Procmailソースインスコ!

Postfixのセキュリティパラメータ!

1)「未承諾広告※」と言う文字列が書かれている場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -meZ2 | sed ‘s/[[:space:]]//g’ | egrep ‘.*未承諾広告※.*’
/dev/null

2)「未承諾広告」と言う文字列が書かれてた場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘.*未承諾広告.*’
/dev/null

3)ときに、’※’と’*’を間違えている場合(お馬鹿な業者である)
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -meZ2 | sed ‘s/[[:space:]]//g’ | egrep ‘未承諾広告[※*]’
/dev/null

4)レシピが EUC で保存されている場合
:0
* ^Subject: *\/.*
* ? echo “$MATCH” | egrep ‘韻壱’
/dev/null

5)「!広告!」と書かれていた場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -meZ1 | sed ‘s/[[:space:]]//g’ | egrep ‘!広告!’
/dev/null

6)5)のレシピでの「!」が半角全角両方の場合や、「広告」の前後(間)に半角全角のスペースが入る場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -meZ1 | sed ‘s/[[:space:]]//g’ |egrep ‘!.*広告.*!’
/dev/null

7)とにかく「広告」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘広告’
/dev/null

8)とにかく「エロ」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘エロ’
/dev/null

9)とにかく「制服」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘制服’
/dev/null

10)とにかく「セックス」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘セックス’
/dev/null

11)とにかく「マンコ」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘マンコ’
/dev/null

12)とにかく「巨乳」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘巨乳’
/dev/null

 

13)とにかく「女子高生」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘女子高生’
/dev/null

14)とにかく「女子大生」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘女子大生’
/dev/null

15)とにかく「セーラー服」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘セーラー服’
/dev/null

16)とにかく「オナニー」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘オナニー’
/dev/null

17)とにかく「ピンク」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘ピンク’
/dev/null

18)とにかく「激写」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘激写’
/dev/null

19)とにかく「ヌード」って書かれてたら全消しにする場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:.*\/.*
* ? echo “$MATCH” | nkf -me | egrep ‘ヌード’
/dev/null

以上

コメント