部落格
發電子報卻沒設定郵件SPF/DKIM/DMARC會發生什麼問題?

郵件DNS設定

一、收信服務器如何判定垃圾信

大企業發送電子報最怕被直接放入垃圾信匣, 但一封郵件為何會被收信服務器判定垃圾信, 這是國際間為了對抗垃圾信氾濫, 所訂定出一系列郵件傳輸規則, 通稱為郵件DNS,主要為SPF、DKIM與DMARC。這三項 規範將在後續詳細說明, 先透過以下這張圖片, 來解說SPF/DKIM/DMARC,如何在一封郵件發信與收信中發 生作用。

寄信人寫完電子郵件按下發送後,這封郵件在發信服務器端進行DKIM加簽(加入私鑰),確保過程不會遭到竄改。接下來傳送到收信端服務器,此時會先檢查發信機IP是否可靠,依照國際間專門發布濫發垃圾信黑名單IP比對, 確保沒有過往濫發垃圾信紀錄。通過之後收信服務器接著檢查DKIM(公鑰),看是否跟原本加簽私鑰相符,之後驗證 SPF,這是檢查寄信者網域是否有同意這個發信IP去發信。

▲原圖來自https://dmarc.org/,此為中譯方便理解。

接著進行DMARC檢查,也就是前述SPF/DKIM檢查 若有錯誤,這封郵件可以依舊發送、隔離(通常就是標注為垃圾郵件),或是拒收。然後郵件才傳給收信程式(例如Gmail網頁介面,或Outlook),此時檢查內文看是否可能為垃圾信件(例如:大促銷、大降價等文字)。

以Gmail為例,必須做到SPF、DKIM、DMARC通通 都設定且驗證通過,這封郵件才比較不可能被丟進垃圾信箱匣(另外還需根據郵件內文判定)。

二、郵件DNS快速設定整理

以下為針對網域名稱 sample.com透過《沛盛資訊》 郵件發送進行設定,僅以郵件DNS最常用做介紹,還有多 項進階做法可參考《沛盛資訊》官網。(若採用不同電子報發信系統,須依該系統進行修正)

SPF

完整網域名稱

sample.com

 

文字(TXT値)

v=spf1 include:spf.neweredm.com a mx ptr ?all

DKIM

完整網域名稱

s1024._domainkey.sample.com

 

 

文字(TXT値)

k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ UAA4GNADCBiQKBgQC5T4C4tyHsrVyiF
Zcqw4DGRDgfqtaPhEYqFSz/FSvVJywU1 pBNF3rWkaaOjrzEIIb1vcIydgGi7xSXGb Pqof9AnTHgVbX2cIASW09fTwTLokzj0d Z9gx9/Lsy7mjNvna4JQhLGl25oFsv2x3fw oRoynTw+2B9bRzCbTwtGX9mWOwIDA QAB;

注意: p=MIG…….整串內容不能有斷行。

 

DMARC

完整網域名稱

_dmarc.sample.com

文字(TXT値)

v=DMARC1; p=none

 

三、郵件DNS設定說明

(一)SPF設定

SPF(Sender Policy Framework,寄件者政策框架) 用來規範在選定郵件的發送服務器位址,可以用來發送寄件人的網域郵件。這機制可以避免垃圾信濫發業者,偽裝網域發送假冒郵件。SPF設定裡,有列出明確許可郵件的發信機網域名稱,郵件收信服務器透過檢查發信人網域SPF,就知道這封電子郵件是否來自被允許發信機位址。

通常企業網域SPF會列出自己公司認可的對外郵件服務器名稱,但以行銷電子報而言,則是透過像《沛盛資訊》這種正規專業電子報發送廠商代發,因此電子報寄件人網域, 就需加入許可的發信服務器網域/IP。SPF幾乎已經是各大郵件信箱,如Gmail、Yahoo、Outlook等收信時必驗證欄位,若檢查不過會明顯提示這封郵件來源有問題,議所有企業發送電子報都要加上SPF。

採用《沛盛資訊》作為電子報發送,使用寄件人信箱網域(sample.com),請新增一筆紀錄如下:

完整網域名稱

Type

文字(TXT値)

 

sample.com

 

TXT

include:spf.neweredm.com a mx ptr?all

P.S.上述spf.neweredm.com代表《沛盛資訊》發信機眾多 IP網域。

 

(二)DKIM設定

DKIM(DomainKeys Identified Mail,網域驗證郵件),是一種電腦數位簽章,採用公鑰與私鑰這種加密驗證法進行。在發送郵件時由發信服務器對郵件以私鑰進行簽 章,而在郵件接收服務器上,會透過DNS到發信者的網域 查詢 DKIM 紀錄,擷取上面記載的公鑰資料,然後對這封郵件做簽章解碼,如果公鑰與私鑰能配對成功,代表郵件確實為原始發信機所發出。

