郵件服務(wù)器DNS設(shè)置(MX、SPF、DKIM記錄詳解)
郵件服務(wù)器DNS 設(shè)置DNS 記錄,需要你到你的域名托管商那里進行設(shè)置或者你自己管理DNS 服務(wù)器。不少域名托管商不支持txt 記錄或者不支持DKIM 記錄,所以你就無法使用SPF 和DKIM 的功能
郵件服務(wù)器DNS 設(shè)置
DNS 記錄,需要你到你的域名托管商那里進行設(shè)置或者你自己管理DNS 服務(wù)器。不少域名托管商不支持txt 記錄或者不支持DKIM 記錄,所以你就無法使用SPF 和DKIM 的功能。 DNS 的修改,需要48小時以上才能生效。
國內(nèi)的萬網(wǎng)是不支持DKIM ,目前新網(wǎng)是支持SPF 和DKIM 。
1.MX 記錄
郵件的MX 記錄最好是指向機器A 記錄,盡量不要直接指向IP 地址(不符合規(guī)范)。
1.1 添加A 記錄
mail.example.com 192.168.1.100
1.2 添加MX 記錄
example.com mail.example.com
1.3 測試MX 記錄
# host exmple.com
example.com mail is handled by 10 mail.example.com.
#nslookup mail.example.com
Name:mail.example.com
Address:192.168.1.100
2.SPF 記錄
SPF 是指Sender Policy Framework,是為了防范垃圾郵件而提出來的一種DNS 記錄類型,SPF 是一種TXT 類型的記錄。SPF 記錄的本質(zhì),就是向收件人宣告:本域名的郵件從清單上所列IP 發(fā)出的都是合法郵件,并非冒充的垃圾郵件。設(shè)置好SPF 是正確設(shè)置郵件發(fā)送的域名記錄和STMP 的非常重要的一步。
例如:
SPF 記錄指向A 主機記錄
example.com. 3600 IN TXT "v=spf1 mx mx:mail.example.com ~all"
SPF 記錄指向IP 地址
example.com. 3600 IN TXT "v=spf1 ip4:192.168.1.100 ~all"
2.1 如何查看SPF
Windows 下進入DOS 模式后用以下命令:
nslookup -type=txt 域名
Unix 操作系統(tǒng)下用:
# dig -t txt 域名
2.2 SPF的簡單說明如下:
v=spf1 表示 spf1 的版本
IP4 代表IPv4進行驗證(IP6代表用IPv6進行驗證), 注意 “ip4:” 和“IP”之間是沒有空格的 ~all 代表結(jié)束
,2.3 SPF記錄例釋
我們看這條SPF:
yourdomain.com "v=spf1 a mx mx:mail.jefflei.com ip4:202.96.88.88 ~all"
這條SPF 記錄具體的說明了允許發(fā)送 @yourdomain.com 的IP 地址是:a (這個a 是指 yourdomain.com 解析出來的IP 地址,若沒有配置應(yīng)取消)
mx (yourdomain.com 對應(yīng)的mx ,即 mail.yourdomain.com 的A 記錄所對應(yīng)的ip ) mx:mail.jefflei.com (如果沒有配置過mail.jefflei.com 這條MX 記錄也應(yīng)取消)
ip4:202.96.88.88 (直接就是 202.152.186.85 這個IP 地址)
其他還有些語法如下:
- Fail, 表示沒有其他任何匹配發(fā)生
~ 代表軟失敗,通常用于測試中
? 代表忽略
如果外發(fā)的ip 不止一個,那么必須要包含多個
v=spf1 ip4:202.96.88.88 ip4:202.96.88.87 ~all
2.4 測試SPF 設(shè)置結(jié)果
設(shè)置好 DNS 中的SPF 記錄后,發(fā)送郵件給自己的gmail ,然后查看郵件的源文件,應(yīng)該能看到類似的郵件頭,其中有pass 表示設(shè)置成功。
Received-SPF: pass (google.com: domain of designates
202.96.88.87 as permitted sender) client-ip=202.96.88.87;
需要注意的是,服務(wù)器的IP 若有更改,需要同時修改SPF ?。。?/p>
2.5 利用SPF 記錄防止垃圾郵件
在Unix 下可以安裝配置SpamAssassin 之類的插件來防止垃圾郵件和釣魚郵件(Phishing)
3.DKIM 記錄
DKIM 技術(shù)通過在每封電子郵件上增加加密的數(shù)字標(biāo)志,然后與合法的互聯(lián)網(wǎng)地址數(shù)據(jù)庫中的記錄進行比較。當(dāng)收到電子郵件后,只有加密信息與數(shù)據(jù)庫中記錄匹配的電子郵件,才能夠進入用戶的收件箱。它還能檢查郵件的完整性,避免****等未授權(quán)者的修改。 DKIM 的基本工作原理同樣是基于傳統(tǒng)的密鑰認證方式,他會產(chǎn)生兩組鑰匙,公鑰(public key)和私鑰(private key) ,公鑰將會存放在 DNS 中,而私鑰會存放在寄信服務(wù)器中。私鑰會自動產(chǎn)生,并依附在郵件頭中,發(fā)送到寄信者的服務(wù)器里。公鑰則放在DNS 服務(wù)器上,供自動獲得。收信的服務(wù)器,將會收到夾帶在郵件頭中的私鑰和在DNS 上自己獲取公鑰,然后進行比對,比較寄信者的域名是否合法,如果不合法,則判定為垃圾郵件。由于數(shù)字簽名是無法仿造的,因此這項技術(shù)對于垃圾郵件制造者將是一次致命的打擊,他們很難再像過去一樣,通過盜用發(fā)件人姓名、改變附件屬性等小伎倆達到目的。在此之前,垃圾郵件制造者通過把文本轉(zhuǎn)換為圖像等方式逃避郵件過濾,并且使得一度逐漸下降的垃圾郵件數(shù)目再度抬頭。 注意:Amavisd-new 只有 2.6.0 及以上版本集成了 DKIM 功能。
3.1 這里可以通過iredmail.tips 獲得域名的DKIM ,也可以在命令行下輸入
# amavisd-new showkeys
; key#1, domain example.com, /var/lib/dkim/example.com.pem
dkim._domainkey.example.com. 3600 TXT (
"v=DKIM1; p="
,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGNVMuQRKqYeySIzqTGTm3xRzF" "/ZzhmMnpZkEcVVjFAk t7E388oFGu/knyh6KBKwpZxHUN5HoOYVjMudqaR2FcSvK"
"z joFj8Vh3rXoTLa1zHDyfD7hICzxdEgmQZ8MJM5rjPPrRGZXnPowNYDsd6nDJ86"
"N38iFYU jALBYDLBwQIDAQAB")
3.2 把上面記錄添加到ISP 的DNS 記錄
dkim._domainkey.example.com. v=DKIM1; p=MIGfMA0....(省略)DLBwQIDAQAB
3.3 添加完DNS 記錄后,如果記錄生效,可以通過運行命令檢測
# amavisd-new testkeys
TESTING: dkim._domainkey.example.com => pass
檢查DNS 設(shè)置
下面有幾種方法,可以幫助你檢測DNS 是否設(shè)置生效和正常工作:
1.nslookup
#nslookup
Default Server: unknown
Address: 192.168.1.1
> server 4.2.2.1
Default Server: vnsc-pri.sys.gtei.net
Address: 4.2.2.1
> set type=mx
> example.com
Server: vnsc-pri.sys.gtei.net
Address: 4.2.2.1
Non-authoritative answer:
example.com MX preference = 20, mail exchanger = mail.example.com
> set type=txt
> example.com
Server: vnsc-pri.sys.gtei.net
Address: 4.2.2.1
Non-authoritative answer:
example.com text =
"v=spf1 ip4:192.168.1.100 -all"
> dkim._domainkey.example.com
Server: vnsc-pri.sys.gtei.net
Address: 4.2.2.1
Non-authoritative answer:
dkim._domainkey.example.com text =
"v=DKIM1; p= MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsgZaIvYHAos2jbp3CHW0 AwrTnAEwV1p4EaZP/JuF8t1BETBVg6WJr3YWN5ijCpi9vnw96nmf/u5MgtbLwZ AzDBkbOY7Jbb/hIO
,mpmmfdJAY3w8KoXLCuQKDysXOys45YtfJEj66s51EHH3W iXPYw3I/NWHjY3a5/mXnk4XJQIDAQAB"
2.linux dig
MX 記錄
# host exmple.com
example.com mail is handled by 10 mail.example.com.
SPF 記錄
# dig txt hotmail.com
; <<>>DiG 9.4.2-P2 <<>> txt hotmail.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43130
;; flags: qrrdra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hotmail.com. IN TXT
;; ANSWER SECTION:
hotmail.com. 3600 IN TXT "v=spf1 include:spf-a.hotmail.com
include:spf-c.hotmail.com include:spf-d.hotmail.com ~all"
;; Query time: 176 msec
;; SERVER: 64.71.161.8#53(64.71.161.8)
;; WHEN: Sat Dec 5 08:43:51 2009
;; MSG SIZE rcvd: 157
DKIM 記錄
#dig txt dkim._domainkey.example.com include:spf-b.hotmail.com