首頁 › 教學文章

SPF、DKIM、DMARC 設定教學:記錄範例、常見錯誤與檢查方法

發布日期 2026-11-03 / 更新日期 2026-11-03 / 作者 Yuki Nakazawa

如果您使用自己的網域寄送郵件,SPF、DKIM 和 DMARC 的設定已經不再是可有可無的選項。請依以下順序進行:發布一筆 SPF 記錄,以 2048 位元金鑰啟用 DKIM 簽章,再發布一筆從 p=none 開始、並啟用報告的 DMARC 記錄。同時也請確認寄出郵件的 IP 位址設有相符的反向 DNS(PTR)。

無論您是透過共享主機、自己的 VPS、Google Workspace、Microsoft 365 或大量郵件寄送服務寄信,本教學都適用。內容包括可依需求修改的記錄範例、最常導致驗證失敗的錯誤,以及如何從實際郵件的標頭確認一切運作正常。

以下內容已於 2026 年 11 月對照 RFC 及 Google、Yahoo、Microsoft 的官方頁面確認。郵件服務業者的規定會變更,請以各業者的頁面為最終依據。

免費檢查您的網域或 IP 位址是否被列入約 345 個黑名單中的任何一個。

SPF、DKIM、DMARC 各自證明什麼,以及設定順序

SPF(Sender Policy Framework)讓網域在 DNS 中列出哪些伺服器可以代表它寄信。收件伺服器會查看信封寄件者(SMTP 的 MAIL FROM 地址,之後會顯示為 Return-Path),取得該網域的 SPF 記錄,再檢查連線過來的 IP 位址是否在清單中。單靠 SPF,無法證明讀者看到的 From 地址是否可信。

DKIM(DomainKeys Identified Mail)會在每封郵件加上加密簽章。寄件系統以私密金鑰簽署,收件端再用發布在 DNS 上的公開金鑰驗證簽章。有效的簽章可證明簽署網域(d= 的值)為該郵件負責,而且已簽署的標頭與內文在傳送途中沒有遭到竄改。

DMARC(Domain-based Message Authentication, Reporting and Conformance)將上述兩者與讀者看得到的 From 網域連結起來。只有在 SPF 或 DKIM 通過,而且通過驗證的網域與 From 網域對齊(alignment)時,郵件才算通過 DMARC。DMARC 記錄也會告訴收件端,您希望如何處理驗證失敗的郵件(不處理、隔離或拒收),以及要將彙總報告寄到哪裡;透過這些報告,就能找出您遺漏的寄件來源。

機制記錄的位置檢查的內容
SPFexample.com 的 TXT寄件 IP 與 MAIL FROM 網域
DKIMselector._domainkey.example.com 的 TXT(或 CNAME)簽章與 d= 網域
DMARC_dmarc.example.com 的 TXT與 From 網域的對齊,以及政策與報告

設定順序

  1. 列出所有以您的網域名義寄信的系統:自己的伺服器、Google Workspace 或 Microsoft 365、電子報與交易郵件服務、網站表單、請款與客服工具。
  2. 發布一筆涵蓋所有寄件來源的 SPF 記錄。
  3. 在每個寄件系統上啟用 DKIM,並發布其公開金鑰。
  4. 發布 p=none 並設有 rua 報告地址的 DMARC。Google 建議在設定 SPF 和 DKIM 後等待 48 小時,再加入 DMARC。
  5. 閱讀報告、修正驗證失敗的來源,然後改為 p=quarantine,最後再改為 p=reject。

SPF 設定:一筆記錄、十次查詢

SPF 是設在網域本身的 TXT 記錄。以下範例是一個從自有伺服器透過 IPv4 和 IPv6 寄信,同時也使用 Google Workspace 的網域:

example.com.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 ip6:2001:db8::10 include:_spf.google.com ~all"

