部落格
用郵局跟郵差解釋郵件SPF/DKIM/DMARC設定

隨著網路使用越來越多,垃圾郵件是每年逐漸快速增加,國際間針對防垃圾郵件的措施也越來越嚴格,我們在「郵件 SPF DKIM DMARC 最佳化設定」這篇文章中,詳細介紹了這些設定的技術做法,但也接到許多負責行銷電子報的小編客戶詢問,這些設定很技術,能不能比較白話的解釋,在郵件的傳遞過程中,SPF/DKIM/DMARC都擔任了什麼角色,也方便行銷部門的人去跟IT技術部門更好溝通,我們都用郵局跟郵差比喻,來解釋這些設定的原因。

電子郵件完全對應紙張信件寄送概念

傳統的紙張郵件寄送,已經有數百年歷史了,寄信人寫好信,貼上郵票丟在郵筒,郵差去收信之後,回到郵局經過層層轉交給收信方的郵局,收信方郵局再派郵差交到收信人手上。這樣的紙張信件寄送跟收信,不管那個國家幾乎都是相同過程。

電子郵件的發明,一般來說均認為從1971年Ray Tomlinson發出第一封郵件,但相較於紙張信件的數百年,電子郵件的傳送過程,幾乎就是參考紙張郵件作法也是可想而知。

寄信

電子郵件的流程,首先寄信人例如用Outlook寫一封郵件,按下寄送後,這封郵件會轉交到公司裡的郵件服務器,這就像是郵局的角色。從寄信人的郵局,接下來會經過多次的中繼,之後到收信人郵局。例如在實體的紙張信件,從台北內湖郵局寄到高雄澄清湖郵局的紙張郵件,也是先運到台北的郵局轉運站,一同載送到高雄郵局轉運站之後,分送往澄清湖郵局。如果是寄到更偏遠地方,這中間轉運站還會更多。

從台北內湖發信人郵局到高雄澄清湖收信人郵局,這中間也是透過中華郵政的郵差在轉送,只不過是開郵務大貨車傳遞。

收信

前面這封紙張郵件,郵差終於運到了澄清湖郵局,套用電子郵件的術語,澄清湖郵局就是收信人的收件服務器。

電子郵件到了收信服務器後,有兩種方式派送到收信人手上,一種像是手機App收件,如Gmail App,這種是透過推送(push),就像是郵差把在澄清湖郵局的信,遞交到收信人手上。

另一種方法是收信人的Outlook這種郵件軟體,會定期去檢查收信機有沒有他的信,如果有就收下來。這種方法就像是紙張郵件寄到郵政信箱,信件會放在郵局的郵政信箱號碼中,然後收信人要自己去郵局打開郵政信箱來取信。

紙張郵件的安全漏洞

前面我們描述了透過台北內湖郵局,寄信到高雄澄清湖郵局,這都是在中華郵政的派遞服務中,看起來似乎都很安全。但想想看,你家的門口的郵件信箱,是開放不設限的,中華郵政的郵差固然會把你的紙張郵件放進去,還很多廣告派報,也會塞信件進去。要是有心人士,就仿照了一份就如同是台北內湖郵局寄來的信件,郵票郵戳都很像,然後派人放到你的信箱裡,你很可能就相信了這封信。

在電子郵件領域,這就是釣魚信,它聲稱是來自花旗銀行給你的email通知說你有存款被凍結,但並
不是真的來自花旗銀行寄出,這是假造寄信人,也假造是透過中華郵政投遞信給你。等你不察打開這email,就會被騙去假的花旗銀行網站,然後被盜取帳號密碼。

但即使是真的花旗銀行用紙張信件,寄給你一份帳單通知書,然後也是透過中華郵政,但有沒有可能中間被有心人士截取竄改呢? 把帳單匯款帳號改成另一個,誘使你匯錢到非法帳號。

回到電子郵件的世界,這就是要確保信件一定是寄信人所寫,中間沒有被竄改,這就要加入數位簽章,收信的時候,去驗證寄信人的數位簽章。

因此一封紙張郵件,寄信人有可能是假的,幫忙送信的中華郵政有可能是假的,寄信過程也會被竄改。這些在電子化之後,電子郵件被假造更容易,而且數量更龐大,非得要有方法解決才行,國際間的解決方法,就是SPF/DKIM/DMARC。

明顯的黑名單IP先拒收

在整個SPF/DKIM/DMARC邏輯開始運作之前,電子郵件收信服務器會先做一個發信黑名單IP檢測,這是比對國際間垃圾郵件組織所提供的IP名單,若收到的電子郵件,發信主機在這黑名單裡面,話不多說一率封殺。

這就如同你在家裡一樓的信箱,每天都會有同一個人來塞廣告信,因此只要看到這人,不管他要塞什麼信,一律拒收。

