Email

兩台伺服器上的一個域的 SPF 和 DKIM

  • August 12, 2020

我按照本指南為要從域的伺服器發送的電子郵件設置 SPF 和 DKIM。該伺服器是域的實際電子郵件伺服器的位置。

我現在想設置另一台伺服器,以便能夠通過 PHP 從域發送電子郵件。誰能建議這是如何完成的?步驟完全一樣嗎?

您正在遵循的教程解釋了一個基本的 Postfix+Dovecot 設置,如第一部分所述。我不喜歡設置 SPF 和 DKIM以通過垃圾郵件過濾器的態度,因為 SPF 的目的是防止其他人將您的域用作信封發件人,而 DKIM 的目的是驗證域已授權此郵件並且簽名的內容沒有被修改。

本教程的作者採取了一些捷徑,雖然他很好地解釋了所有步驟並證明了他自己的一些解決方案的合理性,但它幾乎沒有說明可以或應該更改哪些設置以滿足您自己的需要。

防曬指數

讓我們看看教程中給出的記錄,並揭穿解釋中的缺陷。

TXT  @   "v=spf1 mx ~all"

解釋:

  • TXT表示這是一條 TXT 記錄。
  • @在名稱欄位中輸入。
  • v=spf1表示這是一條 SPF 記錄,並且 SPF 記錄版本為 SPF1。

@替換為 eg 中的變數,$ORIGIN example.com.這意味著該記錄將用於域頂點 ie example.com. IN TXT

  • mx表示允許 MX 記錄中列出的所有主機為您的域發送電子郵件,而禁止所有其他主機。

如果用於接收郵件的相同伺服器也在發送郵件,您可以使用mx機制。這在更大的配置中並不總是正確的,有時還有一些額外的出站郵件來源不會用於接收消息,例如新聞通訊系統。由於該mx機制需要先對MX記錄進行額外的 DNS 查詢,然後再對相應的A記錄進行查詢,因此通常最好使用ip4&ip6機制直接告知允許的 IP 地址(或 CIDR)。

  • ~all表示來自您域的電子郵件只能來自 SPF 記錄中指定的主機。來自其他主機的電子郵件將被標記為偽造。可能的替代方法是+all, -all, ?all,但它們很少使用。

~意味著SoftFail,因此它不會阻止任何人使用您的域,但可以用於垃圾郵件評分。-all不是“很少使用”,但可能是生成硬失敗結果的正確限定符,允許完全拒絕消息。

通過這些更正,允許僅來自兩個伺服器的消息的 SPF 記錄將是例如

example.com. IN TXT "v=spf1 +ip4:192.0.2.88 +ip4:198.51.100.61 -all"

DKIM

DKIM 有選擇器(RFC 6376, 3.1),允許多個來源為同一個域簽署消息而不共享密鑰。本教程default用作選擇器,但可以將其替換為例如伺服器的名稱以使其唯一。然後您可以在兩台伺服器上擁有單獨的簽名密鑰並相應地發佈公鑰,例如

mailserver._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=...
newsletter._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=...

default提示:如果您使用瀏覽器中的搜尋工具突出顯示教程中出現的所有單詞,很容易看到您應該修改什麼。

引用自:https://serverfault.com/questions/1029757