有人冒用你公司網域寄詐騙信給客戶,傷的是商譽,甚至害客戶把貨款匯到假帳號。SPF、DKIM、DMARC 三項 DNS 設定,能讓收件方在信件落地前驗出真偽。本文白話拆解三者的原理、工程細節與常見誤區,並說明 Google、Yahoo 新版寄件規範為何讓你非設不可。
SPF、DKIM、DMARC 就是專門治這件事的三件套。它們都設在 DNS 裡,不用改你的信箱、也不用換郵件系統,卻能讓全世界的收件伺服器在信件落地前替你驗一次:「這封信到底是不是真的從這個網域出來的?」這篇我把三者的原理、工程細節,還有最容易踩的坑,說清楚。
先搞懂一件事:收件方到底在驗什麼
要理解這三件套,得先知道 email 有一個從設計之初就存在的弱點:你在信件上看到的寄件人地址(技術上叫 From 標頭,RFC 5322 規範),是可以隨便填的。就像寄一封實體信,信封上的寄件人你想寫誰就寫誰,郵局不會攔你。詐騙集團正是鑽這個縫隙,把 From 直接填成你公司的網域,一封信看起來就跟你親手寄的一模一樣。
更麻煩的是,一封信其實藏著兩個「寄件人」:一個是你眼睛看到的 From 標頭,另一個是躲在底層、負責投遞與退信的信封寄件人(Return-Path,技術上叫 RFC 5321 MailFrom)。這兩個可以不一樣,而冒名者最愛玩的把戲,就是讓底層那個乖乖通過驗證,卻把你看到的 From 偷天換日成別人。這個「兩個寄件人不一致」的縫隙,正是後面 DMARC 要補的關鍵。先記住這件事,下面就好懂了。
SPF:公告「哪些伺服器有資格用我的網域寄信」
SPF 全名是寄件者政策框架(RFC 7208),做的事情很單純:你在 DNS 裡公告一份名單,列出「哪些伺服器 IP 有資格用我的網域寄信」。收件方收到信,就拿信封寄件人的網域去查這份名單,比對來信那台伺服器的 IP 在不在名單上。在,SPF 就過;不在,就是可疑。
這個機制很有用,但它有一整排工程上非踩不可、也最常踩的細節,採購與 IT 都該心裡有數:
- 一個網域只能有一筆 SPF 記錄。很多公司先後找了不同廠商,各自加了一筆,結果同一個網域冒出兩三筆 SPF,收件方直接判定無效,等於整個 SPF 破功。正確做法是全部合併成一筆。
- DNS 查詢有 10 次硬上限。SPF 規範明訂,解析一筆記錄過程中觸發的 DNS 查詢不能超過 10 次。每多 include 一個外部平台,往往就多好幾次查詢,雲端服務一多很容易爆表。一旦超過,收件方回傳的不是「不通過」,而是 PERMERROR——所有驗證直接靜默失敗,你完全收不到任何警告。這時得靠扁平化(把 include 展開成固定 IP)或拆子網域來解。
- 結尾要用軟性標記還是硬性拒絕。名單之外的來源怎麼處理,寫法有兩種:一種是「標記為可疑但仍放行」(~all),另一種是「直接拒收」(-all)。剛上線、還沒把來源盤點乾淨時,先用前者比較安全,等 DMARC 監控確認沒漏網,再收緊成後者。但千萬別用「+all」這種等於開放任何 IP 都能寄的寫法,那形同把 SPF 整個作廢。
- 別再用 ptr 這個老機制。它靠反向 DNS 查詢驗身分,又慢又不可靠,規範早已建議停用,改用 ip4、ip6、a、mx、include 這些明確的寫法。
SPF 還有個先天限制一定要講明:它禁不起轉寄。只要信被轉寄一手(例如客戶把公司信箱設成自動轉到 Gmail),最後那台轉寄伺服器的 IP 通常不在你的 SPF 名單裡,SPF 就會失敗。這不是你設定錯,是機制本身如此——所以光靠 SPF 遠遠不夠,還得靠下面的 DKIM 補位。
DKIM:幫每封信蓋上「拆封即知」的數位封印
DKIM(網域金鑰識別郵件,RFC 6376)換了一個完全不同的思路。它不管信從哪台伺服器出去,而是用密碼學幫每一封信蓋一枚封印。做法是:你的郵件主機在寄信當下,拿一把只有你握有的私鑰,對信件的關鍵標頭與內文算出一段數位簽章,貼進信件一起送出去;你的公鑰則掛在 DNS 上公開。收件方收到信,用公鑰一驗,就能同時確認兩件事:這封信確實出自持有那把私鑰的你,而且從寄出到現在,內容一個字都沒被動過。
「內容沒被動過」是這裡的靈魂。DKIM 會對內文算一個雜湊值一併簽進去,只要路上有人改了一個字,雜湊值對不上,驗證立刻失敗。這也是為什麼 DKIM 比 SPF 耐得住轉寄——只要轉寄過程沒去動信件內文,那枚封印一路都還有效。工程上幾個要盯緊的點:
- 金鑰長度至少 2048 位元。早年很多系統預設 1024 位元,以現在的運算力已經偏弱,建議一律拉到 2048。
- 金鑰要定期輪換。業界慣例是大約每半年換一次私鑰,萬一某把鑰匙外洩,受害範圍也有限。輪換時透過不同的選擇器(selector)讓新舊金鑰並存,可以做到服務不中斷、平滑切換。
- 小心會改內文的中間環節。電子報平台、郵件論壇(mailing list)常會在信末自動加一段頁尾或退訂連結,這一改就破壞了內文雜湊,DKIM 隨之失敗。這類情況要嘛讓平台改用它自己的網域重新簽章,要嘛靠後面會提到的 ARC 機制接力保存。
DMARC:把兩把鎖,綁到「你真正看到的寄件人」上
講到這裡,SPF 和 DKIM 各自都能驗,但它們驗的都是底層那個寄件人網域,不見得等於你眼睛看到的 From。冒名者的高招正是:用一個自己控制、SPF/DKIM 都能過關的網域去寄,卻把 From 標頭寫成你的公司——底層驗證全過,收件人看到的還是你。SPF、DKIM 各自都沒說謊,可是騙局照樣成立。
DMARC(RFC 7489)就是來補這個洞的,它多做了一件別的機制做不到的關鍵事,叫做對齊(alignment):它要求「SPF 或 DKIM 驗過的那個網域,必須跟你看到的 From 網域一致」;兩者對不上,就算 SPF、DKIM 各自都過,DMARC 一樣判定失敗。對齊又分寬鬆與嚴格兩種——寬鬆允許主網域與子網域算同一家,嚴格則要求完全相同,一般企業用寬鬆即可。這一步,才真正把驗證結果綁死在使用者實際看到的那個寄件人身上。
除了對齊,DMARC 還交給網域主人兩樣別人給不了的武器:
- 下政策。你可以在 DNS 昭告全世界的收件方:驗不過的信該怎麼辦。p=none 是只觀察、不處置,p=quarantine 是丟進垃圾信匣,p=reject 是直接退回。這是唯一能讓你「主動要求別人幫你擋掉冒名信」的手段。
- 收報告。設定一個收報告的信箱後,各大收件方會定期把「有誰用你的網域寄信、通過了沒、被哪些 IP 冒用」整理成彙總報告寄回來。這是你唯一能看見自己網域被冒用實況的窗口,也是後面安全收緊政策的依據。
為什麼是「現在」非設不可
這三件套不是新東西,但這一兩年從「最好要有」硬生生變成「不設不行」,原因有三,樣樣都攸關你的營運:
- 主流信箱已經硬性要求。Google 與 Yahoo 從 2024 年 2 月起,對大量寄件者(概略以每天寄超過約 5000 封到個人 Gmail 帳號為界)要求 SPF 與 DKIM 都要設妥、DMARC 至少要有一個 p=none 政策、還要附上一鍵退訂,並把垃圾郵件投訴率壓在 0.3% 以下(最好低於 0.1%)。到 2025 年底,Google 更把不合規的信從「可能被擋」升級為直接退件;微軟的 Outlook 體系也跟進,對高流量寄件者祭出類似門檻。這已經不是加分題,而是及格線。
- 冒名詐騙的金額大到嚇人。依美國聯邦調查局 IC3 的統計,光是 2024 一年,商業電子郵件詐騙(BEC)造成的通報損失就約 27.7 億美元、超過兩萬一千件,單件損失中位數約 5 萬美元,而且近九成是被騙去做電匯——錢一匯出去幾乎追不回來。這正是本文開頭那個「假發票、改帳號」情境的真實規模。
- 大家都還沒設好,你設了就贏一截。市場調查顯示,一份約 550 萬個網域的抽樣裡,只有三成左右設了 DMARC,而其中超過半數還停在只觀察的 p=none、根本沒真正開始擋信。換句話說,把政策確實收緊到 quarantine 或 reject 的網域仍是少數——你只要做到,防護等級就領先絕大多數同業。
落地怎麼做:一套不會誤傷自己人的上線節奏
設這三件套,最怕的其實不是設不起來,而是「收得太急,把自己的正常信也一起擋掉」。所以正確的做法是有節奏地推,而不是一步到位。建議照這個順序走:
- 第一步,盤點所有合法寄信來源。把自家郵件主機、行銷電子報、發票系統、客服系統、CRM,甚至某些會替你發通知的雲端服務,通通列出來,一個都不能漏。這一步做不乾淨,後面收緊時一定誤傷。
- 第二步,先設好 SPF、DKIM,DMARC 從 p=none 起手。p=none 完全不影響信件投遞,只是把回報的水龍頭打開,讓你先看清楚「到底有誰在用我的網域寄信」。
- 第三步,讀報告、補漏、再慢慢收緊。盯著回報跑個幾週,把之前沒盤到的合法來源補進 SPF/DKIM,確認自己人都通過了,再把政策推進到 p=quarantine。過程中可以用百分比參數(例如先只對 10% 的失敗信生效,再往 25%、50%、100% 加),把風險分批攤開。
- 第四步,收到 p=reject,並顧好子網域。最終目標是 p=reject——這才是真正能擋死冒名的等級。同時別忘了用子網域政策(sp=)把那些沒在用、卻可能被拿來冒名的子網域一起管起來,否則等於留了一道後門。
另外兩個進階觀念也順帶認識:一是 ARC(RFC 8617),它專門解決轉寄與郵件論壇把 SPF/DKIM 打斷的問題,由可信的中間伺服器把「原本驗過」這件事接力保存下來,讓最終收件方仍認得;二是 BIMI,當你的 DMARC 收到 reject、且對全部失敗信生效之後,可以進一步讓你的品牌 logo 顯示在收件方的寄件人欄旁邊,不過那需要額外的商標驗證憑證與年費,屬於行有餘力再做的加分項。
幾個最常見、也最傷的誤區
- 「我公司信不多,應該不用設。」被冒名跟你寄多少信完全無關,只跟你的網域「有沒有防護」有關。沒設,再小的公司都可能被拿去騙客戶。
- 「設了 SPF 就等於做好防偽了。」SPF 只驗底層寄件人、又禁不起轉寄,單靠它擋不住那種把 From 換成你的冒名信。三件套要一起上,DMARC 的對齊才是真正的鎖。
- 「DMARC 設 p=none 就安全了。」p=none 只是在旁邊看,不會擋任何一封信。停在這一步,等於裝了監視器卻沒鎖門。監控是過程,不是終點。
- 「一次直接設 p=reject 最省事。」沒把來源盤乾淨就硬上 reject,最容易把發票、電子報這些自己的正常信一起退掉,反而釀成營運事故。務必照節奏走。
廷皓長期服務高雄、台南、屏東一帶的企業,這類設定我們替客戶處理過不少。從盤點你所有的寄信來源、正確寫好 SPF/DKIM,到帶著你從 p=none 一路安全收緊到 p=reject、讀懂每週回報,我們都能一手包辦。讓你的網域不被冒名、正常信也確實寄得到,需要協助,歡迎跟我們聊聊。
查核資料
- Email sender guidelines Google Workspace Admin Help · 2026-08-12