用 Postfix 擋偽造來源位址的信件

現在許多廣告信件都是亂丟,配合來源位址的偽造,可能造成主機在發信上有所阻礙。
例如這種狀況:

廣告信偽造的寄件位址是 [email protected],寄給 [email protected]。如果 example-host.com 沒有 no-this-user 這個使用者,那信件會被退到 [email protected],久而久之,example-host.com 可能會被 yahoo.com.tw 擋掉。

之前的文章 只提過 exim 上面的擋法,最近是摸出了 Postfix 的設定方式。

  1. 讓系統進行檢查,main.cf 要有這些片段:
    smtpd_restriction_classes =
            fakemail_yahoo
            fakemail_gmail
            ...
    #
    fakemail_yahoo = check_client_access pcre:/usr/local/etc/postfix/fake/yahoo
    fakemail_gmail = check_client_access pcre:/usr/local/etc/postfix/fake/gmail
    #
    smtpd_sender_restrictions =
            ...,
            check_sender_access hash:/usr/local/etc/postfix/fake/CHECK,
            ...
  2. 製作規則對應檔(/usr/local/etc/postfix/fake/CHECK),內容大致如下(中間的大空格用 tab 隔開):
    yahoo.com       fakemail_yahoo
    yahoo.com.tw    fakemail_yahoo
    gmail.com       fakemail_gmail
    ...
  3. 製作規則檔(以 /usr/local/etc/postfix/fake/yahoo 為例),內容如下(中間的大空格用 tab 隔開):
    /(^|\.)yahoo\.com$/     DUNNO
    /./                     REJECT Fake address
  4. 用 postmap 產生規則對應檔的 hash map,接著讓 postfix 重新讀入設定檔。

對了,如果有 MX server 的話,都得一起上,不然沒用。
跑了一段時間後,效果還真的蠻顯著的。 :-P