本期主題介紹的是:郵件伺服器管理篇--SpamAssassin
SpamAssassin 介紹
提要
垃圾郵件 (Spam) 一直是系統管理中相當煩惱的事情,垃圾郵件不但造成使用者的困擾,也造成系統龐大的負擔。該如何防治與阻擋垃圾郵件儼然成為一門學問,Sendmail 也自 8.8 版開始加入一些基本的過濾機制,但威力不足以阻擋大多數的垃圾郵件,所以必須尋找其他的解決方案,而 SpamAssassin 是近年來相當熱門且威力十足的 mail filter 。
系統環境
平台:Ubuntu 5.10 (Debian)
Sendmail 8.12.10
SpamAssassin 3.1.0
介紹
SpamAssassin 是利用 Perl 寫成,具有相當高的可移植性,它透過分數 (Score) 累加的方式來辨別垃圾郵件與正常郵件,換言之,若信件符合某些條件 (Pattern) 我們便給予他一個分數,若總分高於所設定的標準,便視之為垃圾郵件。 不僅如此, SpamAssassin 還具有下列特色
- Header tests
- Body phrase tests. For more information, see SpamAssassinRules.
- Bayesian filtering (BayesFaq)
- Automatic address whitelist/blacklist (AutoWhitelist)
- Manual address whitelist/blacklist (ManualWhitelist)
- Collaborative spam identification databases (DCC, Pyzor, Razor2); See NetworkTests.
- DNS Blocklists, also known as "RBLs" or "Realtime Blackhole Lists". See DnsBlocklists
- Character sets and locales
安裝
Requirement:
Perl 5.6.1 or later version is required.
Required Perl Modules:(You can find them from CPAN)
Digest::SHA
HTML::Parser >= 3.24 (3.31 or later is recommended.)
Optional Modules:
MIME::Base64 (highly recommended)
DB_File
Net::DNS
Net::SMTP
Mail::SPF::Query
IP::Country
Razor2
Net::Ident
IO::Socket::INET6
IO::Socket::SSL
Time::HiRes
Mail::DomainKeys
DBI
LWP
Archive::Tar
IO::Zlib
deb 安裝(Ubuntu,Debian)
$ sudo apt-get install spamassassin
tar ball 安裝 (any system)
$wget http://ftp.cis.nctu.edu.tw/data/UNIX/apache/spamassassin/source/Mail-SpamAssassin-3.1.0.tar.gz
$tar zxvf Mail-SpamAssassin-3.1.0.tar.gz
$cd Mail-SpamAssassin-3.1.0
$perl Makefile.PL
$make
$sudo make install
CPAN via CPAN.pm (any system)
$sudo perl -MCPAN -e shell
o conf prerequisites_policy ask
install Mail::SpamAssassin
quit
設定
主要設定
$sudo vi /etc/mail/spamassassin/local.cf
##################### 幾分以上視為垃圾郵件 ##################
required_score 7.5
##################### 將 Spam 放入壓縮檔 ####################
# 關閉 (0):Spam 資訊只會在 header 看見
# 開啟 (1):將 Spam 放入壓縮檔
# 安全 (2):是將 Spam 全部轉為純文字,避免危險性的 script
#
report_safe 1
##################### 是否使用貝氏分析 ######################
# 所謂貝氏分析是將垃圾郵件分為兩類,並告知系統何謂 Spam 何謂 Ham
# 系統會分析垃圾郵件的用字與非垃圾郵件的用字比例
# 並建立一個機率模型,讓新進來的郵件透過貝氏分析來判斷他是垃圾郵件的可能性
#
use_bayes 1
################# 是否使用貝氏分析自動學習 ##################
bayes_auto_learn 1
#############################################################
###################### 網路檢測項目 #########################
#############################################################
# 是否關閉 RBLs(DNS Blacklists) 檢測
skip_rbl_checks 0
# 是否使用 Razor 2 檢測
use_razor2 1
# 是否使用 DCC 檢測
use_dcc 1
# 是否使用 Pyzor 檢測
use_pyzor 1
#############################################################
####################### 語言選項 ############################
#############################################################
# 所在常使用的語言,SpamAssassin 會檢查郵件的 Charter set 是否為所選語言
# 未被選取的語言較有可能為垃圾郵件
# zh 中文
# en 英文
# ja 日文
# all 全部
ok_locales all
# 分析郵件主體,不只是簡單檢查 Charter set ,是較有效的過濾方式,
# 相對的會造成系統較大的負擔
ok_languages all
# 開啟上列語言選項須特別注意!!!!
# SpamAssassin 3.1 開始,已將此功能移至 Plugin 功能,須先將 TextCat plugin 打開才會生效
#
詳細設定可參考官方網頁說明
基本規則設定
規則集可直接依照格式儲存放在 /etc/mail/spamassassin/ 資料夾當中,SpamAssassin 啟動時會自動讀取
規則格式介紹
一個規則大致可以分成三個部分
1.判斷式
例如:
body |
MY_RULE_LOAN |
/現金卡/ |
欲比對欄位 |
規則名稱 |
比對資料 |
若郵件內容包含 "現金卡" 則符合此條件,
判斷式可以做多重判斷,例如:
header |
MY_RULE_LOAN |
From =~ /.*(S+.fakebank.coms+[.*])/ |
欲比對欄位 |
規則名稱 |
比對資料 |
header LOCAL_RCVD Received =~ /.*(S+.example.nets+[.*])/
若此郵件 1.內容包含"現金卡" 2. 寄件者 domain 包含 fakebank.com 此規則成立
詳細說明請參考官方網頁
2.分數
score |
MY_RULE_LOAN |
2.0 |
|
規則名稱 |
評分 |
若符合 MY_RULE_LOAN 規則加兩分,分數評分部分可分四部份,說明如下
score SYMBOLIC_TEST_NAME n.nn [ n.nn n.nn n.nn ]
The first score is used when both Bayes and network tests are disabled (score set 0).
The second score is used when Bayes is disabled, but network tests are enabled (score set 1).
The third score is used when Bayes is enabled and network tests are disabled (score set 2).
The fourth score is used when Bayes is enabled and network tests are enabled (score set 3).
3.註解
describe |
MY_RULE_LOAN |
body contain keyword in chinese |
|
規則名稱 |
此規則的說明 |
其他常用規則
白名單
whitelist_from *@xxx.xxx.xx
白名單
blacklist_from *@ooo.ooo.oo
實例
# From NCU ,減 100 分
body SENDER_NCU From =~ /.*(S+.ncu.edu.tws+[.*])/
describe SENDER_NCU mail come from ncu
score SENDER_NCU -100
測試
新規則設定好之後,可利用 test mode 先做測試,若規則正常運作,再將 SpamAssassin 重新啟動
spamassassin -t
參考資料
SpamAssassin
SpamAssassin Configuration Generator
Spamstats 可對 /var/log/mail 內的 Spam 資訊做分析
|