SpamAssassin

English Version

[ 最新版本: 3.4.1 ] 為 Fedora 20

Fedora 21 下載

CentOS 5.11 下載


Version 3.4.0 for Fedora 20 and CentOS 5.10:

Fedora 20 下載

CentOS 5.10 下載

注意︰ 新安裝或更新/升級之後,不要忘下載規則檔案︰

sa-update   -D   --nogpg


2011/07/06

因為從 Fedora 15 使用 systemd 初始啟動程式 (已經不用 SysV initscripts),我建這 rpm 包裝是符合 systemd。我也把 perl-Mail-SpamAssassin 合併到 spamassassin。所以一個 rpm 檔 (spamassassin-3.3.2-9.i686.rpm) 也夠了。

SysVinit 和 systemd 對照表,請看:https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/zh


只看程式名稱就很清楚知道 SpamAssassin 有什麼用途:Spam Assassin, 就是 spam ﹝廣告或垃圾郵件﹞的殺手。本來 email 被稱謂網際網路的 killer application,但是因為 spam 的來臨,很多人就怕了使用 email。現在的廣告郵件實在太多了。

如何解決這個 spam 的問題?目前唯一的解決辦法就是安裝過濾 spam 的軟體。SpamAssassin 是最好的過濾 spam 的軟體。而對一些人是不可思議因為 SpamAssassin 是免費的軟體。

在這篇文章我要描寫在 Linux 系統使用 Fedora 15 如何安裝 SpamAssassin。

雖然 Fedora 16 提供 SpamAssassin,但是我比較喜歡下載最新版的來源程式,建我自己的 rpm 包裝然後安裝。你可以在這下載來源程式:

http://spamassassin.apache.org/downloads.cgi

我把這個 rpm 檔案提供給大家 下載


2008/07/09

我現在也為 CentOS 5.6 提供 spamassassin rpm 檔案。你在 這裡下載

Warren Togami Jr. 提供為 RHEL5RHEL6 的 rpm 包裝。

參考:http://www.spamtips.org/p/rpm-packages.html


下載 rpm 檔之後,我們現在要安裝和設定 SpamAssassin。做這種工作你必須是 root:

su -

到哪檔案的子目錄,然後安裝:

rpm   -Uvh   spamassassin-3.3.2-9.i686.rpm

我自己比較喜歡用系統安裝,所以我不願意讓一般使用者改變需要的參數,所以我使用 x 而不是 c。你想要改變的話,請編輯:

/lib/systemd/system/spamassassin.service

現在我們設定 SpamAssassin:

cd   /etc/mail/spamassassin

編輯 local.cf。我自己使用的設定如下:

   trusted_networks    xxx.xxx.xxx/24   # 這是你 class c 之 IP
   lock_method         flock            # 如果你在使用 NFS,請不要使用這個
   required_score      5.0              # 成績超過 5.0 算是 spam
   report_safe         0
   use_auto_whitelist  0
   use_bayes           0
   use_bayes_rules     0
   bayes_auto_learn    0
   ok_languages        all
   ok_locales          all

編輯 v310.pre。刪除註解符號 #:

   #loadplugin Mail::SpamAssassin::Plugin::TextCat ==> loadplugin Mail::SpamAssassin::Plugin::TextCat

當一封 email 已判定是 spam 時你如果想要在主題加 *****SPAM*****,你就在 /etc/mail/spamassassin/local.cf 加:

rewrite_header Subject *****SPAM*****

為了更了解這些設定參數的意義和知道對你自己環境所需要的其它參數,請執行以下指令:

perldoc Mail::SpamAssassin::Conf

檢查設定參數是否正確:

spamassassin -x -D --lint

現在 SpamAssassin 已經設定好了,你如何告訴 Sendmail 要呼叫 SpamAssassin 掃描進來的郵件? 你可以使用 Sendmail 的 milter ( spamass-milt) 來做這個工作,但是我自己喜歡用 procmail 來處理。

編輯 /etc/procmailrc ﹝建這個檔案如果不存在﹞,內容如下:

:0fc
* < 256000
| /usr/bin/spamc

:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*
/dev/null

註:SpamAssassin 只會處理郵件大小小於 256000 bytes。如果 Spam-Level 成績有八個以上的 * ﹝確定這是 spam 郵件﹞就丟掉。

一切準備好了。你必須啟動 SpamAssassin:

systemctl   start   spamassassin.service

你可以測試 SpamAssassin 會不會抓 spam。執行以下指令:

cd   /usr/share/doc/spamassassin-3.3.2
spamc   <   sample-spam.txt

這樣就好了。每次 Sendmail 收到郵件,SpamAssassin 會過濾這郵件判斷是否 spam。我建議同時使用 milter-greylist 效果非常好。現在你可以輕鬆了,怕你會無聊因為已經沒有可殺的 spam!


更新 SpamAssassin 之規則

sa-update 程式會更新 SpamAssasssin 的規則。但使用 sa-update 之前你必須先安裝兩個 perl 模組: Archive::Tar and IO::Zlib:

yum install perl-Archive-Tar perl-IO-Zlib

安裝這兩個程式之後,﹝為使用者 root﹞ 執行以下指令來更新:

sa-update   -D   --nogpg

注意:Fedora 提供 spamassassin 的 rpm 包裝。如果你使用我所提供的 rpm 包裝,為了避免 yum 更新/升級之衝突, 我建議在你的 /etc/yum.repos.d/fedora.repo 和 /etc/yum.repos.d/fedora-updates.repo 檔案加這一列:

exclude=spamassassin

Fedora 建議在安裝/刪除/更新/升級包裝時都要使用 yum。所以如你要安裝/更新 spamassassin 時,請使用 yum:

安裝:

yum --nogpgcheck install spamassassin-3.3.2-9.i686.rpm

更新:

yum --nogpgcheck update spamassassin-3.3.2-9.i686.rpm

注意:從 3.3.0 版本開始,SpamAssassin 已經不包含規則檔案。意思是說,安裝/更新至 3.3.0 之後要馬上更新 (sa-update) 規則檔案。


蔡由世神父
2005/03/16
更新:2014/02/12