2022年5月17日 星期二

DMARC是什麼? 超簡單為郵件伺服器訂製 SPF、DKIM、DMARC紀錄?

DMARC

郵件伺服器的安全的關係

從郵件伺服器資安的角度來看,IT同事們都知道垃圾郵件是頭號敵人也是ㄧ場長期抗戰。防堵垃圾郵件的辦法有很多種。對於新進郵件,關鍵字過濾、灰名單、IP及網域名黑名單都是基本配備。對於外寄郵件,使用者電腦本身的防駭、密碼複雜度、暴力密碼防猜機制也都不得馬虎。

對方郵件伺服器退信或當作垃圾郵件

上面提到的都是我方可以努力的方向。那如何讓我方寄出的郵件不被退信或是被當作垃圾郵件? 這也是很重要的課題。首先,確認我方郵件伺服器的IP或是網域名是否有在Internet上面的黑名單。這些垃圾郵件黑名單的單位不外乎是Spamhaus或是DNSBL裡面的眾多小黑名單。如果有,不要遲疑,盡快按照該網站上面的說明做除名的動作。

Gmail 跟 Outlook.com/Office 365近年來評估垃圾郵件的趨勢

過去幾年來,Gmail 跟 Outlook.com 已經開始新進郵件來源的網域名做 SPF、DKIM、DMARC的檢查。同時,在其垃圾郵件規範中也明確的標示並提倡大家跟進去完成 SPF、DKIM、DMARC的建置。

SPF、DKIM、DMARC是什麼?

從反垃圾郵件機制上面來說,在自家郵件伺服器上面建置這三樣機制算是比較簡單、無須人力維護,卻有其一定效果的方法。如果大家不知道這些是什麼,可以去維基百科上面去了解一下DMARC,小編在這裡就不贅述了。當郵件抵達收件方的時候,其郵件伺服器會查詢對應網域的DNS紀錄。如果值跟條件都符合,郵件就會被收下。如果有些不符合,郵件則會被退回或是被放到垃圾信資料夾。

我如何知道我的郵件伺服器有沒有DMARC這些東西?

如果不確定是否已經設定這三個DNS紀錄,不用著急。可以去MXToolBox網站上面查詢:
有時候如果忘記這個網站,也沒有關係。只要Google一下dkim checker、dkim record、dkim validator、dkim test等等字串。也是可以找到替代方案做檢查。至於SPF或是DMARC的部分,也可以做類似的搜尋,只是把dkim換成spf或dmarc即可。

將這三個紀錄綁在一起一次做設定是有其原因的。因為要建置 Google 提倡的DMARC之前,必須先設定好 SPF 跟 DKIM。讓我們一個一個按照順序來做設定。以下的範例,我們會用Zoneedit 這個DNS代管服務商來做演示。

SPF

登入DNS代管服務之後,打開DNS紀錄並新增一筆SPF紀錄。如果沒有看到SPF紀錄,就新增TXT 紀錄。在 HOST部分,保持@的預設值。在 TEXT (值) 的區塊填入類似下面的設定值:
Zoneedit SPF record
Zoneedit SPF record
"v=spf1 a mx ip:123.123.123.123 ptr ~all"

上面的雙引號不是必須輸入的,因為有些DNS代管要你填,有些不用。在ip4:後面的IP是自家郵件伺服器的IP位址。由於SPF的官網目前無法訪問,其餘的參數部分可以參考SPF wiki上面的記載。

DKIM

使用EVO Mail Server設定DKIM有多簡單? 我們可以透過這個兩分鐘影片一探究竟




首先,先確認自家郵件伺服器是否支援DKIM,如EVO Mail Server? 如果有支援,往下看。再來,要產生DKIM 需要的私密及公開金鑰有兩種方法。一種是從網路上面一些提供產生金鑰的網站。其缺點是產生的私密金鑰無法拿來與申請SSL憑證簽署的私密金鑰共用。
DKIM Generator
DKIM Generator

另外一種方法是使用mail server裡面內建的金鑰組生成工具。這裡面的私密金鑰則可以搭配同時產生的憑證一起拿來做SSL憑證簽署。長遠角度來說,可以省去一些時間。
EVO Mail Server DKIM generator
EVO Mail Server DKIM generator
廢話不多說,下面是設定的步驟:
Zoneedit DKIM record
Zoneedit DKIM record
  1. 當上面敘述的金鑰組拿到以後,登入DNS代管服務並且新增用於DKIM的TXT紀錄。
  2. HOST值輸入郵件伺服器提供的DKIM Selector參數。如果不清楚Selector是什麼,請找郵件伺服器經銷商。以EVO 郵件伺服器為例,它提供的Selector是evoms_domainkey。
  3. TEXT (參數) 部分,貼上先前準備好的DKIM公鑰。如果是EVO Mail Server,點擊摘要頁面中間網路組態區塊裡面的主要網域DKIM檢測右手邊的藍色解決方案。此時,會跳出一個notepad的視窗,把裡面全部的字串圈選起來並且copy起來貼到參數區塊。
註記: 不易忘記把產生金鑰網站做出的私密金鑰也儲存起來跟郵件伺服器憑證相關檔案放在一起,檔案名範例: yourdomain_dkim_private.key。如果沒有儲存起來,所有動作都得全部從來一遍。如果是用郵件伺服器內建產生的,則不用擔心,因為郵件伺服器會自行處理儲存起來以後備用。

都建置好以後,我們可以利用Gmail收一封從自家郵件服器寄過來的郵件來檢查SPF跟DKIM是否已經生效。先登入Gmail帳號,然後點開新進的測試郵件。點擊在右上角的三個點按鍵,從選單中選擇Show original
Gmail - Show original
Gmail - Show original
在跳出來的視窗中,我們可以看到SPF跟DKIM都是PASS的狀態。
Gmail - SPF and DKIM pass status
Gmail - SPF and DKIM pass status

DMARC

在確認經由上面的方法或是下圖所示的MXToolBox網站對SPF跟DKIM的檢查通過之後: 
Verify SPF and DKIM in MXToolBox
Verify SPF and DKIM in MXToolBox
我們可以繼續設定DMARC。
Zoneedit DMARC record
Zoneedit DMARC record
  1. 登入DNS代管服務並且新增用於DMARC的TXT紀錄。
  2. HOST值輸入_dmarc
  3. TEXT (參數) 部分,可以參考DMARC官網對參數的詳細說明。範例如下:
    v= DMARC1; p=none; rua=mailto:postmaster@yourdomain.com
  4. 儲存設定之後,需要等幾小時讓DNS紀錄生效。然後我們可以利用MXToolBox做檢查。
  5. 日後,收件方的郵件伺服器會發送詳細或概要的DMARC報表給我們做參考。
MXToolBox check DMARC
MXToolBox check DMARC

小編在此做一些結論。現在看官們的郵件伺服器發出的郵件不會再因為缺乏SPF、DKIM、DMARC紀錄被退信。上面介紹的DNS紀錄建置不僅僅可以供一般的郵件伺服器之用,在類似Synology MailPlus Server (可以參考官方使用手冊) 的server appliance環境下面也可以拿來用。