スパムメール対策

.com ドメインをとって自宅でサーバを運用するようになってから、 スパムメールが非常に多くなってきた気がします。 そこで、サーバ側でスパムメール対策を行うことにしました。
【環境】
うちのサーバは、Fedora Core 4 で、MTA は postfix にしています。 メール保存形式 は mbox。 必要なソフトである、procmail と spamassassin はインストールされているものとします。
検知した スパムメールは、spam というユーザを作成の上、そのユーザのメールボックスへ転送させることにしました。
【spamassassin の設定】
基本的に私一人しか使ってないサーバなので、 ユーザ個別設定でなくサーバ全体の設定としちゃいます。
設定するのは定義ファイルの更新のみ。 TLEC さんから、 個人ユーザ用 SPAM 避け spamassassin のユーザ定義ファイル をいただいてきます。
ユーザ個別に設定したいなら、 このファイルを ~/.spamassassin/user_prefs としてコピー。 サーバ全体として設定するなら、 このファイルを /etc/mail/spamassassin/local.cf としてコピーします。私は後者を選択しました。
【.procmailrc ファイルの設定】
自分のホームディレクトリ直下に .procmailrc というファイルを作成し、 下のような内容にします。
PATH=/bin:/usr/bin:/usr/local/bin
DEFAULT=/var/mail/papepo          ← 自分の mbox ファイル名です。例は papepo ユーザ
LOGFILE=$HOME/procmaillog        ← procmail のログファイル名
LOCKFILE=$HOME/.lockmail
:0fw
*!^X-Spam.*
|/usr/bin/spamassassin
               ← 場所が違ったら修正しましょう^^
:0
*^X-Spam-Status: Yes
                    ← スパムメールと判定されたら、
! spam                                              ← spam ユーザへメールを転送してます。
【.forward ファイルの設定】
ユーザのホームディレクトリ直下に .forward というファイルを作成し、 下のような内容にします。
“|IFS=’ ‘ && exec /usr/bin/procmail -f- || exit 75 #USER”
procmail の場所が違ったらパスは変更します。
あなたのユーザ名が、 papepo であれば、 末尾の #USER を #papepo に変更します。
ダブルクォーテーションも含めて、 .forward へ書き込みます。
とりあえずコレで完了。 スパムと判定されたメールは、 spam ユーザのメールボックスに送られるので、 たまにチェックして問題なければまとめて削除しちゃいましょう。 たまにスパムでないのも間違って振り分けられちゃう場合もあるので、 念のためチェックは必要。
【スパムの学習】
スパムメールをまとめておき、 それを学習させることにより振り分けの成功率を高めることができます。 私は次の方法でやってます。
spam ユーザに配信されたメールのうち、 スパムメールと思われるものだけを残し、 あとは mbox のまま保存しておきます。
私は秀丸メールを使ってます。 spam ユーザ向けに新たにアカウントをひとつ作成しましょう。 そして、 spam ユーザ用の設定を「受信したメールをサーバー上に残す」にしておきます。この状態で一度メールを受信し、 スパムでないメールは保存・退避しておきます。
次に[送受信]-[リモートメール]を実行し、 現在サーバに保存してあるメールの一覧を取得します。 この中から先ほど退避したメールを選択し、削除対象に設定後、 実行します。 こうすることによって、 spam ユーザの mbox にはスパムメールだけが残った状態になります。
サーバに telnet などでログインし、 su コマンドで spam ユーザになったあと、sa-learn コマンドで学習させます。
$ su spam                                                            ← su のあとに ‘-‘ (ハイフン) をつけちゃダメです
Password: ****
$ sa-learn –spam –mbox /var/mail/spam       ← spam ユーザの mbox ファイルを指定
Learned from 16 message(s) (16 message(s) examined).
$ exit
これで学習されました。学習結果は、~/.spamassassin/ に保存されます。
学習が終わったら spam ユーザのサーバ上に保存してあるメールは不要ですから、 秀丸メールのリモートメールを使い、 すべて削除してあげます。
【メールの転送】
すでに .forward などでメールの転送を行っている場合、 上記のような .forward を書いてしまうと転送できなくなっちゃいます。 で、私の場合は、 .procmailrc の一番最後に次のように記述することによって、 メールを転送してます。
From ヘッダがあれば、 pdx.ne.jp と docomo.ne.jp へ転送し、 コピーをローカルに保存するという設定です。
:0 c
*^From: *
! papepipupepopapo@pdx.ne.jp myamyumyo@docomo.ne.jp

関連した記事:

投稿時刻: 2:02 AM | カテゴリー: Linux | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です