在多數 DNS 控制台中,主機欄位留空(或輸入 @),類型選擇 TXT,再貼上從 v=spf1 開始的值。常用的組成元素如下:

寄件來源要加入的內容
自己的 VPS 或郵件伺服器ip4:203.0.113.10 和/或 ip6:2001:db8::10
Google Workspaceinclude:_spf.google.com
Microsoft 365include:spf.protection.outlook.com
共享主機或郵件服務業者文件中提供的 include: 或 IP 範圍

SPF 的常見陷阱

對於從不寄信的網域,請發布 v=spf1 -all,讓它更難被冒用。

DKIM 設定:2048 位元金鑰與選取器

DKIM 分為兩部分:寄件系統以私密金鑰簽署,DNS 則發布對應的公開金鑰。在 Google Workspace、Microsoft 365、多數主機控制台以及多數郵件服務中,您只要在管理主控台產生金鑰,再複製畫面上顯示的 DNS 值即可。

金鑰長度與選取器

請使用 2048 位元的 RSA 金鑰。RFC 8301 將 1024 位元定為下限,並指出簽署者應使用至少 2048 位元的金鑰;同時也禁止使用 rsa-sha1。Google 的建議也相同:如果 DNS 代管業者支援,請選擇 2048 位元,只有在不支援時才退而使用 1024 位元。

選取器(selector)是用來識別郵件由哪一把金鑰簽署的標籤,因此一個網域可以同時擁有多把金鑰,例如每個寄件服務各一把,或每個輪替週期各一把。公開金鑰位於 selector._domainkey.yourdomain。Google Workspace 的預設選取器是 google。Microsoft 365 使用 selector1._domainkey 和 selector2._domainkey 兩筆 CNAME 記錄,指向由 Microsoft 代管的金鑰;由於格式因租用戶而異,請從 Defender 入口網站或 Get-DkimSigningConfig 取得確切的指向目標。

發布較長的公開金鑰

2048 位元的公開金鑰超過單一 DNS 字串所允許的 255 個字元,因此在區域檔(zone file)中,會在同一筆 TXT 記錄內寫成多段加上引號的字串:

selector1._domainkey.example.com.  3600  IN  TXT  ( "v=DKIM1; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA(first part of your key)"
    "(rest of your key)IDAQAB" )

請將括號內的部分換成您實際的金鑰。收件端會把各段字串直接串接,中間不加空格,所以可以在金鑰中的任何位置分段。許多控制台會自動分段長字串:請先貼上完整的值,只有在控制台不接受時才自行分段。請確認複製時沒有遺漏任何內容;p= 為空值代表該金鑰已被撤銷。

在執行 Postfix 或類似 MTA 的自有 VPS 上,可以用 OpenDKIM 等簽章用 milter 產生金鑰組,例如 opendkim-genkey -b 2048 -s selector1 -d example.com。再依上述方式發布產生的公開金鑰檔案內容。

確認郵件確實已簽署

打開一封您寄出的郵件,尋找 DKIM-Signature: 標頭。其中的 d= 標籤應為您的網域,s= 則應為您發布的選取器。許多郵件服務預設會以自己的網域簽署;這樣雖然能通過 DKIM,但無法與您的 From 網域對齊,因此對 DMARC 沒有幫助。請開啟該服務的自訂網域驗證功能,讓 d= 變成您的網域。

DMARC 設定:從 p=none 開始,再逐步強制執行

DMARC 是設在您網域下 _dmarc 的 TXT 記錄。請從監控模式開始,也就是請收件端不要改變處理您郵件的方式,同時要求寄送彙總報告:

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

