« | Home | »

2006.07.29

Spamメール対策

メールを良く使う人は誰でも「迷惑メール」に悩まされていることでしょう。
プロバイダーのメールアカウントを使っている方は、最近ではプロバイダーが「迷惑メール」対策サービスを提供しているので、それらを利用されている方も多いと思いますが、自前でメールサーバを立てていると、自分で防ぐ以外に方法はありません。 以下に小生のサーバで行っている対策について記述します。

1. accessファイルで制限

FreeBSDでは/etc/mailにaccessというファイルがあるので、この中に制限したいメールアドレスを書きます。

From:hotmail.co.jp                    REJECT ・・・・・・・?
tw               REJECT・・・・・・・・?
From:abcdxyz@        REJECT・・・・・・・・?
From:xyz@aaa.bbb.com        REJECT・・・・・・・?

などですが、上の例の?ではhotmai.co.jpから来るメールを全て拒絶しますし、?ではtw(台湾)からくるメールは全て拒絶します。
?はドメイン名によらず、abcdxydのアカウント名もつメールを拒絶するもので、fuck@とかpussy@などのエッチなアカウント名を拒絶するのに便利です。
?はずばり決め打ちでの拒絶例です。
しかし、知り合いでhotmailを使っている、台湾に友人がいるなどのときは困りますので、知人、友人だけは通すように設定します。 下記は例外を付けた例ですが、chijinn, yuujinをそれぞれの方のアカウント名とします。

chijin@                     RELAY
yuujin@              RELAY
From:hotmail.co.jp              REJECT
tw                  REJECT
From:abcdxyz@              REJECT
From:xyz@aaa.bbb.com            REJECT

これで、まずchijinn@, yuujin@が評価され、それ以降の設定によらず受け取れます。
また、REJECTの変わりに 550 User unknownと書けば相手には受け取れない理由として
User unknownとして通知されます。
もちろん、特定アドレス向けを拒絶することもでき、

To:stuv@xxxx.cccc.co.jp         REJECT

と書くことも出来ます。
accessのファイルが出来たら、sendmailが参照できるようにするため、access.dbを作成し、sendmailを再起動すれば設定が反映されます。

# makemap hash /etc/mail/access < /etc/mail/access
# kill -HUP <PID>

<PID>はsendmailのPIDで cat /var/run/sendmail.pidで番号を調べておきます。

2. Greet Pauseの設定

spamメールの送信者は次々と新しいアドレスで送りつけてくるのでaccessによる制限だけでは、なかなか防げません。
そこで、有効なのがGreet Pauseを入れるという方法です。
Grret Pauseを理解するために、メールの送受信のやり方を知る必要がありますが、例えばabc@xxx.yyyy.comにメールを送信するときは、送信側のサーバが相手側にメールを送信しても良いか問い合わせ、相手側から受け取れる旨の返事を待って実際のメールを送信します。
この相手からの返事をグリーティングメッセージと呼んでいます。
ところが、グリーティングメッセージは相手のメールサーバが忙しいと返事が遅れますので「迷惑メール」の送信者は数を稼ぐために、グリーティングメッセージを待つことなく勝手にメールを送り出します。
そこで、メール送信の問い合わせがあったとき、グリーティングメッセージをわざと少し遅らせ、返事を返していないのに勝手に送りつけてくるメールは「迷惑メール」と判断して捨ててしまうようにします。
通常のメールサーバなら1〜2分程度でも問題なく待ってくれるのですが、小生のところではとりあえず5秒遅らせることにしました。
それでは、設定ですが、簡単です。 sendmailにはGreet Pause機能が用意されています。
/etc/mailにsendmail.mcの名前のファイルがあるので、次の1行を追加します。

FEATURE(`greet_pause',`5000')dnl

mSec単位なので、5000で5秒遅らせることになります。
あとは、以下のようにfreebsd2.mcからfreebsd2.cfを作ってfreebsd2.cfをsendmail.cfにコピーしsendmaiを再起動でお終いです。 /etc/mailディレクトリー内で作業します。

# make freebsd2.cf
# cp freebsd2.cf sendmail.cf

効果はテキメンでした。 ほとんと拒否できています。
なお、デフォルト値は5秒ですが、acccessに以下のように書いておくと、特定のアドレスを0にしたり、もっと大きくしたり出来ます。

GreetPause:nakama.yoiserver.co.jp 0
GreetPause:abc.xyz.co.jp                 200

はっきりと問題ないと分かっているサーバは0にしておくのもエチケットでしょうか(相手の処理を遅らせるので)。

コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)