The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

設定 SpamAssassin 阻擋所有從俄羅斯(Russia)來的垃圾信

這幾個月不知為何從俄羅斯(Russia)來的垃圾信這麼多,而且還每一封都神奇的穿過了 SpamAssassin 的阻擋,所以我前幾天終於靜下心把這個問題研究了一下,並且成功阻擋所有來自俄羅斯的垃圾信。

我也發現,這些從俄羅斯寄來的垃圾信十分"專業",基本上都完全符合 MIME 標準,所以對 SpamAssassin 來說基本的檢查都能夠通過,不過我納悶的是不知道為何這些信為什麼可以完整通過 SpamAssassin 所有規則的檢查?

為了要成功過濾所有從俄羅斯來的信,我還特別分析了一下垃圾信的原始內容,所以我抓了其中一封垃圾信的郵件標題(Mail Headers),如下:

Microsoft Mail Internet Headers Version 2.0
X-Virus-Scanned: Debian amavisd-new at antispam.test.com
From: "antoine cosmo" <nmtue@soyu19.tk>
To: <receiver@test.com>
Subject: =?koi8-r?B?7MDC2cUsIMTB1iDF08HN2cUgx9LR2s7ZxSDTxcvT1cHM2M7ZxSDGwQ==?=
        =?koi8-r?B?ztTB2snJLCDP1snXwcDUINrExdPY?=
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2720.3000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2727.1300
Message-Id: <20080923021045.5206024C410@test.com>
Date: Tue, 23 Sep 2008 10:10:43 +0800 (CST)
X-OriginalArrivalTime: 23 Sep 2008 02:08:43.0597 (UTC) FILETIME=[4DF79FD0:01C91D21]

由此得知,這些從俄羅斯寄來的垃圾信所用的文字都是使用 KOI8-R 編碼,另外我也查到 windows-1251 編碼也是俄羅斯常用的編碼,反正這些國家的語言一定看不懂就是的,所以光是針對這個特性進行 SpamAssassin Rules 撰寫應該就可以過濾掉一大堆垃圾信了,這樣子我的 Outlook 應該會乾淨些!

我看了一遍 Writing Rules 文件,自己寫了一段 Rule 到 /etc/spamassassin/local.cf 檔案中,內容如下:

header   __KOI8_TO              To:raw           =~ /\?(koi8-r)|(windows-1251)\?/
header   __KOI8_FROM            From:raw         =~ /\?(koi8-r)|(windows-1251)\?/
header   __KOI8_SUBJECT         Subject:raw      =~ /\?(koi8-r)|(windows-1251)\?/
header   __KOI8_ContentType     Content-Type:raw =~ /\?(koi8-r)|(windows-1251)\?/
meta     LOCAL_WILL_DEFINEDRULE (__KOI8_TO||__KOI8_FROM||__KOI8_SUBJECT||__KOI8_ContentType)
score    LOCAL_WILL_DEFINEDRULE 14.0
describe LOCAL_WILL_DEFINEDRULE Sent by using koi8-r & windows-1251 encoding

加上之後只要重新啟動 SpamAssassin 即可:

/etc/init.d/spamassassin reload

由於我一口氣加了 14.0 分上去,所以這些信幾乎是再也不可能出現在我的 Outlook 了。

測了幾天後,垃圾信大概又少了將近 80%,真是大快人心阿。^_^