邮件路由与域名系统( 三 )


试用,直到某个MX接收消息或者试过全部的MX为止 。对于一些不过分苛求的系统,仅
仅试用一定数量的MX也是合理的 。要注重可能有多个MX具有相同的优先值 。此时,必
须在试过具有该优先值的所有的MX之后,才能继续试用优先值更高的MX 。另外,非凡的
情况下可能会出现几个MX都具有最低的优先值,在确认消息不可传递之前必须对它们全
部试用 。
次要的非凡问题
为了避免复杂化,上一节的讨论没有牵扯两个非凡的问题 。在这里对它们的讨论并没有
非凡的顺序 。
带有字符“*”的通配符名也可能用于邮件路由 。网络上的服务器很可能简单的规定发
往某个域的邮件都要经过一个中继转发 。例如,在本文档写作的时候,所有发往域IL主机
的邮件都经过RELAY.CS.NET发送 。这是通过建立一个带有通配符的资源记录实现的,该
记录表明“*.IL”具有RELAY.CS.NET的MX 。这对邮寄者应该保持透明,因为域服务器
会把匹配的通配符隐藏起来(比如HUJI.IL与*.IL匹配,域服务器返回的资源记录将包括
HUJI.IL,而不是*.IL) 。假如由于某种意外,邮寄者收到的资源记录在域名或者数据段中包
含通配符,就应该摒弃该项资源记录 。
需要注重的是,假如LOCAL有一个别名而且这个别名出现在REMOTE的MX记录列
表中(比如REMOTE有一项MX称为ALIAS,而ALIAS的CNAME是LOCAL),这会破
坏删除无关资源记录的算法 。只要保证在MX资源记录的数据段不使用别名就可以避免这
一问题 。
应用者应该理解查询以及对查询的解释只对REMOTE而言,不会对REMOTE列出的
MX资源记录反复查询 。你不能试图构造一个MX链来支持更加复杂的邮件路由 。(比如,
UNIX.BBN.COM是RELAY.CS.NET的一项MX,而RELAY.CS.NET又是.IL上所有主机的
MX,但这并不意味着UNIX.BBN.COM会承担把邮件发往.IL的职责 。)
最后要注重这是一个在Internet上选择路由的标准 。为分布在多个网络上的主机服务的
邮寄者可能还必须就使用哪个网络传送做出决策 。这样的决策超出了本备忘录的范围,尽管
邮寄者也可以利用域系统帮助选择 。但是,只要邮寄者决定使用Internet递送消息,就必须
根据这些原则选择消息路由 。
例子
作为上述讨论的进一步说明,这里举3个邮寄者选择消息路由的例子 。这些例子都是用下面
的数据库:
A.EXAMPLE.ORGINMX10A.EXAMPLE.ORG
A.EXAMPLE.ORGINMX15B.EXAMPLE.ORG
A.EXAMPLE.ORGINMX20C.EXAMPLE.ORG
A.EXAMPLE.ORGINWKS10.0.0.1TCPSMTP
B.EXAMPLE.ORGINMX0B.EXAMPLE.ORG
B.EXAMPLE.ORGINMX10C.EXAMPLE.ORG
B.EXAMPLE.ORGINWKS10.0.0.2TCPSMTP
C.EXAMPLE.ORGINMX0C.EXAMPLE.ORG
C.EXAMPLE.ORGINWKS10.0.0.3TCPSMTP
D.EXAMPLE.ORGINMX0D.EXAMPLE.ORG
D.EXAMPLE.ORGINMX0C.EXAMPLE.ORG
D.EXAMPLE.ORGINWKS10.0.0.4TCPSMTP
在第一个例子中,位于D.EXAMPLE.ORG上的SMTP邮寄者试图传递一个地址标为
A.EXAMPLE.ORG的消息 。在查询结果中,它了解到A.EXAMPLE.ORG有三个MX资源
记录 。D.EXAMPLE.ORG不在这些MX资源记录中,而且三个MX都支持SMTP邮件(取
决于WKS项),因此没有排除一个MX 。因为A.EXAMPLE.ORG是优先值最低的MX,邮
寄者被迫试图发送到A.EXAMPLE.ORG 。假如无法抵达A.EXAMPLE.ORG,可以(但不是
必须)再试一下B.EXAMPLE.ORG;假如B.EXAMPLE.ORG仍然没有响应,还可以再试
C.EXAMPLE.ORG 。
在第二个例子中,邮寄者位于B.EXAMPLE.ORG上,同样是要传送地址标为
A.EXAMPLE.ORG的消息 。这一次A.EXAMPLE.ORG也有三个MX资源记录,不同的是邮
寄者必须摒弃自身的MX资源记录和C.EXAMPLE.ORG的资源记录(因为

推荐阅读