如果你在運營自建郵件伺服器,要想讓郵件穩定送達,就必須實作三項認證標準:SPF、DKIM 和 DMARC。
為什麼需要郵件認證
| 標準 | 作用 |
|---|---|
| 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 週的報告後再逐步升級。
設定彙總
| 步驟 | 記錄 | 位置 |
|---|---|---|
| SPF | example.com TXT "v=spf1 ..." | 網域 DNS |
| DKIM | mail._domainkey.example.com TXT "v=DKIM1; ..." | 網域 DNS |
| DMARC | _dmarc.example.com TXT "v=DMARC1; p=none; ..." | 網域 DNS |