内容へ移動
ほげぴよwiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
ubuntu-server-10-04:spamassassin
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== SpamAssassin でスパムメール除去 ====== Fetchmail で収集してきたメールからスパムを除去する。 流れとしては Fetchmail → Procmail → SpamAssassin Procmail の .procmailrc 内で SpamAssassin に処理を引き渡すことで動作する。 ===== インストール ===== SpamAssassin と日本語用のスパムルールをインストール。 処理は postfix → procmail → SpamAssassin → procmailで振り分け となるので procmail が入っていな場合は procmail もインストール。 <code> $ sudo apt-get install spamassassin spamassassin-rules-ja </code> なんか22個インストールされた。 ===== 設定ファイル ===== * SpamAssassin 全体の設定ファイル /etc/spamassassin/local.cf * ロードするモジュールを記述 /etc/spamassassin/*.pre * 各ユーザのスパムルール $HOME/.spamassassin/user_prefss * /usr/share/spamassassin/ に local.cf のテンプレートがある ===== デーモンの設定 ===== /etc/default/spamassassin を編集して Spamassassin のデーモン spamd の設定をする。 <code> $ sudo vi /etc/default/spamassassin </code> デフォルトではデーモンとして起動しないようになっている。"ENABLED=1" にしてデーモンとして起動させる。 <code> # Change to one to enable spamd #ENABLED=0 ENABLED=1 </code> 他のブログでは "--create-prefs" を OPTIONS= に追加するとありましたが、最初から入ってた。 * --create-prefs : 各ユーザの設定ファイルを作成する <code> OPTIONS="--create-prefs --max-children 5 --helper-home-dir" </code> Spamassassin のルールを自動更新する。 <code> #CRON=0 CRON=1 </code> Spamassassin を再起動 <code> $ sudo /etc/init.d/spamassassin restart </code> こんなエラーがでたが、もう一度再起動したら出なかった。。。ま、いいか。 <code> Restarting SpamAssassin Mail Filter Daemon: No /usr/bin/perl found running; none killed. spamd. </code> 再起動2回目 <code> Restarting SpamAssassin Mail Filter Daemon: spamd. </code> ===== Spamassassin の設定 ===== プラグインファイルを編集。 <code> $ sudo vi /etc/spamassassin/v310.pre </code> 言語推定プラグインを使用する。 <code> # TextCat - language guesser # #loadplugin Mail::SpamAssassin::Plugin::TextCat loadplugin Mail::SpamAssassin::Plugin::TextCat </code> ===== 個人設定ファイル ===== 個人設定ファイルを用意する。 <code> $ mkdir ~/.spamassassin $ touch ~/.spamassassin/user_prefs </code> ~/.spamassassin/user_prefs の中に <code> whitelist_from *hoge.ne.jp </code> とすると、ホワイトリストの設定ができる。 ===== スパムメールを入れるフォルダを用意 ===== スパムメール専用のメールフォルダを作成。フォルダは Thunderbird などのメールクライアントからでも作れる。 以下のコマンドで作ったフォルダがなぜか Thunderbird から見れなかったので、結局 Thunderbird で作ったフォルダを使うことにした。 <code> $ /usr/bin/maildirmake -f _Spam ~/Maildir/ </code> * オプション * -f : 既存のメールディレクトリにフォルダを作成 * Spam : 作成するフォルダの名前(任意の名前) * ~/Maildir/ : 既存のメールディレクトリの場所 ついでにスパムメールと誤判定されたメールを入れるフォルダを作成。 <code> $ /usr/bin/maildirmake -f _NotSpam ~/Maildir/ </code> ===== Spamassassin にメールを処理させる ===== Spamassassin は通常 procmail から呼び出され、スパム判定を行った後に再度 procmail でスパムメールを他のフォルダに振り分ける。 まずは、postfix が受信したメールを procmail に処理させなければならないのだが、方法を2つ見つけた。 - procmail を postfix のメールを振り分ける外部プログラムとして postfix の設定ファイルに記述する - .forward ファイルでメールを procmail に転送する 最初の方法は設定ファイルを書き換えるので root 権限が必要。2番目の方法はユーザが自分で設定できる。 個人的趣味では2番目かなぁ。 ==== 外部プログラムに登録する方法 ==== <code> $ sudo vi /etc/postfix/main.cf </code> 以下を追加 <code> mailbox_command = /usr/bin/procmail </code> postfix を再起動 <code> $ sudo /etc/init.d/postfix restart </code> ==== .forward ファイルを使う方法 ==== ホームディレクトリに .forward ファイルを作成する。 <code> $ vi ~/.forward </code> 以下を記述 <code> "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 「ユーザ名」" </code> * 「ユーザ名」 の部分は振り分けを行うユーザネームに変更 === procmail から Spamassassin を呼び出して振り分け ==== procmail の設定に関しては詳細を省く。 <code> $ vi ~/.procmailrc </code> 下記を追加する。 <code> # メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します :0fw *!^X-Spam.* |spamassassin # メールヘッダー中に"X-Spam-Status: Yes"の記述があれば、 # スパムディレクトリにメールを格納 :0 * ^X-Spam-Status: Yes ._Spam/ </code> ===== Spamassassin をテストする ===== GTUBE と呼ばれる特殊な文字列をメールで送信すると、強制的にスパムとして扱われる。以下が GTUBE 文字列 <code> XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X </code> これを送信して、スパム専用フォルダに振り分けられていればOK。 ===== スパムメールを学習させる ===== スパムメール学習させる。スパムメールを学習させるコマンド。 <code> $ /usr/bin/sa-learn --spam /home/「ユーザ名」/Maildir/._Spam/ </code> スパムメールと誤判定されたメールを学習させるコマンド。 <code> $ /usr/bin/sa-learn --ham /home/「ユーザ名」/Maildir/cur <code> * 「ユーザ名」は自分のユーザネームに置き換える とりあえずやってみる。 <code> $ /usr/bin/sa-learn --spam ~/Maildir/._Spam/ Learned tokens from 2 message(s) (3 message(s) examined) </code> 先ほど作成した "~/.spamassassin" を見てみると <code> $ ls ~/.spamassassin/ bayes_seen bayes_toks user_prefs </code> 2つのファイルが作成されていた。 このコマンドをシェルスクリプトにして cron で毎日実行する。以下のようなスクリプトを作る。"spam-learn.sh"という名前で作成した。 <code> #! /bin/sh # # Spamassassin spam learn script # SPAM_DIR="「スパム専用フォルダへのフルパス」" NOT_SPAM_DIR="「非スパム専用フォルダへのフルパス」" SA_LEARN="/usr/bin/sa-learn" # check program and directories if [ ! -d $SPAM_DIR ]; then echo "\"$SPAM_DIR\" is not found." exit 1 elif [ ! -d $NOT_SPAM_DIR ]; then echo "\"$NOT_SPAM_DIR\" is not found." exit 1 fi if [ ! -x $SA_LEARN ]; then echo "\"$SA_LEARN\" is not exist or can not execute." exit 1 fi # learn spam mails echo "$SA_LEARN --spam $SPAM_DIR" $SA_LEARN --spam $SPAM_DIR # learn NOT-spam mails echo "$SA_LEARN --ham $NOT_SPAM_DIR" $SA_LEARN --ham $NOT_SPAM_DIR </code> * 「スパム専用フォルダへのフルパス」: "/home/user/Maildir/._Spam/cur" など パーミッションを変更して実行可能に <code> $ chmod 755 ./spam-learn.sh </code> crontab に登録する。 <code> $ crontab -e </code> 午前3時に実行するならこんな感じで <code> 0 3 * * * test -x /「スクリプトへのフルパス」/spam-learn.sh && /「スクリプトへのフルパス」/spam-learn.sh </code> 実行結果メールがいらない場合は <code> 0 3 * * * test -x /「スクリプトへのフルパス」/spam-learn.sh && /「スクリプトへのフルパス」/spam-learn.sh > /dev/null 2>&1 </code> * 参考URL * http://www.miloweb.net/spamassassin.html * http://wiki.browncat.org/index.php/SpamAssassin%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%A1%E3%83%A2 * http://www.crimson-snow.net/hmsvr/centos/maild/procmail.html
ubuntu-server-10-04/spamassassin.txt
· 最終更新: 2010/10/28 18:30 by
admin
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