這次我們講到如何利用 postfix 提供的種種過濾機制把討厭的 SPAM 擋在門外。
過濾的目標包括:來源、寄件者、收信者、附加檔、本文內容, etc.
[說明]
Postfix 本身就具備了兩種郵件過濾的機制:分別是標頭過濾(header)與本體過濾(body)
要使這兩個功能生效,你必須在 /usr/local/etc/postfix/main.cf 中加入:
header_checks = regexp:/usr/local/etc/postfix/header_checks
body_checks = regexp:/usr/local/etc/postfix/body_checks
header_checks 與 body_checks 分別代表了你的標頭過濾檔及本過濾檔。
過濾檢查的描述型態可以有三種方式
*hash:雜湊
*regexp:正規表示式(Regular Expression)
*pcre:相容於Perl之正規表示式(PCRE, Perl Compatable Regular Expression)
在本文中,我們將以 regexp 作為過濾檢查的描述型態。
[標頭過濾]
標頭,就是信件附帶的資訊,包含標題(Subject)、送件者 (From:)、收件者 (To:)及其他相關資訊,
甚至連你用什麼 mail client 來發送這封信件,都可以在標頭中看出端倪。
要設定標頭過濾的判斷條件,我們必須編輯 /usr/local/etc/postfix/header_checks
*對於發信者來源的過濾,我們可以加上:
/^From:.*badguy\.com/ DISCARD
*對於郵件標題的過濾,我們可以加上:
/^Subject:.*香豔刺激/ DISCARD
*對於途中經過轉寄主機的過濾,我們可以加上:
/^Received.*relay\.asshole\.com/ DISCARD
*對於郵件附加檔案的過濾,我們可以加上:
/filename\=.*\.pif/ DISCARD
/name\=.*\.pif/ DISCARD
[本體過濾]
本體,就是信件本身的內容囉。也就是發信者要呈現給收件者的訊息。
要設定本體過濾的判斷條件,我們必須編輯 /usr/local/etc/postfix/body_checks
*對於特定字串的過濾,我們可以加上:
/^dirty_words/ DISCARD
[延伸]
除了針對信件兩部分分別設定過濾條件,還有沒有其他配套措施可以配合呢?
這將會是下一次討論的議題。