彙總報告是機器可讀的摘要,記錄了哪些 IP 位址以您的網域名義寄信,以及是否通過驗證;Google 建議使用專用的信箱或群組來接收。當報告顯示所有合法來源都能在對齊的情況下通過時,請編輯同一筆記錄來收緊政策,而不是另外新增第二筆:

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"
_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
標籤意義
v=DMARC1必要,且必須放在最前面
p=none(不採取動作)、quarantine(視為可疑,例如放入垃圾郵件資料夾)或 reject
sp=子網域的政策;若未設定,子網域會沿用 p=
rua=彙總報告的寄送地址;未設定就不會收到報告
adkim= / aspf=DKIM 與 SPF 的對齊模式:r 寬鬆(預設)或 s 嚴格

簡單說明對齊

要通過 DMARC,SPF 或 DKIM 至少要有一項針對與 From 網域相符的網域通過驗證。在寬鬆模式下,只要組織網域相符即可,因此 d=example.com 的 DKIM 簽章可以與來自 alerts@news.example.com 的郵件對齊。嚴格模式則要求完全一致。郵件服務常在 Return-Path 中使用自己的網域,所以即使 SPF 通過也不會對齊;對這類郵件而言,讓 DKIM 對齊才是通過 DMARC 的實際做法。

如果想為子網域設定不同的政策,請加上 sp=。例如 p=reject; sp=quarantine 會拒收主網域驗證失敗的郵件,而子網域驗證失敗的郵件只會被隔離。

關於標準的更新

2026 年 5 月,DMARC 以 RFC 9989 重新發布,取代了 RFC 7489。現有的記錄仍可繼續使用,開頭也仍是 v=DMARC1。新標準刪除了 pct 標籤(除了 0 或 100 以外,這個標籤很少被準確套用),並新增了 t=y(測試模式)和 np(不存在之子網域的政策)等標籤。部分業者的說明頁面仍會出現 pct,因此逐步調整 p= 的值,是導入強制執行時最不易產生誤解的方式。

寄件 IP 的反向 DNS(PTR)

反向 DNS 會將 IP 位址對應回主機名稱。Google 要求所有寄信到 Gmail 個人帳戶的寄件者,都必須有 PTR 記錄,且其主機名稱能解析回同一個寄件 IP;Yahoo 則要求寄件 IP 有有效的正向與反向 DNS,並建議使用有意義、非通用格式的 PTR 記錄。

203.0.113.10       PTR  mail.example.com.
mail.example.com.  A    203.0.113.10

PTR 記錄並不在您網域的區域中,而是由擁有該 IP 位址的一方管理。因此在 VPS 上,您需要在供應商的控制台中設定(通常稱為反向 DNS 或 rDNS),再於自己的 DNS 中建立相符的 A 記錄(IPv6 則為 AAAA)。如果透過 IPv6 寄信,IPv6 位址也需要相同的設定。若使用 Google Workspace、Microsoft 365、郵件服務或大多數共享主機,寄件 IP 及其反向 DNS 會由業者代為管理。

如何驗證設定是否正確

查看 Authentication-Results

寄一封測試郵件到外部信箱,然後查看完整標頭。在 Gmail 中,打開郵件並選擇「顯示原始郵件」。Google 的 DKIM 說明指出,測試時應寄給其他使用者,而不是寄給自己。請尋找類似以下的標頭:

Authentication-Results: mx.example.net;
       dkim=pass header.i=@example.com header.s=selector1;
       spf=pass smtp.mailfrom=example.com;
       dmarc=pass header.from=example.com

實際的格式依收件端而異。重點是要有 spf=pass、dkim=pass 和 dmarc=pass,而且 header.i 或 header.d 以及 header.from 中都是您自己的網域。如果 SPF 以服務業者的網域通過,而 DKIM 顯示的是另一個網域,DMARC 就會失敗:請先修正 DKIM 的對齊。

直接查詢 DNS

dig +short TXT example.com
dig +short TXT selector1._domainkey.example.com
dig +short TXT _dmarc.example.com
dig +short -x 203.0.113.10

