SPF 記錄是一種常用於電子郵件認證的 DNS TXT 記錄。SPF 記錄包括一個獲授權從該網域發送電子郵件的 IP 位址和網域的列表。
閱讀本文後,您將能夠:
複製文章連結
發送方原則框架 (SPF) 記錄是一種 DNS TXT 記錄,其中列出所有所有獲得授權從特定網域發送電子郵件的伺服器。DNS TXT(「文字」)記錄允許網域管理員將任意文本輸入到網域名稱系統(DNS)中。TXT 記錄最初是為包含有關網域的重要資訊而創建的,但後來已經發展為服務其他目的。
最初創建 SPF 是因為電子郵件使用的標準協定——簡單郵件傳輸協定(SMTP)——本身並不驗證電子郵件中的「寄件者」地址。這意味著,如果沒有 SPF 或其他身份驗證記錄,攻擊者可以輕易假冒一個寄件者,欺騙收件人採取某種行動或共用資訊。
可將 SPF 記錄想像為門童管理的客人清單。如果某人不在清單上,門童就不會讓其進入。同樣,如果 SPF 記錄的清單中沒有某個發送者的 IP 位址或網域,接收方伺服器(門童)將不投遞哪些電子郵件或將它們標記為垃圾郵件。
有很多基於 DNS 的機制可以幫助電子郵件伺服器確認電子郵件是否來自可信來源,SPF 記錄只是其中之一。基於網域的消息驗證、報告與一致性(DMARC)和網網域名稱金鑰識別郵件(DKIM)是另外兩種用於電子郵件驗證的機制。
值得注意的是,SPF 曾經有一個專用的 DNS 記錄類型。該專用 DNS 記錄類型已被棄用,僅使用 TXT 記錄。
郵件伺服器檢查 SPF 記錄的過程比較簡單:
SPF 記錄必須遵循一定的標準,以便伺服器理解其內容。如下是 SPF 記錄核心組成部分的示例:
v=spf1 ip4:192.0.2.0 ip4:192.0.2.1 include:examplesender.email -all
這個例子讓伺服器知道這是什麼類型的記錄,聲明對這個網域而言被批准的 IP 位址和協力廠商,並告知伺服器如何處理不符合要求的電子郵件。我們分別說明各組成部分是如何實現這一點的:
v=spf1
告訴伺服器這裡包含一條 SPF 記錄。每一條 SPF 記錄都必須以這個字串開始。ip4:192.0.2.0
和 ip4:192.0.2.1
被授權代表該網域發送電子郵件。 include:examplesender.net
是 “include”(包含)標記的示例,該標記告訴伺服器,有哪些協力廠商組織被授權代表該網域發送電子郵件。這個標記表示,被包含網域(examplesender.net)的 SPF 記錄內容應被檢查,其中包含的 IP 位址也應被視為已授權。一條 SPF 記錄中可包含多個網域,但這個標記僅適用於有效的網域。 -all
告訴伺服器,SPF 記錄中未列出的位址沒有被授權發送電子郵件並應被拒絕。 ~all
:表示未列出的電子郵件將被標記為不安全郵件或垃圾郵件,但仍會被接受;不那麼常見的是 +all
:表示任何伺服器都可以代表該網域發送電子郵件。 雖然本文中使用的示例相當簡單,但 SPF 記錄肯定會更加複雜。要確保 SPF 記錄有效,需要注意如下幾點:
all
部分結束,或包含一個 redirect=
部分(表示該 SPF 記錄由另一個網域託管)。 更多資訊請參閱官方 SPF 記錄文檔。
網域運營者使用 SPF 記錄的原因很多:
若要在 Cloudflare 中輕鬆設定 SPF 記錄,請使用電子郵件安全性 DNS 精靈。
進一步瞭解電子郵件的 DNS 記錄: