Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485237
  • 博文数量: 173
  • 博客积分: 4112
  • 博客等级: 上校
  • 技术积分: 1577
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-26 10:12
文章分类

全部博文(173)

文章存档

2012年(1)

2010年(172)

我的朋友

分类: 系统运维

2010-03-25 22:55:07

今天遇到个奇怪的问题,用户服务器没有MX记录但是可以发信。查询后发现走的都是他的A记录IP.要研究下。
先复习下原理:
什么是MX记录?
   MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 时,该用户的邮件系统通过DNS查找domain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上.
以上完全是抄的套话,感觉没有什么实用价值。
有个疑问:不用MX记录,同样也可以建立邮件服务,但是为什么要建立MX记录捏。
研究研究:
 例如某个域名 xxxx.com 没有做mx记录,只做了一条A记录指向处理邮件服务的ip,同样可以收发邮件。
 只有主机名完全可以建邮件系统:
假设你的邮件服务器的主机名是 xxxx.com,就是说在internet上xxxx.com解析到你的 邮件服务器IP地址。你可以在你的邮件系统中建立一个叫 xxxx.com的域,你的email格式为 , 其它邮件系统可以发信到你的服务器,使用动态域名指向的也是一样。如果你有一个静态IP地址,你甚至可以建一个一IP地址为结尾的邮件系统。
 既然这样要mx记录干什么那,以下的说法有些道理:
 在smtp协议中,当需要向远程(remote)发信( or )时,首先向dns server查询@后面的部分的MX记录(也许你会说, 中,@后面部分明显是个主机,为什么去查它的MX记录?这只是人的主观认识,不一定正确,不通过dns体系,你无法确定host.gogogo.com是一个子域还是一台主机。),如果查到有MX记录,可能有多个,那么smtpd向其中优先级最高的发投递请求,如果失败,转向优先级次一级的mx主机投递(在这里mx记录起了容错的作用);如果对@后面部分的查询得不到mx记录,那么把@后面的部分当作主机,查询其ip地址,直接投递。
为什么你的域没有mx记录也能投递?只是因为@gogogo.com 在dns里对应的ip地址刚好是你的邮件服务器的地址。MX记录是dns体系的    一个标准部分,即使你目前的情况下,不设置mx记录也能工作,为了符合标准,还是建议你把mx记录补上。

MX (邮件服务器记录)
  这种记录用来说明负责接受指定域名的邮件的邮件服务器是哪一个。仅用于 SMTP 服务转发邮件的时候。当 SMTP 服务器需要向外转发 的邮件的时候。首先会像 DNS 查询类行为 MX ,名称为 Domain.Com 的记录。如果没有 MX 记录则会使用 A 类型再查询一次。所以 MX 记录在一定程度上是可以使用 A 记录替代的。
  MX 记录的结果比上面两个稍微复杂一些,它包含一个邮件服务器的域名和一个邮件服务器的优先级,如果你的域名使用多个 SMTP 服务器接受邮件的话,你可以使用多条 MX 记录指出所有的邮件的服务器,通过优先级参数配置那一台服务作为首选服务器。一般情况下邮件会发给优先级最高的服务器(数值最小的),如果该服务器不能连通,则转到下一个优先级的服务器。想通优先级的服务器的顺序可以由 “ 轮换 ” 机制决定。
  一般情况下,即使你的其他服务器和邮件服务区使用相同的 IP 地址也建议使用 MX 记录来表示邮件服务器。相对于简单的 A 记录来说, MX 记录的优先级可以控制,另外你保持了邮件服务和其他服务的独立性。
阅读(1002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~