无MX记录但是可以发信的问题

发布时间:2019-08-29编辑:脚本学堂
用户反映说其服务器没有MX记录但却可以发信,经后查询发现走的都是A记录IP。

用户反映说其服务器没有MX记录但却可以发信,经后查询发现走的都是A记录IP。

MX记录
MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@domain.com 时,该用户的邮件系统通过DNS查找domain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上.

有个疑问:不用MX记录,同样也可以建立邮件服务,但是为什么要建立MX记录捏。
例如某个域名 xxxx.com 没有做mx记录,只做了一条A记录指向处理邮件服务的ip,同样可以收发邮件。

只有主机名完全可以建邮件系统:
假设你的邮件服务器的主机名是 xxxx.com,就是说在internet上xxxx.com解析到你的 邮件服务器IP地址。你可以在你的邮件系统中建立一个叫 xxxx.com的域,你的email格式为 user1@xxxx.com, 其它邮件系统可以发信到你的服务器,使用动态域名指向的也是一样。如果你有一个静态IP地址,你甚至可以建一个一IP地址为结尾的邮件系统。 

既然这样要mx记录干什么那,以下的说法有些道理
在smtp协议中,当需要向远程(remote)发信(user@gogogo.com or user@host.gogogo.com)时,首先向dns server查询@后面的部分的MX记录(也许你会说,user@host.gogogo.com 中,@后面部分明显是个主机,为什么去查它的MX记录?这只是人的主观认识,不一定正确,不通过dns体系,你无法确定host.gogogo.com是一个子域还是一台主机。),如果查到有MX记录,可能有多个,那么smtpd向其中优先级最高的发投递请求,如果失败,转向优先级次一级的mx主机投递(在这里mx记录起了容错的作用);如果对@后面部分的查询得不到mx记录,那么把@后面的部分当作主机,查询其ip地址,直接投递。
为什么你的域没有mx记录也能投递?只是因为@gogogo.com 在dns里对应的ip地址刚好是你的邮件服务器的地址。MX记录是dns体系的    一个标准部分,即使你目前的情况下,不设置mx记录也能工作,为了符合标准,还是建议你把mx记录补上。

MX (邮件服务器记录)
这种记录用来说明负责接受指定域名的邮件的邮件服务器是哪一个。仅用于 SMTP 服务转发邮件的时候。当 SMTP 服务器需要向外转发 name@Domain.com 的邮件的时候。首先会像 DNS 查询类行为 MX ,名称为 Domain.Com 的记录。如果没有 MX 记录则会使用 A 类型再查询一次。所以 MX 记录在一定程度上是可以使用 A 记录替代的。

MX 记录的结果比上面两个稍微复杂一些,它包含一个邮件服务器的域名和一个邮件服务器的优先级,如果你的域名使用多个 SMTP 服务器接受邮件的话,你可以使用多条 MX 记录指出所有的邮件的服务器,通过优先级参数配置那一台服务作为首选服务器。一般情况下邮件会发给优先级最高的服务器(数值最小的),如果该服务器不能连通,则转到下一个优先级的服务器。想通优先级的服务器的顺序可以由 “ 轮换 ” 机制决定。

一般情况下,即使你的其他服务器和邮件服务区使用相同的 IP 地址也建议使用 MX 记录来表示邮件服务器。相对于简单的 A 记录来说, MX 记录的优先级可以控制,另外你保持了邮件服务和其他服务的独立性。