迷惑メールをフィルタリングする

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)
Mac OS X 10.5 (Leopard)

はじめに

Mac OS Xのメールクライアント Mail はよく出来たメーラーで、自身で迷惑メール (SPAM) のフィルタリングができる。けれど、IMAP4 を使って複数のメールクライアントで参照するとなると、メール受信時に迷惑メールをふるいわける必要があるしその方が便利。(それぞれのメールクライアントでフィルタ設定をしてられないから。)ここでは、spamprobe を使った迷惑メールのふるいわけについて説明する。

設定に当たっては、IMAP4 を使ったメールサーバーを構築するの通りにメール環境が構築されていることを前提としている。

使用ソフト

  • spamprobe 1.2a

spamprobe 入手とインストール

インストールの前に

spamprobe のインストールには MacPorts を使用する。port をまだインストールしていない場合は、インストールしておく。(インストールの仕方はココをクリック)

インストール

# port -d selfupdate
# port install spamprobe




設定

spamprobe 内部データベースフォルダの作成

$ cd $HOME
$ mkdir .spamprobe ... spamprobe 用データベース

迷惑メール振り分けフォルダの作成

フォルダ作成にはメールクライアントを使用する。ここでは、Apple Mail v1.3.9 を使って作成。

歯車ボタンを押す

  1. メールボックスが表示されていなかったら、1.に示したボタンを押して表示する。
  2. 歯車のボタンを押す。


[新規]を選択

  1. [新規] を選択する。


フォルダを作成

  1. [場所] が [この Mac 内] になっていることを確認する。
  2. [名前] に作成するフォルダ名を入れる。
    以下の 3 つのフォルダを作成する。
    • Spam
    • NoSpam
    • Trash


それと、Apple Mail の迷惑メール機能は必要ないのでオフにしておくと良い。

.procmailrc の編集

$ cd $HOME
$ vi .procmailrc

-- ここから (黄色が追加部分)
PATH=/usr/bin:/usr/local/bin:/opt/local/bin
LOCKFILE=$HOME/.lockmail
MAILDIR=$HOME/Library/Maildir
DEFAULT=INBOX/new
#LOGFILE=$HOME/procmail.log ... ちゃんと動かないときはここを有効にしてログを調べよう

:0
SCORE=| /opt/local/bin/spamprobe receive
:0 wf
| formail -I "X-SpamProbe: $SCORE"
:0 a:
*^X-SpamProbe: SPAM
Trash/new
-- ここまで

学習用スクリプトを設定

$ mkdir $HOME/bin ... まだ作っていない場合
$ vi $HOME/bin/spamproberc.sh ... 以下のファイルを作成する

-- ここから
#!/bin/bash

BIN=/opt/local/bin
IMAPDIR=$HOME/Library/Maildir

cd $IMAPDIR/NoSpam/cur/
for file in *
do
if [ -f $file ] ; then
        $BIN/spamprobe good $file
        mv $file $IMAPDIR/INBOX/cur/.
fi
done

cd $IMAPDIR/Spam/cur/
for file in *
do
if [ -f $file ] ; then
        $BIN/spamprobe spam $file
        mv $file $IMAPDIR/Trash/cur/.
fi
done

$BIN/spamprobe cleanup 2 14
-- ここまで

$ chmod 755 $HOME/bin/spamproberc.sh ... 実行可能にしておく

※viで編集したファイルを保存するには、vi上で [ESC] → : → wq と入力して[Enter]する。(キーの同時押しなどではないので一つづつ入力する)

学習機能の設定

cronで定期的に迷惑メールの学習とデータベースのメンテナンスを行う。

$ crontab -e
00 12 * * *	$HOME/bin/spamproberc.sh 2> /dev/null

※編集したファイルを保存するには、crontab上で [ESC] → : → wq と入力して[Enter]する。(キーの同時押しなどではないので一つづつ入力する)

使い方

上記により、送られてくるすべてのメールは一旦 spamprobe が内容を確認し、迷惑メールと判断されたら Trash へ、そうでなければ通常通り受信箱へ送られるようになる。でも、間違って判定してしまうことがあるので、その時は下記に従って spamprobe に学習させてあげる必要がある。(特に導入してすぐは学習が足りないので普通のメールでも迷惑メールと判定されることが多い。100 通くらいの迷惑メールを学習させるとかなり精度が良くなる)

必要なメールが間違って迷惑メールと判定された場合

NoSpamをチェック

  1. メーラーよりTrashのフォルダを開いて、必要なメールが混入していないか確認する。
  2. もし必要なメールが入っていたら、NoSpam に移動する。
  3. 最大一日待つと、学習され、メールは自動的に受信箱に戻される。


最初のうちは spamprobe の学習が足りずに、正しいメールでも Trash へ送られる可能性がある。なので、最初はまめに Trash を確認して正しいメールが入れられてないかチェックすること。

迷惑メールなのに受信箱に入れられたメールの場合

NoSpamをチェック

  1. 受信箱から迷惑メールを Spam に移動する。
  2. 最大一日待つと、移動した迷惑メールが学習され、その後自動的に Trash に移される。


コメントを残す

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