郵件伺服器DNS設定-----MX、SPF、DKIM記錄詳解

mal327發表於2011-08-19
郵件伺服器的DNS設定

DNS記錄,需要你到你的域名託管商那裡進行設定或者你自己管理DNS伺服器。不少域名託管商不支援txt記錄或者不支援DKIM記錄,所以你就無法使用SPF和DKIM的功能。
DNS的修改,需要48小時以上才能生效。
國內的萬網是不支援DKIM,目前新網是支援SPF和DKIM。

1.MX記錄
郵件的MX記錄最好是指向機器A記錄,儘量不要直接指向IP地址(不符合規範)。
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記錄的本質,就是向收件人宣告:本域名的郵件從清單上所列IP發出的都是合法郵件,並非冒充的垃圾郵件。設定好SPF是正確設定郵件傳送的域名記錄和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作業系統下用:
# dig -t txt 域名

2.2 SPF的簡單說明如下:
v=spf1 表示 spf1 的版本
IP4 代表IPv4進行驗證(IP6代表用IPv6進行驗證), 注意 “ip4:” 和“IP”之間是沒有空格的
~all 代表結束

2.3 SPF記錄例釋
我們看這條SPF:
yourdomain.com "v=spf1 a mx mx:mail.jefflei.com ip4:202.96.88.88 ~all"
這條SPF記錄具體的說明了允許傳送 @yourdomain.com 的IP地址是:a (這個a是指 yourdomain.com 解析出來的IP地址,若沒有配置應取消)
mx (yourdomain.com 對應的mx,即 mail.yourdomain.com的A記錄所對應的ip)
mx:mail.jefflei.com (如果沒有配置過mail.jefflei.com這條MX記錄也應取消)
ip4:202.96.88.88 (直接就是 202.152.186.85 這個IP地址)
其他還有些語法如下:
- Fail, 表示沒有其他任何匹配發生
~ 代表軟失敗,通常用於測試中
? 代表忽略

如果外發的ip不止一個,那麼必須要包含多個
v=spf1 ip4:202.96.88.88 ip4:202.96.88.87 ~all

2.4 測試SPF設定結果
設定好 DNS中的SPF記錄後,傳送郵件給自己的gmail,然後檢視郵件的原始檔,應該能看到類似的郵件頭,其中有pass表示設定成功。
Received-SPF: pass (google.com: domain of test@jefflei.com designates
    202.96.88.87 as permitted sender) client-ip=202.96.88.87;
需要注意的是,伺服器的IP若有更改,需要同時修改SPF!!!

2.5 利用SPF記錄防止垃圾郵件
在Unix下可以安裝配置SpamAssassin之類的外掛來防止垃圾郵件和釣魚郵件(Phishing)


3.DKIM記錄
DKIM 技術通過在每封電子郵件上增加加密的數字標誌,然後與合法的網際網路地址資料庫中的記錄進行比較。當收到電子郵件後,只有加密資訊與資料庫中記錄匹配的電子郵件,才能夠進入使用者的收件箱。它還能檢查郵件的完整性,避免黑客等未授權者的修改。 DKIM 的基本工作原理同樣是基於傳統的金鑰認證方式,他會產生兩組鑰匙,公鑰(public key)和私鑰(private key),公鑰將會存放在 DNS 中,而私鑰會存放在寄信伺服器中。私鑰會自動產生,並依附在郵件頭中,傳送到寄信者的伺服器裡。公鑰則放在DNS伺服器上,供自動獲得。收信的伺服器,將會收到夾帶在郵件頭中的私鑰和在DNS上自己獲取公鑰,然後進行比對,比較寄信者的域名是否合法,如果不合法,則判定為垃圾郵件。 由於數字簽名是無法仿造的,因此這項技術對於垃圾郵件製造者將是一次致命的打擊,他們很難再像過去一樣,通過盜用發件人姓名、改變附件屬性等小伎倆達到目的。在此之前,垃圾郵件製造者通過把文字轉換為影像等方式逃避郵件過濾,並且使得一度逐漸下降的垃圾郵件數目再度抬頭。
注意: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設定
下面有幾種方法,可以幫助你檢測DNS是否設定生效和正常工作:
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: qr rd ra; 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-b.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



相關文章