rspamd設定灰名單(greylist)

原本我建議大家不要用灰名單, 原因是:
1. 等很久,
2. 系統自動發信,無法通過灰名單測試, 但是該信件又是極其重要
因此建議停用灰名單功能.

但近年來廣告信,釣魚信多到影響資通安全, 我們就必須要開啟灰名單功能, 策略如下:

1.若是重要信件,先加入灰名單裡面的白名單,
2.若通過灰名單測試後, 可以設定成長時間不用再通過灰名單測試

以下是rspamd開啟灰名單功能

  • 修改 local.d/greylist.conf
enabled = true;
expire = 365d; # 1 day by default
timeout = 5min; # 5 minutes by default
  • 修改 override.d/actions.conf
# 若郵件高於4分, 就觸發灰名單功能
greylist = 4;# Apply greylisting when reaching this score (will emit `soft reject action`)
  • 灰名單白名單功能,
    將不需要觸發灰名單的網域加入到 local.d/greylist-whitelist-domains.inc

不講武德的廣告信-email原始檔案header中關於寄件者email

通常我們透過廣告信給分機制, 可以另外給予"合法郵件服務器"發出來的信件給予高額的廣告判斷分數, 讓系統退件.

因為是合法的服務器, 很多很多都讓該服務器代管, 我們無法直接以 ip, 或是相關特徵, 阻擋服務器發信,
對於我們來說, 唯一的方式就是設定該廣告主email, 給予很高廣告分數, 就可以擋下來了.

煩的是有些郵件服務器使用amazon server當作mail server 發信, 原始檔案裏面的 Return-PathFrom 不一致 , 影響擋廣告機制判斷 , 造成這些人可以肆無忌憚, 不講武德一直發信, 而你怎麼設定該email或是網域, 都沒用, 根本擋不了.

Return-Path: <0101017f0f53948e-e5e68c2b-950e-4613-bd45-c0665e232ab5-000000@us-west-2.amazonses.com>
X-Original-To: xxx@xxx.com
Delivered-To: xxx@xxx.com
Received: from a27-63.smtp-out.us-west-2.amazonses.com (a27-63.smtp-out.us-west-2.amazonses.com [54.240.27.63])
From: =?UTF-8?Q?=E3=80=90iCheers_=E9=80=B1=E5=A0=B1=E3=80=91?= <newsletter@icheers.tw>

講武德的廣告信, Return-Path 與From 會一致

Return-Path: <solidwizard@s1.mailhunter.com.tw>
X-Original-To: xxx@xxx.com
Delivered-To: xxx@xxx.com
Received: from mx127.mailhunter.com.tw (mx127.mailhunter.com.tw [60.250.108.127])
From: =?utf-8?B?5a+m5aiB5ZyL6Zqb6IKh5Lu95pyJ6ZmQ5YWs5Y+4?= <solidwizard@s1.mailhunter.com.tw>

所以我們必須用另外一種作法, 掃描整個郵件headers, 只要符合該email 或 domain 就擋下來

以 Rspamd 的擋廣告機制來說,

修改 /etc/rspamd/local.d/regexp.conf

"RE_EMAIL_ICHEERS" = {
        re = '/@icheers.tw/i{body}';
        score = 15.0;
}
#只須改紅色部分

阻擋 icheers.tw 這個不講武德的廣告信 , 但是我還沒試出來完整email , 若寫完整email 還是會失敗, 有可能是bug.

自製 docker mail server 支援AD ,使用Rspamd過濾廣告

最近對 Rspamd 非常有興趣, 因為該套件提供管理介面 , 所以我立馬捨去amavisd-new老牌套件, 改用Rspamd.

目前只知道啟用clamav防毒, 與預設的廣告防禦功能, 也不知道效果如何, 以後會慢慢研究的.

https://hub.docker.com/r/inmethod/docker-postfix-ad

免費 g suite lagacy , 2022年7月要停用, 該自架郵件伺服器了

我傾向於自架, 一樣規劃兩個方向

第一個方向, 中小企業使用 postfix + amavisd + active directory , 或是 postfix + rspamd + active directory

第二個方向, 個人網域專用 , 大概就是docker上面找一找, 不需要跟AD扯上關係.

我2/5回台灣, 需要隔離11天, 因此花了兩天時間, 於docker中找了一款 mailu 很棒的mail server.

試用了一下, 很好用, 可以支援多網域, 使用最新的rspamd取代老牌amavisd-new .

mailu 安裝簡單, 若是使用docker架設, 官方網站提供設定檔案製作工具 https://setup.mailu.io , 回答完問題, 自動產生docker-compose檔案,與環境設定檔案.

而mailu 使用 rspamd 套件管理防毒, 廣告信,, 灰名單, rate limit, 等等功能, 讓我非常驚艷 , 更棒是該套件有網頁管理功能, 我以後要把amavisd-new換掉, 都改成rspamd

以下是docker安裝時, 遇到letsencrypt的問題的解法,mailu 內建letsencrypt, 但我一律改成使用自己的reverse proxy

1. 修改mailu.ini , 把REAL_IP_FROM 改成reverse proxy ip
REAL_IP_HEADER=X-Real-IP
REAL_IP_FROM=x.x.x.x,y.y.y.y.y
2. 利用scripts 把 reverse proxy 中的letsencryp 的認證檔案放到 docker-compose目錄下的 certs 裡面 , 檔名為
cert.pem ,  key.pem

mailu使用network bridge 的方式, 所以maillog看不到外界真實存取的ip , 若需要fail2ban 將無法正常使用, 官網說可以用rate limit方式取代, 但我覺得這不是重點, 重點在於maillog無法反映真實ip紀錄, 這企業很難認同.