因此電子郵件的發信主機,都要去維持這稱為IP 信譽(reputation)的分數, 分數越高越好。
https://www.senderscore.org/

解決假造中華郵政送信問題

SPF (Sender Policy Framework) 寄件者政策框架,就是來防止寄信服務器造假問題,以實體紙張郵件來比喻,就是防止這封信件不是由中華郵政來送信給你。也就是說當你去你家一樓的信箱取信時候,你要確認說,這封信一定是透過中華郵政寄送到你信箱,不是什麼騎機車的黑衣人直接投到你信箱裡。

電子郵件的寄信人(from),一定是個郵件地址,例如john@example123.com。收信的時候,先去檢查寄信人網域 (example123.com),透過這網域的DNS,查出它的SPF,也就是允許寄送這封信的寄信服務器。

舉例來說,假設我收到一封美國總統從白宮寄給我的電子郵件,寄信人為:
president@whitehouse.gov

這是透過110011.com這個寄件服務器,寄送到我的郵件信箱。

但我去反查白宮whitehouse.gov這個網域SPF,它上面記載了許可的寄件服務器,但並沒有110011.com這個寄件服務器,因此我立刻就知道這是別人假造美國總統寄信過來。

SPF解決了垃圾郵件龐大的問題,往後郵件寄信人聲稱是來自花旗銀行,收信服務器只要去查看寄信網域的SPF,立刻就能夠判斷這是不是真實來自花旗銀行的信件。

解決寄信過程被竄改問題

前面提到在紙張信件的寄送過程,也存在著被中途攔截竄改,因此在中世紀解決這個方法,就是封蠟印,寫完信後用唯一代表自己圖騰的蠟印封上,只要中途被打開這蠟印就會被破壞,就可確保寄信過程不會被竄改。

電子郵件也是如此,只不過這蠟印換成了數位簽章,這就是DKIM (DomainKeys Identified Mail)。Domain Key是域名密鑰,使用公開金鑰加密的基礎提供了數位簽章與身份驗證的功能,可以確保整封信件,包含寄信人、主旨、內文、附件等等的完整性。DKIM是在發信的時候,就會被加上。

收信服務器收到這封電子郵件之後,例如寄信人為john@example123.com,收信服務器會到example123.com的網域DNS,去取出DKIM的公開金鑰進行解密,若解密成功即可證明郵件傳送過程沒有遭到竄改。

解決寄信人是否真的存在問題

SPF解決了驗證發信機真偽的問題,DKIM解決了郵件被竄改的問題,在介紹DMARC之前,先要來解決究竟這個寄信人是否真有此人的問題。這就是電子郵件收信服務器,在收到john@example123.com,它也要合理地去懷疑,這個網域的john此人,是否真實存在於網域example123.com之中,這是透過DNS裡面的MX (Mail Exchanger) 這個設定。

MX紀錄在DNS裡面的用途,是在昭告天下,若要發送郵件到example123.com,該網域的郵件服務器,就是紀錄在MX裡面的 IP 地址。過去的電子郵件收信服務器,只會去確認下MX這紀錄的IP是真實存在,但由於假造的寄信人太多,現在的收信服務器,還會再去寄信人的MX郵件服務器,詢問這個寄信人john@example123.com帳號有沒有真實存在。

SPF/DKIM驗證不過的處理

前面我們提到,電子郵件的收信機,執行了一連串的驗證動作,SPF確認了寄信主機,DKIM確認信件沒被竄改,但要是這些驗證任何一關失敗了,該如何處置這封郵件呢? 這就是DMARC登場的時候了。

DMARC的全名為(Domain-based Message Authentication,Reporting & Conformance),它的動作就是當SPF/DKIM出現驗證失敗,給予收信伺服器該如何處置這封郵件的指示。

DMARC的處理方式為None (代表通過), Quarantine (隔離, 代表垃圾信), Reject (拒收)。

None的意思為,即使SPF/DKIM出現驗證失敗,這封電子郵件仍然照樣收下。DMARC這個是寄信人網域設定的政策,例如前面的寄信人郵件地址 john@example123.com。代表寄信網域example123.com,要求收信主機,即使SPF/DKIM出現驗證失敗,雖然這封信很可能有問題等等,但還是把郵件收下。

雖然說聽起來很不合邏輯,前面忙了這麼久,又是SPF又是DKIM,但怎麼驗證失敗還是把電子郵件收下。其實這是有不得已的苦衷,電子郵件從1965年發明,已經有無數種不同郵件程式,在不同的電腦跟作業系統應用,而因為SPF/DKIM這些都是屬於2000年之後才有的協定,為了讓舊有郵件系統仍然能夠運作,因此寄信方的網域可以設定成,收信服務器即使驗證失敗仍然收信。

