前言
這段日子我花了不少時間去設置電郵訂閱功能
那麼設置 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 的前綴描述
Mail Server 知識庫 – 如何設定 SPF (raidenmaild.com)
- +all: 信件預設都放行。
- –all: 硬性拒絕,拒絕來自非合法IP來源的郵件。
- ~all: 軟性拒絕,郵件可被接受,也可被標記為垃圾郵件被進行後續處理。
- ?all: 沒有任何規則需求。
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 幫忙翻譯了一下
What are DMARC Tags? | EasyDMARC
v
版本標籤,這是必需的。每個DMARC TXT記錄都以必需的 ‘v’ 或版本標籤開始,對應的值為 ‘DMARC1’。 p
策略標籤,這也是必需的。它指定如果DMARC驗證失敗,接收者應該如何處理郵件。 rua
這是一個可選但推薦的標籤,用於接收報告。 ruf
這是一個可選的標籤,用於指定在DMARC驗證失敗時接收電子郵件失敗報告的地址。 adkim
和aspf
這些是可選的標籤,用於指定DMARC如何對電子郵件進行對齊檢查。 sp
這是一個可選的標籤,用於指定子域的策略。 fo
這是一個可選的標籤,用於指定何時應該生成失敗報告。 rf
這是一個可選的標籤,用於指定失敗報告的格式。 pct
這是一個可選的標籤,用於指定應該對多少百分比的郵件應用DMARC策略。 ri
這是一個可選的標籤,用於指定聚合報告的間隔。
當中最為常用的有三個
它們就是 v, p, rua
下面是一個例子和解釋
v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com
在這個範例中:
保障郵件安全的必備:解析 SPF、DKIM 與 DMARC 的設定及參數說明 | 電子豹部落格 (newsleopard.com)
- v=DMARC1:指定 DMARC 的版本。
- p:指定你的寄件者政策,這裡設定為拒絕(reject)。你還可以選擇使用 quarantine(加入垃圾郵件文件夾)或 none(僅報告)。
- rua:指定郵件報告的接收地址,這裡設定為郵件地址。
MX (Mail Exchange)
DNS 記錄
- 類型: MX 記錄
- Host:和
郵箱
域名相同 (e.g.mail.thinkdb.site
) - 優先順序:一個數字 (e.g.
10
) - 值:收件伺服器域名 (e.g.
mailhost1.example.com
)
描述
MX 記錄和上文的幾項「發件用」的記錄不同
是一項「收件用」的記錄
就是告訴郵件發送人應該要把郵件發送到那一個伺服器
MX 記錄的範例:
example.com 記錄類型: 優先順序: 值: TTL @ MX 10 mailhost1.example.com 45000 @ MX 20 mailhost2.example.com 45000 這些 MX 記錄的網域前面的「優先順序」數字表示偏好;將偏好較低的「優先順序」。伺服器將始終先嘗試 mailhost1,因為 10 小於 20。當循序傳送失敗時,伺服器將預設使用 mailhost2。
電子郵件服務也可以設定此 MX 記錄,讓兩個伺服器都具有相同的優先順序,並接收相同數量的郵件:
example.com 記錄類型: 優先順序: 值: TTL @ MX 10 mailhost1.example.com 45000 @ MX 10 mailhost2.example.com 45000 這種設定讓電子郵件提供者能夠平等地在兩個伺服器之間平衡負載。
DNS MX 記錄是什麼? | Cloudflare
結語
這些設定能為你提供多項功能,包括:
- 確保你的發件人身份不被冒認
- 確保你的郵件內容不被竄改
- 指示有問題的郵件的處理方式
- 指示接收郵件的伺服器的優先順序
為了能正常收發郵件
大家還是把能設置的都設置了為好
要是沒有設置好的話
有些郵箱可能會拒收你的郵件喔!~~
( •̀ ω •́ )✧
即使現在有這麼多的設置在保護我們免受垃圾郵件的滋擾和危害
但它們都不是完美的
在查看郵件和進行相應操作的時候還是小心為妙
畢竟,人類本身才是最大的安全漏洞啊
發佈留言