透過DKIM導入,收信郵件服務器可以驗證郵件絕對是原始郵件發信服務器所發出,而且在郵件複雜傳送過程中, 這封郵件內容也毫無被竄改過,這杜絕了濫發垃圾信業者, 透過假冒郵件發送機以及假冒私鑰簽章寄送垃圾信。由於是採用公鑰與私鑰簽章架構,因此除了在網域做DKIM設定之外,在郵件發信服務器上也要進行對應的私鑰設定。

以下為使用《沛盛資訊》作為電子報發信,以寄件人為 edm@sample.com,在sample.com DNS欄位增加一筆 TXT 紀錄:

完整網域名稱

s1024._domainkey.sample.com

 

k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQC5T4C4tyHsrVyiFZcqw4DG RDgfqtaPhEYqFSz/FSvVJywU1pBNF3rW kaaOjrzEIIb1vcIydgGi7xSXGbPqof9AnTHg VbX2cIASW09fTwTLokzj0dZ9gx9/Lsy7m jNvna4JQhLGl25oFsv2x3fwoRoynTw+2B9 bRzCbTwtGX9mWOwIDAQAB;

 

(三)DMARC設定

DMARC(Domain-based Message Authentication, Reporting & Conformance),是用來輔助SPF與DKIM 的不足,用來讓發信端網域通知收件端郵件的服務器,當 遇到SPF與DKIM設定檢查不過時,以此規則進行處理。最知名案例就是Yahoo在2014年,宣布DMARC設為「reject

(拒絕)」也就是說所有不是從Yahoo郵件服務器發出郵件,寄信人都不能用Yahoo郵件地址。

由於企業郵件架構可能極為複雜,DKIM設定還要發 信端服務器配合設定,所以某些企業郵件可能透過當地網 路提供商(ISP,如中華電信)做為郵件發信機,這也是合法的郵件, 不過由於眞假不一, 收信端很難知道遇到SPF/DKIM驗證不過時該拒絕還是放行。但假若寄件者絕對知道所有郵件都一定符合SPF/DKIM驗證,寄件方就可以透過DMARC通知收件方的郵件服務器,遇到驗證不過時處理方式(通過/隔離/拒絕)。

以電子報寄件人edm@sample.com,增加DNS之TXT紀錄:

完整網域名稱

Type

文字(TXT値)

_dmarc.sample.com

TXT

v=DMARC1; p=none

 

(四)用Gmail驗證設定

最準確的測試SPF、DKIM、DMARC有沒有設定成功,就是實際以電子報寄件人edm@sample.com,發送測試郵件到Gmail帳號,之後登入Gmail,如下圖指示來查看 Gmail郵件原始檔。


▲用Gmail驗證設定。

在郵件的原始檔內, 就可以看到S PF 、DKIM 、DMARC是否通過的訊息,務必做到這三項設定全部都通過,整個設定才算大功告成。

四、未設定郵件DNS所造成問題

(一)進入垃圾信匣

未設定或是沒有正確設定郵件DNS,絕對是電子報進 入垃圾信箱重要原因。由於收件服務器決定是否收下這封郵件首要判斷邏輯,就是檢查這封信發送IP是否為黑名單,其次就是檢查郵件相關DNS。對多數的品牌客戶,使用電子 報雲端發送系統,並不會遇到發送IP成為黑名單,但如果沒有事先妥善設定郵件DNS,幾乎都會遇到因為設定相關錯 誤,而被直接送進垃圾信箱。

在前一節已經詳細解釋過郵件DNS設定,做法並不複 雜,即使公司內部並沒有IT人員,負責電子報編輯及發送 行銷人員,只要依照快速設定說明,都可以進行設定。設定完畢之後務必使用Gmail收信測試,確認Gmail上已經顯示全部都通過才行。

(二)公司內收不到自己發出電子報

SPF代表哪些郵件服務器可以發送寄件人網域郵件,若透過電子報業者發送到公司內部郵件信箱(常見於員工測試電子報),由於這是一封來自外部郵件,但卻是使用公司自有網域寄入,就會被郵件服務器攔阻。因為正常公司網域郵件,都是公司自有郵件服務器寄出,但卻有來自外部郵件的寄件人,也是使用公司網域郵件,卻要寄郵件進入公司內部收件者。這就代表有可能是偽造寄件人,因此會被公司內郵件服務器所攔阻。

解決這問題當然要先設定好SPF,但若已經設定完成SPF,仍然無法收到測試電子報,則要在公司的郵件服務器中,將電子報寄件人設為白名單,允許此一寄件人寄送郵件進入公司內。