郵件認證詳解:SPF、DKIM 和 DMARC 設定指南

SPF DKIM DMARC 郵件認證 送達率
披露:Email Wiki 上的部分連結為 VPS 服務商(如 Vultr)的聯盟連結。透過這些連結購買,我們可能獲得佣金,但不會對您產生額外費用。這有助於我們維持網站免費。所有教程均獨立撰寫,我們僅推薦適合自建郵件伺服器的可靠服務。

如果你在運營自建郵件伺服器,要想讓郵件穩定送達,就必須實作三項認證標準:SPFDKIMDMARC

為什麼需要郵件認證

標準作用
SPF宣告哪些伺服器有權以你的網域發送郵件
DKIM對外發郵件進行密碼學簽章,證明郵件未被竄改
DMARC將 SPF 和 DKIM 結合,告知收件方認證失敗時如何處理

第一部分:SPF

建立記錄:

example.com.  IN  TXT  "v=spf1 ip4:203.0.113.10 ~all"

驗證:

dig TXT example.com +short

第二部分:DKIM

安裝 OpenDKIM

sudo apt update
sudo apt install opendkim opendkim-tools -y

產生金鑰對

sudo mkdir -p /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s mail -D /etc/opendkim/keys/example.com/
sudo chown -R opendkim:opendkim /etc/opendkim/keys/

發布 DNS 記錄

cat /etc/opendkim/keys/example.com/mail.txt

在 DNS 中建立 TXT 記錄:

  • 名稱mail._domainkey.example.com
  • :貼上完整的 p=... 內容

設定 OpenDKIM

編輯 /etc/opendkim.conf

Mode                  sv
Canonicalization      relaxed/simple
Domain                example.com
Selector              mail
KeyFile               /etc/opendkim/keys/example.com/mail.private
Socket                inet:8891@localhost

與 Postfix 整合

/etc/postfix/main.cf 中新增:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

重新啟動:

sudo systemctl restart opendkim
sudo systemctl reload postfix

第三部分:DMARC

建立記錄_dmarc.example.com):

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

策略選項(p=):

  • none — 僅監控(從這裡開始)
  • quarantine — 將失敗郵件投入垃圾信箱
  • reject — 直接拒絕失敗郵件

先設為 p=none,分析 2–4 週的報告後再逐步升級。

設定彙總

步驟記錄位置
SPFexample.com TXT "v=spf1 ..."網域 DNS
DKIMmail._domainkey.example.com TXT "v=DKIM1; ..."網域 DNS
DMARC_dmarc.example.com TXT "v=DMARC1; p=none; ..."網域 DNS

準備好部署你的郵件伺服器了嗎?

你需要一台 IP 信譽乾淨的可靠 VPS。立即使用 Vultr——獨立 IP、NVMe SSD、全球資料中心,最低 $6/月。