ユーザ用ツール

サイト用ツール


linux:ubuntu:spamassassin

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
linux:ubuntu:spamassassin [2010/01/06 18:19]
njviwemz
linux:ubuntu:spamassassin [2010/07/11 19:23] (現在)
admin
行 1: 行 1:
 +~~DISCUSSION:off~~
 +
 +
 ====== SpamAssassinのインストールと設定 ====== ====== SpamAssassinのインストールと設定 ======
  
 環境:Ubuntu 8.04 Server 環境:Ubuntu 8.04 Server
 +
 +postfix + courier-IMAP
 +
  
 ===== インストール ===== ===== インストール =====
行 22: 行 28:
   * /usr/share/spamassassin/ に local.cf のテンプレートがある   * /usr/share/spamassassin/ に local.cf のテンプレートがある
  
-参考URLhttp://www.miloweb.net/spamassassin.html+ 
 +==== デーモンの設定 ==== 
 + 
 +/etc/default/spamassassin を編集して Spamassassin のデーモン spamd の設定をする。 
 + 
 +  $ sudo vi /etc/default/spamassassin 
 + 
 +デフォルトではデーモンとして起動しないようになっている。"ENABLED=1" にしてデーモンとして起動させる。 
 + 
 +  # Change to one to enable spamd 
 +  #ENABLED=0 
 +  ENABLED=1 
 + 
 +他のブログでは "--create-prefs" をオプションに追加するとありましたが、最初から入ってました。 
 + 
 +  * --create-prefs : 各ユーザの設定ファイルを作成する 
 + 
 +  OPTIONS="--create-prefs --max-children 5 --helper-home-dir" 
 + 
 +Spamassassin のルールを自動更新する。 
 + 
 +  #CRON=0 
 +  CRON=1 
 + 
 + 
 +Spamassassin を再起動 
 + 
 +  $ sudo /etc/init.d/spamassassin restart 
 + 
 +こんなエラーがでたが、もう一度再起動したら出なかった。。。ま、いいか。 
 + 
 +  Restarting SpamAssassin Mail Filter Daemon: No /usr/bin/perl found running; none killed. 
 + 
 +==== Spamassassin の設定 ==== 
 + 
 +プラグインファイルを編集。 
 + 
 +  $ sudo vi /etc/spamassassin/v310.pre 
 + 
 +言語推定プラグインを使用する。 
 + 
 +  # TextCat - language guesser 
 +  # 
 +  #loadplugin Mail::SpamAssassin::Plugin::TextCat 
 +  loadplugin Mail::SpamAssassin::Plugin::TextCat 
 + 
 + 
 +==== 個人設定ファイル ==== 
 + 
 +個人設定ファイルを用意する。 
 + 
 +  $ mkdir ~/.spamassassin 
 +  $ touch ~/.spamassassin/user_prefs 
 + 
 +~/.spamassassin/user_prefs の中に 
 + 
 +  whitelist_from *hoge.ne.jp 
 + 
 +とすると、ホワイトリストの設定ができる。  
 + 
 + 
 +==== スパムメールを入れるフォルダを用意 ==== 
 + 
 +スパムメール専用のメールフォルダを作成。フォルダは Thunderbird などのメールクライアントからでも作れる。 
 + 
 +以下のコマンドで作ったフォルダがなぜか Thunderbird から見れなかったので、結局 Thunderbird で作ったフォルダを使うことにした。 
 + 
 +   $ /usr/bin/maildirmake -f _Spam ~/Maildir/ 
 + 
 +  * オプション 
 +    * -f : 既存のメールディレクトリにフォルダを作成 
 +    * Spam : 作成するフォルダの名前(任意の名前) 
 +    * ~/Maildir/ : 既存のメールディレクトリの場所 
 + 
 +ついでにスパムメールと誤判定されたメールを入れるフォルダを作成。 
 + 
 +   $ /usr/bin/maildirmake -f _NotSpam ~/Maildir/ 
 + 
 + 
 +==== Spamassassin にメールを処理させる ==== 
 + 
 + 
 +Spamassassin は通常 procmail から呼び出され、スパム判定を行った後に再度 procmail でスパムメールを他のフォルダに振り分ける。 
 + 
 +まずは、postfix が受信したメールを procmail に処理させなければならないのだが、方法を2つ見つけた。 
 + 
 +  - procmail を postfix のメールを振り分ける外部プログラムとして postfix の設定ファイルに記述する 
 +  - .forward ファイルでメールを procmail に転送する 
 + 
 +最初の方法は設定ファイルを書き換えるので root 権限が必要。2番目の方法はユーザが自分で設定できる。 
 + 
 +個人的趣味では2番目かなぁ。 
 + 
 +=== 外部プログラムに登録する方法 === 
 + 
 +  $ sudo vi /etc/postfix/main.cf 
 + 
 +以下を追加 
 + 
 +  mailbox_command = /usr/bin/procmail 
 + 
 +postfix を再起動 
 + 
 +  $ sudo /etc/init.d/postfix restart 
 + 
 + 
 +=== .forward ファイルを使う方法 === 
 + 
 +ホームディレクトリに .forward ファイルを作成する。 
 + 
 +  $ vi ~/.forward 
 + 
 +以下を記述 
 + 
 +  "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 「ユーザ名」" 
 +   
 +  * 「ユーザ名」 の部分は振り分けを行うユーザネームに変更 
 + 
 + 
 +==== procmail から Spamassassin を呼び出して振り分け ==== 
 + 
 +procmail の設定に関しては詳細を省く。 
 + 
 +  $ vi ~/.procmailrc 
 + 
 +下記を追加する。 
 + 
 +  # メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します 
 +  :0fw 
 +  *!^X-Spam.* 
 +  |spamassassin 
 + 
 +  # メールヘッダー中に"X-Spam-Status: Yes"の記述があれば、 
 +  # スパムディレクトリにメールを格納 
 +  :0 
 +  * ^X-Spam-Status: Yes 
 +  ._Spam/ 
 + 
 + 
 +===== Spamassassin をテストする ===== 
 + 
 +GTUBE と呼ばれる特殊な文字列をメールで送信すると、強制的にスパムとして扱われる。以下が GTUBE 文字列 
 + 
 +  XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X 
 + 
 +これを送信して、スパム専用フォルダに振り分けられていればOK。 
 + 
 + 
 +===== スパムメールを学習させる ===== 
 + 
 +スパムメール学習させる。スパムメールを学習させるコマンド。 
 + 
 +  $ /usr/bin/sa-learn --spam /home/「ユーザ名」/Maildir/._Spam/ 
 + 
 +スパムメールと誤判定されたメールを学習させるコマンド。 
 + 
 +  $ /usr/bin/sa-learn --ham /home/「ユーザ名」/Maildir/cur 
 + 
 +  * 「ユーザ名」は自分のユーザネームに置き換える 
 + 
 +とりあえずやってみる。 
 + 
 +  $ /usr/bin/sa-learn --spam ~/Maildir/._Spam/ 
 +  Learned tokens from 2 message(s) (3 message(s) examined) 
 + 
 +先ほど作成した "~/.spamassassin" を見てみると 
 + 
 +  $ ls ~/.spamassassin/ 
 +  bayes_seen  bayes_toks  user_prefs 
 + 
 +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" など 
 + 
 +パーミッションを変更して実行可能に 
 + 
 +  $ chmod 755 ./spam-learn.sh 
 + 
 +crontab に登録する。 
 + 
 +  $ crontab -e 
 + 
 +午前3時に実行するならこんな感じで 
 + 
 +  0 3 * * * test -x /「スクリプトへのフルパス」/spam-learn.sh && /「スクリプトへのフルパス」/spam-learn.sh 
 + 
 +実行結果をメールしてほしくないなら 
 + 
 +  0 3 * * * test -x /「スクリプトへのフルパス」/spam-learn.sh && /「スクリプトへのフルパス」/spam-learn.sh  > /dev/null 2>&
 + 
 + 
 +  * 参考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 
  
  
  
linux/ubuntu/spamassassin.1262769590.txt.gz · 最終更新: 1970/01/01 18:13 (外部編集)