邮件路由与域名系统

【邮件路由与域名系统】域服务器了解什么
域名服务器把信息保存为一系列的资源记录(resourcerecord,RR),每个记录包含有关
于某个域名(通常但不一定是一台主机)的特定信息片段 。可以简单地把资源记录想象为数
据的代表对,每个域名都与对应的数据相匹配,还存储有其他的类型信息以帮助系统确定何
时与资源记录关联 。为了确定消息路由,系统存储了称为MXRR的资源记录 。每个MX都
一个域名相对应,包含两段数据:优先值(16位无符号整数)和主机名 。优先值表示邮寄
者给MX主机传递消息的发送顺序,编号最低的MX最先发送 。答应多个MX拥有相同的
优先值,此时它们具有相同的优先级 。
除了邮件信息,服务器还存储有其他类型的资源记录,邮寄者可能会碰到或者选择使用
这些RR 。其中包括:规范名资源记录(CNAME),它表示查询的域名实际上是另外一个域
名的别名,而CNAME才是严格的或者说规范的域名;知名服务资源记录(WellKnown
Service,WKS),保存给定域名所支持的网络服务(如SMTP)信息 。
路由原则概述
在深入探讨邮寄者如何选择邮件路由之前,似乎有必要给出一个本备忘录所讨论的解决
路由选择问题的简要概述 。
第一条主要的原则来自MX记录中定义的优先值字段,目的在于避免循环邮寄 。假如邮
寄者的主机也列入目标主机的MX,邮寄者只能给优先值比自身主机低的MX传送邮件 。
路由信息过时或者不完全也可能造成循环邮寄 。信息过时问题只有在域表改变时才会发
生,因为那些被影响的主机只有在它们的分析器缓存超时后才会了解这些变化 。只要不要求
邮寄者及其分析器必须向权威的服务器发出询问而且绝不使用缓存中的数据,就无法保证不
会发生这样的问题 。而这种方法是不切实际的,因为去掉分析器的缓存会导致邮件非常昂贵 。
另外,只要在域表改变时刷新受影响主机的(MX列表中的那些)分析器缓存,就不会发生
资源记录过时的问题 。按句话说,只要有适当的预防措施,域信息带来的循环邮寄问题完全
可以避免,也不需要邮寄者查询权威服务器 。(适当的预防措施是再把主机添加进MX列表
前,由主机治理员进行检查 。)
数据不完整的问题在处理域查询时也需要注重 。假如查询的答复段不完整,可能会漏掉
要害的MX资源记录 。这样可能造成循环邮寄,或者信息给错误地贴上无法邮递的标签 。
因此,邮寄者只能接受那些提供完整答复段的域系统的响应 。注重,只要使用虚拟的查询循
环就可以完全避免这个问题 。不过由于这种情况很少发生,而且与域系统交互的首选方式是
数据报,因此应用者可能只需要保证邮寄者使用虚拟循环反复重发查询,直到获取被截断的
数据 。
确定消息要发往哪儿
根据这样的一个问题讨论并说明邮寄者如何确定消息的路由:域名为LOCAL的主机上的邮
寄者试图邮递消息,消息的地址是域名REMOTE 。假定LOCAL和REMOTE都是语法正确
的域名 。另外,假设LOCAL是邮寄者所在主机的正式名称(即不是一个别名) 。
发出查询
LOCAL邮寄者的第一步是查询REMOTE的MX资源记录 。强烈要求邮寄者每次试图发
送消息时都要执行这一步 。目的是保证邮寄者能够及时地应用域数据库的变动,这样对于不
完备的主机,域治理员就可以通过简单地修改其域数据库为传送的消息重新设置路由
(re-route) 。

推荐阅读