前言

這段日子我花了不少時間去設置電郵訂閱功能
那麼設置 SMTP 就成了必不可少的一環
不論你是想要自己架設 SMTP 伺服器還是使用其他 SMTP供應商提供的服務
Domain DNS 的設置都成了不可繞開的話題

今天,就讓我們來看看 SPF, DKIM, DMARC, MX
這些從沒聽說過的東西究竟是什麼
以及是要怎樣設置吧


SPF (Sender Policy Framework)

DNS 記錄

  • 類型: TXT 記錄
  • Host:和郵箱域名相同 (e.g. mail.thinkdb.site)
  • 值:SPF 記錄 (e.g. v=spf1 a mx ip4:1.34.128.32 ~all)

描述

SPF 就是有一個列表告訴收件信箱
這個發件郵箱的域名允許什麼發件主機的 IP 或域名使用

如果發件主機的 IP 或域名並沒有出現在 SPF 列表之上
那就可以肯定這是冒認發出的郵件了

對於 SPF 記錄的內容解說
有一個網頁就寫得挺好的
我就抄過來放在這裏吧

可定義的參數內容有

  • all 符合任何主機,它寫在 SPF 記錄最後以符合在其前面所列出的主機。
  • ip4 符合 IPv4 位址或網路範圍。
  • ip6 符合 IPv6 位址或網路範圍。
  • a 符合主機名或域名。
  • mx 符合域名的 MX 記錄,一般企業郵件進出都是同一台的時候都會指定此參數。
  • include 將發件人 IP 和 SPF 記錄指向另一個域,這種符合機制通常用於雲服務。

特別要注意的是 all 的前綴描述

  • +all: 信件預設都放行。
  • –all: 硬性拒絕,拒絕來自非合法IP來源的郵件。
  • ~all: 軟性拒絕,郵件可被接受,也可被標記為垃圾郵件被進行後續處理。
  • ?all: 沒有任何規則需求。
Mail Server 知識庫 – 如何設定 SPF (raidenmaild.com)

DKIM (Domain Keys Identified Mail)

DNS 記錄

  • 類型: TXT 記錄
  • Host:郵件發送服務提供者指的的域名,通常是<服務提供者的名字>._domainkey.<郵箱域名> (e.g. google._domainkey.mail.thinkdb.site)
  • 值:DKIM 記錄 (e.g. v=DKIM1; k=rsa; p=BhjdfMhjh5hbjKDSDhbnasdkjh)

描述

DKIM 其實就是一個公開金鑰
郵件發信人在發出信件的時候會使用私密金鑰對信件進行簽署
然後收件郵箱就會使用 DKIM 記錄的公開金鑰來驗證該簽署
如果不過通過驗證
那就表示這個郵件是被人冒認發出的或是被修改過的
詳見:什么是 DKIM 签名?DKIM 签名完全指南 (powerdmarc.com)

驗證的過程有點複雜
但也是很有趣的
下面這部影片說的挺簡單易懂的
有興趣想要了解更多的看客們可以看看


DMARC (Domain-based Message Authentication, Reporting and Conformance)

DNS 記錄

  • 類型: TXT 記錄
  • Host:_dmarc.<郵箱域名> (e.g. _dmarc.mail.thinkdb.site)
  • 值:DMARC 記錄 (e.g. v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com)

描述

DMARC 是需要配合 SPF 和 DKIM 使用的
如果郵件未能通過 SPF 或 DKIM 的檢查
郵箱就會參考 DMARC 對郵件進行處理
若是沒有設置 DMARC 的話
部份郵箱可能會攔截相應的郵件
所以即使沒有想對偽冒郵件進行處理
也都是設置 DMARC 為好

DMARC 有很多選項
我讓 AI 幫忙翻譯了一下

v版本標籤,這是必需的。每個DMARC TXT記錄都以必需的 ‘v’ 或版本標籤開始,對應的值為 ‘DMARC1’。
p策略標籤,這也是必需的。它指定如果DMARC驗證失敗,接收者應該如何處理郵件。
rua這是一個可選但推薦的標籤,用於接收報告。
ruf這是一個可選的標籤,用於指定在DMARC驗證失敗時接收電子郵件失敗報告的地址。
adkim 和 aspf這些是可選的標籤,用於指定DMARC如何對電子郵件進行對齊檢查。
sp這是一個可選的標籤,用於指定子域的策略。
fo這是一個可選的標籤,用於指定何時應該生成失敗報告。
rf這是一個可選的標籤,用於指定失敗報告的格式。
pct這是一個可選的標籤,用於指定應該對多少百分比的郵件應用DMARC策略。
ri這是一個可選的標籤,用於指定聚合報告的間隔。
What are DMARC Tags? | EasyDMARC

當中最為常用的有三個
它們就是 v, p, rua
下面是一個例子和解釋

v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com

在這個範例中:

  • v=DMARC1:指定 DMARC 的版本。
  • p:指定你的寄件者政策,這裡設定為拒絕(reject)。你還可以選擇使用 quarantine(加入垃圾郵件文件夾)或 none(僅報告)。
  • rua:指定郵件報告的接收地址,這裡設定為郵件地址。
保障郵件安全的必備:解析 SPF、DKIM 與 DMARC 的設定及參數說明 | 電子豹部落格 (newsleopard.com)

MX (Mail Exchange)

DNS 記錄

  • 類型: MX 記錄
  • Host:和郵箱域名相同 (e.g. mail.thinkdb.site)
  • 優先順序:一個數字 (e.g. 10)
  • 值:收件伺服器域名 (e.g. mailhost1.example.com)

描述

MX 記錄和上文的幾項「發件用」的記錄不同
是一項「收件用」的記錄
就是告訴郵件發送人應該要把郵件發送到那一個伺服器

MX 記錄的範例:

example.com記錄類型:優先順序:值:TTL
@MX10mailhost1.example.com45000
@MX20mailhost2.example.com45000

這些 MX 記錄的網域前面的「優先順序」數字表示偏好;將偏好較低的「優先順序」。伺服器將始終先嘗試 mailhost1,因為 10 小於 20。當循序傳送失敗時,伺服器將預設使用 mailhost2。

電子郵件服務也可以設定此 MX 記錄,讓兩個伺服器都具有相同的優先順序,並接收相同數量的郵件:

example.com記錄類型:優先順序:值:TTL
@MX10mailhost1.example.com45000
@MX10mailhost2.example.com45000

這種設定讓電子郵件提供者能夠平等地在兩個伺服器之間平衡負載

DNS MX 記錄是什麼? | Cloudflare

結語

這些設定能為你提供多項功能,包括:

  • 確保你的發件人身份不被冒認
  • 確保你的郵件內容不被竄改
  • 指示有問題的郵件的處理方式
  • 指示接收郵件的伺服器的優先順序

為了能正常收發郵件
大家還是把能設置的都設置了為好
要是沒有設置好的話
有些郵箱可能會拒收你的郵件喔!~~
( •̀ ω •́ )✧

即使現在有這麼多的設置在保護我們免受垃圾郵件的滋擾和危害
但它們都不是完美的
在查看郵件和進行相應操作的時候還是小心為妙

畢竟,人類本身才是最大的安全漏洞啊

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Trending