postfix 檢查檔頭header_checks

這也是postfix老掉牙的阻擋廣告信方式, 偶爾可以用一下,

大家都知道postfix 可以檢查檔頭header_checks, 然後阻擋

在 /etc/postfix/main.cf 設定一下即可啟用功能

header_checks = regexp:/etc/postfix/header_checks

接下來修改規則檔案 /etc/postfix/header_checks, 設定要阻擋的字串,

這裡比較有趣的是, 如何定位字串? 總共有兩個地方要注意的:

1.是"."與"*" 後面加上要定位的字串 , 再加上"/" , 代表搜尋多個相同的字串,

例如 /^Subject:.*AV/ DISCARD

找出所有標題是AV的字串

2.中文需要考慮UTF-8, GBK, BIG5,然後進行Base64編碼

例如要定位"警告"這個字串, 有可能是utf8 , gbk, big5 三個

/^Subject:.*6K2m5ZGK/ DISCARD
/^Subject:.*vq+45g==/ DISCARD
/^Subject:.*xLWnaQ==/ DISCARD

編碼服務可參考
https://www.base64encode.org

 

postfix郵件加上postgrey灰名單功能, 可擋下大部分廣告

postfix郵件加上postgrey灰名單功能很簡單 , 步驟如下:

1. 安裝postgrey

CentOS 可於rpmfind.net找尋相對應的RPM版本安裝

Ubuntu 18.04 可直接安裝不用另外下載

sudo apt install postgrey

2. 找出啟動script的OPTIONS選項, 加上自動白名單功能, 與延遲120秒

centos 6:

vi /etc/rc.d/init.d/postgrey

---------------------------------------------------

OPTIONS="--unix=$SOCKET --auto-whitelist-clients=5 --delay=120"

---------------------------------------------------

centos 7:

vi /var/lib/systemd/system/postgrey or

vi /usr/lib/systemd/system/postgrey.service

---------------------------------------------------

ExecStart=...

--auto-whitelist-clients=5

---------------------------------------------------

執行時候會長這樣

/usr/sbin/postgrey -d --unix=/var/spool/postfix/postgrey/socket --auto-whitelist-clients=5 --delay=120

3. 修改postfix的main.cf檔案, 加上check_policy_service unix:postgrey/socket

Centos:   vi /etc/postfix/main.cf

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
check_sender_access hash:/etc/postfix/sender_vip,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cbl.abuseat.org,
check_policy_service unix:postgrey/socket

4. 產生報表

cat /var/log/maillog | postgreyreport  --nosingle_line --check_sender=mx,a --show_tries  --separate_by_subnet=":=================================================================\n"

2018/06/12 後記

這種作法經過實做, 不建議使用, 原因很簡單, 就是延遲的問題, 收個信會延遲, 這是非常麻煩的

雖然可以自動加入白名單, 但是有些不常聯絡, 一聯絡就要馬上收的狀況大有人在,

除非IT人員在公司很強大, 否則不要用這種方式

DKIM介紹

DKIM(DomainKeys Identified Mail)是一種用來對抗釣魚之類廣告信的協定.

當初yahoo以及cisco為了對抗廣告信(至少不讓廣告商冒用其名義寄信),使用一種特殊的方式對抗廣告信,
實施了多年以後,終於證明可以有效阻擋廣告信,因此他們將此協定開放讓大家使用,
到了2005年,在多家廠商的合作下,規範出第一版DKIM,送交IETF審查.
,並且在2007年通過,成為開放通訊協定中的一種,RFC編號為4871.

DKIM的運作方式有兩種, 第一種是驗證(verification),第二種是簽名(signature).
假設我是test.com這個網域的管理員, 我必須利用DNS設定一組公開金鑰,
讓所有人可以取得且用來驗證郵件是否為test.com郵件伺服器發出.
這樣以後所有從test.com郵件伺服器所送出的郵件,只要經過簽名(必須使用私密金鑰才可以簽名),
對方就可以使用公開金鑰認證,確保郵件是否為真.

若所有的郵件伺服器都有這樣的機制, 那些廣告信就無所遁形, 因為他們無法經由簽名預告郵件是否為真
.若廣告商要破解這種機制是需要很大的成本,就目前來說, 是很有效的檔廣告機制.

目前實做的DKIM的模組,對於所定義的公開金鑰與私密金鑰,
還只限於郵件伺服器本身對外發出(非公信力單位發出),
現已有 RFC5016(DKIM Signing Practices Protocol)討論所謂的SPP,
未來很可能形成另一種具備安全性與公信力的通訊協定,讓DKIM更能普及.

若遭遇大量廣告郵件攻擊郵件伺服器,在伺服器還沒進行DKIM驗證的動作時,
可以搭配其他輔助套件,先行阻擋廣告商郵件寄送,
才不至於造成郵件伺服器負載過高甚而停止運作.

特別一提的是目前DKIM並不能證明郵件真的是發信者本人發出,
必須搭配第三者簽名的方式如PGP等單位才是正確方式,

參考文件
http://www.dkim.org/index.html

william 2008/09/16

1 ... 3 4 5