你的信進垃圾桶,可能不是程式的問題

嗨,我是凱文大叔。

你把寄信功能做完了。註冊信、通知信、電子報,程式跑得好好的,API 回 200,log 顯示 sent。

然後你收到一則訊息:

「我沒收到信耶。」

去垃圾郵件匣一看,信在那裡。

這時候很多人會回頭檢查程式碼——但問題通常不在那裡。因為收件伺服器根本不認識你的程式,它只認得你的網域,以及你在 DNS 上留下的那幾行字。

那幾行字,決定了 Gmail 要不要相信「這封聲稱來自你的信,真的是你寄的」。

今天先把觀念講清楚:那幾行字各自在回答什麼問題。

收件伺服器在問三個問題

一封信送到 Gmail 門口,它不會直接放行,而是會問:

  1. 這封信真的是從那個網域授權的伺服器寄出的嗎? → SPF 在回答
  2. 這封信在路上有沒有被改過? → DKIM 在回答
  3. 前兩題沒過的話,我該怎麼處理? → DMARC 在回答

這三個不是三選一。2024 年起,Gmail 和 Yahoo 對大量寄件者的要求就是三個全都要有。

先澄清一個最常見的誤會:MX 跟寄信無關

還有一個設定叫 MX,但它回答的是完全不同的問題:別人要寄信給這個網域,該送到哪台伺服器?

MX 管的是「收信」。 你能不能把信寄出去、寄出去會不會進垃圾桶,跟 MX 一點關係都沒有。

所以「我 MX 設好了,為什麼信還是進垃圾桶」——因為收件方在判斷要不要信任你的時候,根本不會去查你的 MX。

反過來也成立:你可以只寄不收(noreply@ 就是這樣,網域上根本沒有 MX),也可以只收不寄(把 MX 指向轉寄服務,這種情況不需要動 SPF)。

搞清楚這件事,你才不會在「只是想加個聯絡信箱」的時候,去亂改 SPF 而把原本正常的寄信搞壞。

工商時間

這一整套「東西能跑,但上線之後才發現有一層沒做對」的問題,其實是後端開發的日常。而且往往不是技術難,是你不知道有那一層。

我的 Hahow 課程 《AI 賦能全端開發:從零打造企業級智慧應用》 就是在補這種洞:不只教你把功能做出來,而是帶你用 Spring Boot、Spring AI、React、資料庫、權限、RAG 與 AI Agent,完成一套真的能上線的企業級應用——包含架構、測試、部署與資安。

👉 前往 Hahow 課程頁
現在有早鳥優惠,粉絲輸入折扣碼【HHAI83】還能打83折