SPF
簡介¶
SPF(Sender Policy Framework) 是一種電子郵件驗證協議,用於防止寄件人地址偽造。它透過 DNS 的 TXT 記錄,明確列出哪些伺服器有權以你的域名(domain)發送郵件。當收件方伺服器收到聲稱來自某域的郵件時,會查詢該域的 SPF 記錄,確認寄件伺服器 IP 是否在允許清單內。若不在,郵件可能被標記為垃圾郵件或直接拒絕。
原理¶
SPF 驗證的是「信封寄件人」(envelope from),與郵件內顯示的 From 地址不同。收件方伺服器會檢查寄件 IP 是否符合 SPF 記錄中的規則。例如,v=spf1 include:eu.rp.oracleemaildelivery.com ~all 表示引用 Oracle Email Delivery 的 SPF 記錄,~all 代表 soft fail(軟性失敗),-all 則為 hard fail(硬性失敗)。其他常用機制包括 ip4、mx、a 等。
設定步驟¶
以 oci-email-delivery-設定 為例,你需要在 DNS 管理平台(如 cloudflare)為你的域名加入一條 TXT 記錄。例如,shinggo.xyz 的 SPF 記錄內容為:
v=spf1 include:eu.rp.oracleemaildelivery.com ~all
完成後,可以使用 dig TXT yourdomain.com 驗證記錄是否生效。若使用多個寄件服務(如 OCI 與 Microsoft 365),必須將所有 include 合併到同一條 SPF 記錄,因為每個域名只能有一條 SPF 記錄。
SPF 與其他驗證機制¶
SPF 通常與 DKIM 和 DMARC 並用。SPF 驗證寄件伺服器,DKIM 使用數位簽名驗證郵件完整性,DMARC 則告訴收件方如何處理未通過驗證的郵件。三者在 email-authentication 中缺一不可。
常見問題¶
- SPF 記錄缺失或錯誤:可能導致郵件被拒收或落入垃圾郵件。可透過
dig TXT example.com檢查。 - 與 cloudflare-email-routing 的關係:Cloudflare Email Routing 是「收信轉寄」服務,不影響 SPF;SPF 只管「發信」。
- 每個域名獨立設定:如
shinggo.xyz與benhoweb.com需各自擁有 SPF 記錄,不能共用。 - 配合 n8n 自動化:在 n8n 中使用 OCI SMTP 發信時,SPF 已由 OCI 的 include 機制覆蓋,無需額外設定。
總結¶
SPF 是電子郵件基礎設施中不可或缺的安全措施。正確設定 SPF,並搭配 DKIM、DMARC,能大幅提升郵件送達率與安全性。無論你使用 oci-cli 動態管理 Approved Senders,或透過 infisical 保存 API 金鑰,確保 DNS 中的 SPF 記錄正確,是穩定發信的前提。