邮件服务器DNS设置(MX、SPF、DKIM记录详解)

邮件服务器DNS 设置DNS 记录,需要你到你的域名托管商那里进行设置或者你自己管理DNS 服务器。不少域名托管商不支持txt 记录或者不支持DKIM 记录,所以你就无法使用SPF 和DKIM 的功能

邮件服务器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 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: 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

标签: