spamAssassin設定                             新規作成 2005/02/23                             最終更新 2005/03/08 ●概要  一日に受信するメールの内、8割をスパムが占めているユーザもいる事から、  スパムフィルタ導入の運びとなった。  SpamAssassinが動作するまでの処理内容としては、以下      Postfixがメール受信        ↓    Procmailへ中継。ProcmailはSpamAssassinに再中継        ↓    SpamAssassinによるSpam判定        ↓    適切なユーザフォルダへ格納。スパムメールと判断されたら、指定フォルダに格納。 ●日々の運用  誤認識防止の為、spamアカウントに届くメールや /home/spam ディレクトリは  毎日チェック。  SpamAssassinを経由したメールには、メールヘッダー部分にスパム判定スコア  などが追加されている。  基本的に SpamAssassin に autolearn=spam と判定されたものは放置。  autolearn=no となったものは、 sa-learn --spam で学習。  ---------------------------------------------------------------------  例:test@yahoo.co.jp宛のスパムメールが、正常と認識されて下記フォルダに    格納された。 /home/test/Maildir/cur/1109854125.3112_0.mail.yahoo.co.jp:2,S スパム学習させる。 # sa-learn --spam 1109854125.3112_0.mail.yahoo.co.jp:2,S ※特に必要が無ければ、以下の手順は行なわず学習済のメールを削除しても良い。 権限をspamに直す    # chown spam 1109854125.3112_0.mail.yahoo.co.jp:2,S 本来のspamフォルダに移動 # mv 1109854125.3112_0.mail.yahoo.co.jp:2,S /home/spam/Maildir/new/  ---------------------------------------------------------------------  正常なメールがスパムと誤認識したものは sa-learn --ham で学習した後、  本来のフォルダへ移動。  ---------------------------------------------------------------------  例:test@yahoo.co.jp宛のメールが、スパムと誤認識されて下記フォルダに    格納された。 /home/spam/Maildir/cur/1109854125.3112_0.mail.yahoo.co.jp:2,S スパム学習させる。 # sa-learn --ham 1109854125.3112_0.mail.yahoo.co.jp:2,S 権限をtestに直す    # chown test 1109854125.3112_0.mail.yahoo.co.jp:2,S 本来のフォルダに移動 # mv 1109854125.3112_0.mail.yahoo.co.jp:2,S /home/test/Maildir/new/  ---------------------------------------------------------------------      誤認識していない通常のメイル (ham: SpamAssassin ローカルな slang)  でも、 autolearn=no は sa-learn --ham で学習。 ●whitelistへの追加  スパム学習をしても、誤診が直らない場合、  各ユーザディレクトリにある user_prefまたは/etc/spamassassin/local.cf内に  下記のような記述を追加する。  ---------------------------------------------------------------------  whitelist_from test@yahoo.co.jp  whitelist_from test@yahoo.ne.jp  whitelist_from *@yahoo.co.jp  ---------------------------------------------------------------------  設定追加後は、spamassassinに設定を読み込ませる。  # /etc/init.d/spamassassin reload  whitelistに追加されたアドレスからのメールは、あらかじめSpam判定のスコアに  -100されて計算される。判定時のスコアが8以上の場合、スパムと認識するように  なっているので、まずスパムにはならない。 ●ユーザ追加時の手順  ユーザ追加後、メール格納用のフォルダ(新規、既読、一時)を作成する。  ※以前の /var/mail/ フォルダは使用出来ない。Spam判定時の取り扱いを考えて   mbox形式からMaildir形式に、メール保存方法を変更したため。  ---------------------------------------------------------------------  例:ユーザ:test ユーザ追加。ログインは出来ないように設定    # useradd -s /bin/nologin test    メールフォルダの作成    # mkdir /home/test    # mkdir /home/test/Maildir    # mkdir /home/test/Maildir/new    # mkdir /home/test/Maildir/cur    # mkdir /home/test/Maildir/tmp 全てオーナーはtestにしておく。    # chmod -R test /home/test  --------------------------------------------------------------------- ●SpamAssassinを有効にするには(受信メールをProcmailに渡す設定)  各ユーザのホームディレクトリに.forward作成 .forward の中身に、下記の一文を追加する。 "|IFS=' ' &&exec /usr/bin/procmail -f- || exit 75 #ユーザ名"    例 /home/test/.forward -------------------------------------------------------------------- "|IFS=' ' &&exec /usr/bin/procmail -f- || exit 75 #test" --------------------------------------------------------------------  ※SpamAssasinの適用を中止する(Procmailに渡さなくする)場合は、   中身が空の .forward ファイルを配置すればよい。 -------------------------------------------------------------------------------- 以下、インストール時の設定 ●mbox から Maildir への移行時に既存のメールをmaildir形式に変換する。  http://untroubled.org/mbox2maildir からmbox2maildirを  取得しておき、実行可能にしておく  # wget http://untroubled.org/mbox2maildir  # chmod 755 mbox2maildir スクリプトの実行例  # ./mbox2maildir /var/mail/test /home/test/Maildir ※ rootで実行したせいか、オーナーがrootに代わってしまうので、    Maildir以下のchmodを忘れずに ●SpamAssassin3.0.2のインストール  Debian GNU/Linux 3.0r4(woody)のSpamAssassinは2.20とバージョンが  古いので、/etc/apt/sources.list にbackportを追加しておく。  以下のような形だと、postfixも2.1.5の比較的新しいバージョンが  インストール可能になる。 -------------------------------------------------------------------- # spamassassin backport 20050210 deb http://www.backports.org/debian/ woody spamassassin deb http://www.backports.org/debian/ woody libnet-dns-perl # postfix backport 20050210 deb http://www.backports.org/debian/ woody postfix -------------------------------------------------------------------- ※今回は、SpamAssassinだけをインストールした。  SpamAssassinインストール  # apt-get update # apt-get install spamassassin  これだけだとライブラリが足らないので  # apt-get install libnet-dns-perl SpamAssassinのテストは #spamassassin -t < /usr/share/doc/spamassassin/sample-spam.txt  また、/etc/default/spamassassin 内の  ENABLED=0 → ENABLED=1 にしないとspamassassinが起動出来ないらしい。  起動は/etc/init.d/spamassassin start ●SpamAssassinの設定  全体設定は、/etc/spamassassin/local.cf に行なう。  今回は、下記アドレスから http://tlec.linux.or.jp/docs/user_prefs  設定サンプルをもらってきて、local.cfとした。 ●Maildir形式の受信をサポートするPOPをインストール  # apt-get update # apt-get install courier-pop ●PostfixにMaildirの設定  /etc/postfix/main.cfに下記設定を施す。 --------------------------------------------------------------------  #home_mailbox = Mailbox  home_mailbox = Maildir/  mail_spool_directory=/var/mail/ --------------------------------------------------------------------  この後、postfixを設定再読み込み又は、再起動すると設定反映  # /etc/init.d/postfix reload 又は  # /etc/init.d/postfix restart なお、Debianパッケージpop-before-smtpを利用したい場合には 下記のようなパラメータ設定をすると良いかも -------------------------------------------------------------------- mynetworks = 127.0.0.0/8 hash:/var/lib/pop-before-smtp/hosts smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient, check_client_access hash:/var/lib/pop-before-smtp/hosts, reject_unauth_destination --------------------------------------------------------------------  ※ pop-before-smtp利用時は、/etc/pop-before-smtp/pop-before-smtp.confを修正する    既存のpat pat2を#でコメントアウトし、下記設定追加  /etc/pop-before-smtp/pop-before-smtp.conf --------------------------------------------------------------------  # 2005/02/22 addd # For Courier-pop pat = '^(... .. ..:..:..) \S+ courierpop3login: LOGIN, user=\S+, ip=\[::....:(\d+\.\d+\.\d+\.\d+)\]$ ' -------------------------------------------------------------------- ●ProcmailをSpamAssassinと連携させて使う設定  /etc/procmailrc --------------------------------------------------------------------  PATH=/bin:/usr/bin:/usr/local/bin  MAILDIR=$HOME/Maildir  DEFAULT=$MAILDIR/  LOGFILE=$HOME/.SPAM/procmail.log  LOCKFILE=$HOME/.lockmail  :0fw  *!^X-Spam.*  | /usr/bin/spamc  :0:  #*^X-Spam-Status: Yes  * ^X-Spam-Level: \*\*\*\*\*\*\*  ! spam -------------------------------------------------------------------- ●Spamの促成学習 通常、1000通ほど学習させた後にSpam判別が安定するが、  インストールしたばかりで適当なサンプルがない場合。 tlec から、Spamメール集を取得し、これを学習させる。  # wget http://www.flcl.org/~yoh/yoh_spam_050102.tar.bz2 # apt-get install bzip2  # bzip2 -dc yoh_spam_050102.tar.bz2 | tar xvf -  # sa-learn --spam ./home/yoh/spam/spam/ ●設定変更(2005/03/04)  運用をしていく中で、local.cf の最後尾に下記設定を追加した。  /etc/spamassassin/local.cf --------------------------------------------------------------------  (中略)  always_add_report 1  whitelist_from test@yahoo.jp  whitelist_from test@yahoo.ne.jp  whitelist_from *@yahoo.co.jp --------------------------------------------------------------------  always_add_report { 0 | 1 } ※デフォルト0    スパムと判定した場合に、その条件でこう判定されたかのレポートを    つけるのが0。不要なら1をセットする