Quarantine (隔離)一般來說對收信伺服器,就是標註為垃圾信,然後放行。因此會跑到Outlook或是Gmail等收信程式的垃圾信匣。

Reject (拒收)這就是拒絕此封信,不像前面兩項都是會收下這封信,這是最嚴格的設定,若是檢查SPF/DKIM出現驗證失敗,收信端郵件服務器會拒收該封郵件。

在收信伺服器如果有發現要被隔離跟拒收的信,除了執行該項政策之外,搞不好是真的被駭客偽造發信網域的信件,收信端最好是要通報這個狀況,給發信人的網域管理者,因此在DMARC裡也有這種通報的機制建立,告訴寄信人網管此種異常狀況。

從Yahoo郵件理解垃圾信阻擋

對SPF/DKIM/DMARC有概念之後,我們透過Yahoo郵件的例子,你就可以很深刻的體會,為何這些設定能夠阻擋大量的垃圾信。

Yahoo 郵箱是在1997年推出(那時候Google都還沒誕生,要到1998年Google才出現),當時Yahoo雅虎是全世界最火熱的Internet網路公司,因此免費的Yahoo郵箱誕生,就席捲了全球市場,因為在當時,要有一個電子郵件信箱,都是要付費才有(例如AOL)。因此幾乎有上網的人們,都會申請Yahoo免費郵箱,甚至都不只申請一個,反正是免費的,多申請幾個何妨。

1997年這是在網際網路剛發展的早期,各種網路詐騙、釣魚、垃圾信都還沒有,大夥們申請個Yahoo郵件信箱,就都單純的很用來互相發郵件,那真是個純真美好的年代。許多人即使有自己的ISP(如中華電信),也還是習慣用自己Yahoo信箱郵件帳號,再透過ISP來做發送,而不是透過Yahoo信箱的網頁去發送,這是非常普遍的做法。

但2000年之後,網際網路的使用被大量的普及開來,電子郵件的免費特色,被垃圾信業者大量的濫用。而人人有Yahoo信箱,再加上可以透過非Yahoo的發信機去發送,Yahoo郵件帳號,成了全世界最大規模的垃圾郵件寄信人地址,以及收信郵件地址。真不誇張,我自己的Yahoo郵件帳號,每次一打開都是幾百封的垃圾信,實在是受不了了,後來聽說Gmail很少垃圾信,我才轉到Gmail。

因此Yahoo公司是盡全力的想要解決垃圾郵件問題,DMARC就是由Yahoo提出而通過成為全球推薦的郵件通訊規範。而Yahoo在2016年3月28日,正式啟動DMARC,而Yahoo所設定的DMARC政策,就是reject拒收。也就是說,假設收信服務器發現 xyz@yahoo.com (以及全球Yahoo國際郵箱域名)這封信的寄信服務器,不是來自Yahoo發信服務器(SPF驗證失敗),也就是非透過Yahoo的網上信箱線上撰寫,那收信服務器就會拒收此一郵件。

很多非正式的統計都聲稱,從那天之後,網路上的郵件流量,瞬間有巨大的下降。可見SPF、DMIM再結合DMARC真的是防範垃圾信的寶劍。

結語

沛盛資訊辦過很多次客戶的教育培訓,跟行銷小編講解郵件DNS的重要性,小編們完全不懂電腦技術,但很會行銷活動吸引客戶有一套,我們都用這種「郵局、郵差」範例,解釋如何要去防止假的郵局/郵差,如何確保信件不被竄改等等,很生活化的例子,行銷小編們馬上就能體會了。

許多客戶來尋找沛盛電子報的方案,由於大家多半都有原本的電子報服務,我們就會詢問出現什麼狀況不滿意,開啟率低絕對是最大的問題。如果電子報都被送進了收信端的垃圾信匣,那開信率低是絕對的結果。但不懂的電子報廠商,看到開信率低,就說要改主旨,但再怎麼改越改開啟越低。這就是根本開錯藥,正確的藥方就是要理解郵件DNS這些架構原理,做好SPF/DKIM/DMARC等設定,自然進垃圾信匣就少,開啟率就自然升高。

那為何其他的電子報廠商,不懂郵件DNS這些道理呢? 原因很簡單,因為台灣只有沛盛是自己研發郵件引擎,擁有技術能夠設定郵件的DNS,因此我們會教客戶也會協助客戶設定。但其它的廠商,都不是自己研發郵件發送引擎,沒有能力做郵件DNS的設定,自然也不敢跟客戶說明白了,只能隔靴搔癢請客戶說要改主旨喔等等。

了解了郵件DNS在傳輸每封信扮演的角色,要用電子報,還是要選有技術能力的沛盛資訊。