Postfix攻略(2)郵件過濾

這次我們講到如何利用 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_checksbody_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

[延伸]
除了針對信件兩部分分別設定過濾條件,還有沒有其他配套措施可以配合呢?
這將會是下一次討論的議題。