前言
最近工作過程中需要設(shè)定郵件服務(wù)器颗管,其中涉及到dns服務(wù)器的設(shè)定陷遮。
整理并且記錄自己的理解。
種類
A垦江、CNAME帽馋、MX、NS比吭、TXT绽族、SPF
下面挨個介紹一下。
A記錄/AAAA記錄
IPv4:
- 示例:ns1.exmaple.com. IN A 198.51.100.2
- 解釋:【domain】 IN A 【IP地址】
IPv6:
- 示例:ns1.exmaple.com. IN AAAA 8fe0::8f61:ac8:30cd:a16e
- 解釋:【domain】 IN AAAA 【IP地址】
※IN的意思是「Internet」衩藤,不是IN/OUT的「IN」吧慢。
干什么用呢?
我們在瀏覽器輸入域名后赏表,需要向DNS服務(wù)器請求检诗,找到這個域名對應(yīng)的服務(wù)器IP。上面示例就是這么一條記錄瓢剿。
雖然域名和IP都可以變更逢慌,但是相比來說域名變更更加簡單和隨意。所以當(dāng)網(wǎng)站更換自己域名的時候间狂,就需要修改這條記錄攻泼。
CNAME
- 示例:sub.example.com. IN CNAME hoge.example.com.
- 解釋:【別名】 IN CNAME 【原名】
干什么用呢?
給某一個domain起多個名字鉴象。
類似于忙菠,jd.com,jd360.com,jingdong.com雖然是不同名字的域名,但是可以指向同一個原名jd.com纺弊∨;叮可以讓企業(yè)的對外展示更加靈活。
舉例:
jd360.com IN CNAME jd.com
jingdong.com IN CNAME jd.com
jd.com IN A 123.123.123.123 (這條是A記錄例子)
MX記錄
- MX記錄(Mail Exchange):郵件路由記錄
在DNS上設(shè)定俭尖,用于將郵箱地址@符號后的域名指向郵件服務(wù)器氢惋。 - 示例:example.com. IN MX 10 mail.example.com.
- 解釋:【domain】 IN MX 【優(yōu)先度】 【郵件服務(wù)器】
干什么用呢洞翩?
當(dāng)發(fā)信側(cè)服務(wù)器給受信側(cè)發(fā)郵件時,首先會要求DNS服務(wù)器解析受信側(cè)郵箱地址中@后面部分的域名對應(yīng)的MX記錄(DNS的寫法可以理解成example.com 的A記錄下面焰望,有一行上面示例的MX記錄骚亿,當(dāng)然郵箱服務(wù)器也有對應(yīng)的A記錄)。
這樣熊赖,郵件就直接發(fā)到對應(yīng)的MX記錄的A記錄里的IP了来屠。
例子:給test@exmaple.com發(fā)郵件的話,
DNS會返回給發(fā)信側(cè)198.51.100.3這個IP
exmaple.com. IN A 198.51.100.2
example.com. IN MX 10 mail.example.com.
mail.example.com. IN A 198.51.100.3
※如果是普通用戶通過【exmaple.com】瀏覽主頁震鹉,那么DNS繼續(xù)返回 198.51.100.2 俱笛。這個其實也需要DNS判斷請求服務(wù)器是郵件服務(wù)器還是普通的訪問。
NS記錄
- 指定域名解析服務(wù)器传趾。
- 示例:example.com. IN NS ns1.example.com.
- 解釋:【domain】 IN NS 【DNS服務(wù)器】
干什么用呢迎膜?
指定該域名由哪個DNS服務(wù)器來進(jìn)行解析。
TXT記錄
- 示例:ns1.exmaple.com. IN TXT "聯(lián)系電話:XXXX"
- 解釋:【domain】 IN TXT 【任意字符串】
干什么用呢浆兰?
一般指某個主機名或域名的說明磕仅,或者聯(lián)系方式,或者標(biāo)注提醒等等簸呈。
SPF記錄
SPF記錄是TXT記錄的一個運用榕订。后面的備注需要按照指定的格式才能有效。
- 示例:exmaple.com. IN TXT "v=spf1 ip4:198.51.100.1 ~all"
- 解釋:【domain】 IN TXT 【送信側(cè)郵件服務(wù)器確認(rèn)規(guī)則】
干什么用呢蜕便?
從發(fā)信側(cè)服務(wù)器設(shè)定到DNS上的這條記錄中劫恒,讀取信息,判斷發(fā)信側(cè)是否合法轿腺。
如果不符合規(guī)則两嘴,那么按照約定的規(guī)則處理掉。
跟MX記錄正好相反吃溅。
MX:我是收件服務(wù)器溶诞,你找我時,請參考我設(shè)定到DNS服務(wù)器上的MX記錄决侈。
SPF:我是發(fā)信服務(wù)器螺垢,你接受郵件時,請參考我設(shè)定到DNS服務(wù)器上SPF規(guī)則赖歌。如果不是我發(fā)的信枉圃,你可以刪掉或者接收。
SPF記錄規(guī)則
-
格式:
版本 空格 定義 空格 定義 (空格 定義的循環(huán))
跟著例子看的話庐冯,比較好理解孽亲。
example.com. IN SPF "v=spf1 ip4:192.0.2.1 -all"- v=spf1 是版本。只出現(xiàn)一次展父。
- ip4:192.0.2.1 第一個定義
- -all 第二個定義
-
定義的格式返劲。
- 種類
| all | ip4 | ip6 | a | mx | ptr | exists | include| - 前綴
"+" Pass(通過)
"-" Fail(拒絕)
"~" Soft Fail(軟拒絕)
"?" Neutral(中立)
- 種類
定義測試
測試時玲昧,將從前往后依次測試每個定義。
如果一個定義命中了要查詢的 IP 地址篮绿,則由相應(yīng)定義的前綴決定怎么處理孵延。默認(rèn)的前綴為+。
如果測試完所有的 定義也沒有命中亲配,則結(jié)果為 Neutral尘应。
結(jié)果及處理方法一覽
結(jié)果 | 說明 | 服務(wù)器處理辦法 |
---|---|---|
Pass | 發(fā)件IP是合法的 | 接受來信 |
Fail | 發(fā)件 IP 是非法的 | 退信 |
Soft Fail | 發(fā)件 IP 非法,但是不采取強硬措施 | 接受來信吼虎,但是做標(biāo)記 |
Neutral | SPF 記錄中沒有關(guān)于發(fā)件 IP 是否合法的信息 | 接受來信 |
None | 服務(wù)器沒有設(shè)定 SPF 記錄 | 接受來信 |
PermError | 發(fā)生了嚴(yán)重錯誤(例如 SPF 記錄語法錯誤) | 沒有規(guī)定 |
TempError | 發(fā)生了臨時錯誤(例如 DNS 查詢失斎帧) | 接受或拒絕 |
后記
有一個問題,調(diào)查后更新思灰。
設(shè)定好SPF的記錄之后怎么快速測試呢玷犹?
總不能每次都等DNS更新完再測試吧?
20210914更新:
SPF測試方法很多官辈,google一下的話可以找到很多網(wǎng)站箱舞。
我常用的是https://mxtoolbox.com/spf.aspx