RFC974邮件路由与域名系统

上传人:文*** 文档编号:62757009 上传时间:2022-03-16 格式:DOC 页数:8 大小:26KB
返回 下载 相关 举报
RFC974邮件路由与域名系统_第1页
第1页 / 共8页
RFC974邮件路由与域名系统_第2页
第2页 / 共8页
RFC974邮件路由与域名系统_第3页
第3页 / 共8页
点击查看更多>>
资源描述
文档供参考,可复制、编制,期待您的好评与关注! 邮件路由与域名系统(RFC974 MAIL ROUTING AND THE DOMAIN SYSTEM)备忘录状态本RFC文档描述了Internet上的邮件系统如何根据域名系统(参见RFC882、883和973。注:RFC882、883和973目前都已废弃,取而代之的是RFC1035,但RFC1035目前只有英文版,中文的还没有)的信息发送消息。本备忘录的传播不受限制。简介本备忘录的目的在于阐明邮寄方如何确定以给定的Internet域名为地址的消息的发送路由。其中包括关于邮寄方如何解释MX RR的讨论,MX RR用于消息路由。注意,本备忘录没有涉及邮寄方如何处理MB RR和MG RR的陈述,这两者用于邮箱名的解释。RCF 882和RFC 883中关于邮件地址的一些设想已经发生了变化。现在一般可以认为如果消息的地址是一个信箱比如LOKI.BBN.COM,只要打开一个对LOKI.BBN.COM的SMTP连接向前发就可以了。这种系统不适用于某些特定的情况,比如没有直接接入Internet的特定的UUCP和CSNET主机,不过这些主机可以在配置文件中作为特殊情况处理(比如大部分邮寄者都设定把发送给CSNET的邮件自动转发给CSNET-RELAY.ARPA)。在域名系统中不能简单地打开对LOKI.BBN.COM的连接,而必须向域名系统询问发往LOKI.BBN.COM的消息如何递送。域名系统可能会指导邮寄者把消息传递到一个完全不同的主机,譬如SH.CS.NET。或者在更加复杂的情形中,邮寄者可能得知它有一个到LOKI.BBN.COM的路径可以选择。本备忘录主要讲述在这种更加复杂的情况下邮寄者如何工作的一些指导原则。希望读者已经熟悉了RFC 882、RFC 883和它们的更新版本(如RFC973)。目录域服务器了解什么2路由原则概述2确定消息要发往哪儿3发出查询3解释MX资源记录列表3次要的特殊问题4例子5域服务器了解什么域名服务器把信息保存为一系列的资源记录(resource record,RR),每个记录包含有关于某个域名(通常但不一定是一台主机)的特定信息片段。可以简单地把资源记录想象为数据的代表对,每个域名都与对应的数据相匹配,还存储有其他的类型信息以帮助系统确定何时与资源记录关联。为了确定消息路由,系统存储了称为MX RR的资源记录。每个MX都一个域名相对应,包含两段数据:优先值(16位无符号整数)和主机名。优先值表示邮寄者给MX主机传递消息的发送顺序,编号最低的MX最先发送。允许多个MX拥有相同的优先值,此时它们具有相同的优先级。除了邮件信息,服务器还存储有其他类型的资源记录,邮寄者可能会遇到或者选择使用这些RR。其中包括:规范名资源记录(CNAME),它表示查询的域名实际上是另外一个域名的别名,而CNAME才是严格的或者说规范的域名;知名服务资源记录(Well Known Service,WKS),保存给定域名所支持的网络服务(如SMTP)信息。路由原则概述在深入探讨邮寄者如何选择邮件路由之前,似乎有必要给出一个本备忘录所讨论的解决路由选择问题的简要概述。第一条主要的原则来自MX记录中定义的优先值字段,目的在于避免循环邮寄。如果邮寄者的主机也列入目标主机的MX,邮寄者只能给优先值比自身主机低的MX传送邮件。路由信息过时或者不完全也可能造成循环邮寄。信息过时问题只有在域表改变时才会发生,因为那些被影响的主机只有在它们的分析器缓存超时后才会了解这些变化。只要不要求邮寄者及其分析器必须向权威的服务器发出询问而且绝不使用缓存中的数据,就无法保证不会发生这样的问题。而这种方法是不切实际的,因为去掉分析器的缓存会导致邮件非常昂贵。另外,只要在域表改变时刷新受影响主机的(MX列表中的那些)分析器缓存,就不会发生资源记录过时的问题。按句话说,只要有适当的预防措施,域信息带来的循环邮寄问题完全可以避免,也不需要邮寄者查询权威服务器。(适当的预防措施是再把主机添加进MX列表前,由主机管理员进行检查。)数据不完整的问题在处理域查询时也需要注意。如果查询的答复段不完整,可能会漏掉关键的MX资源记录。这样可能造成循环邮寄,或者信息给错误地贴上无法邮递的标签。因此,邮寄者只能接受那些提供完整答复段的域系统的响应。注意,只要使用虚拟的查询循环就可以完全避免这个问题。不过由于这种情况很少发生,而且与域系统交互的首选方式是数据报,因此应用者可能只需要保证邮寄者使用虚拟循环反复重发查询,直到获取被截断的数据。确定消息要发往哪儿根据这样的一个问题讨论并说明邮寄者如何确定消息的路由:域名为LOCAL的主机上的邮寄者试图邮递消息,消息的地址是域名REMOTE。假定LOCAL和REMOTE都是语法正确的域名。另外,假设LOCAL是邮寄者所在主机的正式名称(即不是一个别名)。发出查询LOCAL邮寄者的第一步是查询REMOTE的MX资源记录。强烈要求邮寄者每次试图发送消息时都要执行这一步。目的是保证邮寄者能够及时地应用域数据库的变动,这样对于不完备的主机,域管理员就可以通过简单地修改其域数据库为传送的消息重新设置路由(re-route)。有几种查询响应被认为出错:1查询无响应。邮寄者查询的域服务器没有回复(与没有查询结果的回复不同,后者不是错误)。2得到设定了头部截断字段的响应。(回顾一下前面对不完全查询的讨论)。邮寄者可能无法使用这样的回复,应使用虚拟循环而不是数据报反复查询。3得到响应码非0的响应。邮寄者应该合理地处理错误。这里没有指明如何处理各种类型的错误,但是应用者不同类型的错误可能需要区别对待。比如响应码“域不存在”可能需要把消息视为无效并返回发送方,而响应码“服务器故障”则可能导致稍后重新发送消息。还存在其它的特殊情况。如果响应结果是一个CNAME资源记录,这表明REMOTE实际上是另外一个域名的别名,需要使用规范域名重新查询。如果响应不包含错误,也没有别名,答复段(answer section)应该是域名REMOTE(如果REMOTE是别名就是它的真正的名称)的(长度可能为0的)MX资源记录列表。下一节将说明该表的解释。解释MX资源记录列表注意:本节只讨论邮寄者如何从资源记录列表中选择传递消息的目的名,没有讨论邮寄者如何真正地执行邮递。无论何时提及消息传递,都意味着邮寄者执行必要的操作把消息发往一个给定了域名的远程站点。(比如,SMTP邮寄者将首先试图取得域名的地址,其中包括对域系统进行另外的查询,然后如果得到了地址,就建立对SMTPTCP端口的连接)。通过网络把消息传输到一个与给定域名相关的地址的具体机制超出了本备忘录的范围。查询响应中的MX列表有可能是空表,这是一种特殊情况。对此,邮寄者应把空表视作包含一条资源记录,这条MX资源记录的优先值是0,主机名是REMOTE(就是说REMOTE也是其自身唯一的MX)。另外,邮寄者也不需要进一步处理资源记录表,而应直接把消息递送给REMOTE。这种考虑是为了在域无法提供主机名的任何信息的情况下,我们可以根据猜测试着传递消息。如果表不为空,邮寄者应按照下面的步骤从列表中删除无关的资源记录,注意先后顺序很重要。对于每个MX发送WKS查询,看看列出的域名是否确实支持需要的邮件服务。域名不支持该服务的MX资源记录应摒弃。这一步骤不是必需的,但强烈建议执行。如果域名LOCAL也被列为MX资源记录,优先值大于或等于LOCAL的优先值的所有MX资源记录必须摒弃。去除无关的资源记录后列表可能又变空了。这种情况是发生了错误,可能由几种原因造成。最简单的情形是WKS查询发现列出的主机都不支持需要的邮件服务。这样就认为消息无法传递,不过一些非常稳妥的邮件系统在返回这个消息前可能会首先试着传送到REMOTE的地址(如果存在这样一个地址)。另外一种更加危险的可能是域系统认为LOCAL在处理发往REMOTE的消息,而LOCAL上的邮寄者并没有准备处理发往REMOTE的邮件。例如,如果域系统列出的REMOTE MX只有LOCAL一条记录,LOCAL就会把列表清空。但是LOCAL查询域系统大概是因为它不知道如何处理地址为REMOTE的消息。显然某些地方出了差错。邮寄者如何处理此类情况在一定程度上依赖于具体的实现,因此留给应用者来判断。如果MX资源记录列表不为空,邮寄者将依序(优先值低者优先)试着把消息发往每个MX。邮寄者被要求尽量传送给优先值最低的MX。鼓励应用者编制邮寄者对每个MX依序试用,直到某个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.ORG IN MX 10 A.EXAMPLE.ORG A.EXAMPLE.ORG IN MX 15 B.EXAMPLE.ORG A.EXAMPLE.ORG IN MX 20 C.EXAMPLE.ORG A.EXAMPLE.ORG IN WKS 10.0.0.1 TCP SMTP B.EXAMPLE.ORG IN MX 0 B.EXAMPLE.ORG B.EXAMPLE.ORG IN MX 10 C.EXAMPLE.ORG B.EXAMPLE.ORG IN WKS 10.0.0.2 TCP SMTP C.EXAMPLE.ORG IN MX 0 C.EXAMPLE.ORG C.EXAMPLE.ORG IN WKS 10.0.0.3 TCP SMTP D.EXAMPLE.ORG IN MX 0 D.EXAMPLE.ORG D.EXAMPLE.ORG IN MX 0 C.EXAMPLE.ORG D.EXAMPLE.ORG IN WKS 10.0.0.4 TCP SMTP在第一个例子中,位于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的资源记录(因为C.EXAMPLE.ORG MX资源记录的优先值比B.EXAMPLE.ORG高)。这样A.EXAMPLE.ORG只剩下一条资源记录,只能试着传递给A.EXAMPLE.ORG。在第三个例子中,考虑位于A.EXAMPLE.ORG上的邮寄者要给D.EXAMPLE.ORG传递消息。这种情况下只有两条MX资源记录而且优先值相同,每一个MX都可以为D.EXAMPLE.ORG接收消息。邮寄者可以先试用一个(哪一个取决于邮寄者,不过D.EXAMPLE.ORG似乎更加合理),如果传送失败再试另一个(如C.EXAMPLE.ORG)。8 / 8
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!