在 Windows 上,nslookup -type=TXT _dmarc.example.com 可以達到相同的效果。DNS 變更可能需要一段時間才會生效;Google 表示 SPF 和 DKIM 各自最多可能需要 48 小時才會開始運作。免費的線上檢查工具也能解析您的記錄,並幫您計算 SPF 的查詢次數。

如果驗證都通過,郵件卻仍被退回或進入垃圾郵件,請用本站的黑名單檢查工具確認您的寄件 IP 或網域是否被列入 DNSBL,並參閱〈因黑名單導致郵件無法送達〉了解後續步驟。

Gmail、Yahoo 和 Outlook.com 的寄件者規定

各大郵件服務業者現在都會強制要求驗證。截至 2026 年 11 月,其官方頁面的說明如下。

完整內容請參閱 Google 的寄件者規範、Yahoo 的寄件者最佳做法以及 Microsoft 的 Outlook.com 公告。即使您的寄送量遠低於門檻,現在就完成三項設定,日後門檻降低時也不會措手不及。Gmail 特有的問題排解,請參閱〈Gmail 無法送達您的郵件〉。

常見錯誤

如果您不想自行處理

我們可為您介紹承接解除申請、諮詢與建議的業者(JPY 50,000 起)。是否解除由各黑名單營運者決定,無法保證結果。

尋求協助

本站可能從所介紹的業者收取轉介費用。 About

常見問題

三項都需要,還是只設定一項就夠了?

Gmail 和 Yahoo 對寄送量少的寄件者接受 SPF 或 DKIM 其中一項,但大量寄件者三項都需要。只有 DMARC 能保護收件者實際看到的 From 地址,因此即使寄送量不多,也請三項都設定。

SPF 應該用 ~all 還是 -all?

Google 建議使用 ~all;Microsoft 則建議同時使用 DKIM 和 DMARC 的網域使用 -all。請先使用 ~all,等 DMARC 報告確認已找出所有寄件來源後,再決定是否切換。

DMARC 一直維持 p=none 可以嗎?

這樣可以符合 Gmail、Yahoo 和 Outlook.com 對大量寄件者的規定,但它要求收件端不採取任何動作,因此無法阻止冒名寄信。請把 p=none 當作監控階段,等報告沒有問題後,再改為 quarantine,最後改為 reject。

DNS 代管業者不接受 2048 位元的 DKIM 金鑰,該怎麼辦?

請在同一筆 TXT 記錄中,將金鑰分成多段加上引號的字串;收件端會將它們串接起來,中間不加空格。請查閱 DNS 代管業者的說明,確認其 TXT 長度限制。只有在業者完全無法儲存 2048 位元金鑰時,才使用 1024 位元的金鑰。

驗證全部通過,郵件卻還是進垃圾郵件,為什麼?

驗證只是入場券,並不保證郵件會進入收件匣。寄件者信譽、檢舉比率和黑名單列入狀況仍然很重要。如果您被 Spamhaus 列入,請參閱〈如何從 Spamhaus 黑名單移除〉。

參考的官方頁面

本文內容已於發布時對照下列官方頁面確認。各項政策與運作方式可能未經通知即變更,涉及重要決定前,請先查閱官方頁面。

相關文章

Gmail 封鎖你的郵件或丟進垃圾郵件?原因與解決方法

說明 Gmail 封鎖郵件或將郵件歸入垃圾郵件的原因、550 5.7.26 等退信代碼的意思,以及自己的 Gmail 收不到信時該如何處理。

郵件被列入黑名單?看懂退信訊息與解除黑名單的方法

郵件被黑名單擋下了嗎?教您看懂退信代碼、依正確順序排查原因、判斷哪些黑名單需要處理,並以正確方式申請移除。

Spamhaus 解除列入:如何讓 IP 或網域從黑名單移除

被 Spamhaus 列入了嗎?了解您被列入的是哪個清單(ZEN、PBL、XBL、CSS、SBL、DBL)、回傳代碼的意義,以及各清單正確的移除方式。

所有教學文章 →