⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfcrfc976.txt

📁 本程序为在linux下实现FTP传输文件的实现
💻 TXT
📖 第 1 页 / 共 2 页
字号:
统可能事实上也包括一个Received行。Sent-By行与Received行类似,但日期不需要改为
RFC822格式,而且不主张由名称被提及的系统提前增加该行。)
如果接收系统继续把消息转发给另一个系统,它就会在前面增加一个FROM行,给处于
发送方相同的user@domain地址并加上自身的系统名。如果接收系统把消息保存到本地的信
箱内,建议仅在消息前生成一个FROM行并保存日期(使用相同的格式,因为有些邮件阅
读程序对这种格式是敏感的),而不是用“remote from system”语法格式。
注意:如果中间系统在user@domain语法格式地址——无论是信封还是消息体中——前
面增加文本如“system!”,都是不符合本标准和RFC822规范的。

2.5  邮件路由
为了正确地发送邮件,有时候需要了解目的系统或者中间系统运行了什么软件或者遵从
什么样的约定。我们曾经试图尽量减少必要的信息量,但是对子域的支持可能需要在不同条
件下使用不同的方法。为了预报其他系统的行为方式,我们把主机分为三类。这三类包括:

一类 仅使用旧式的UUCP“!”路径。我们设想主机理解本地用户名:“rmail user”和完
全路径“rmail host1!host2!user”,但我们不对主机做更多的假定。如果没有关于某
台主机的任何信息,我们可以毫无问题地把它作为第一类处理,因为我们没有对
其如何处理混合地址作任何假设。

   二类 旧式的UUCP“!”路径和4.2BSD格式的域解析。我们假设除了具有一类主机的功
能外,还能够理解“rmail user@domain”,其中“domain”位于UUCP区之外但主
机可以识别。二类主机不必理解“domain!user”,也不需要路由器。符合RFC920
标准的非UUCP域中的主机被认为是二类主机,即使也可能识别“host!user”。

   三类 具有一类和二类主机的全部功能。另外,三类主机还能够为相距较远的主机发送
UUCP邮件,并且能够理解如前所述的语法“ramil domain!user”。所有连接到UUCP
的网关必须是第三类。
本文档描述了三类主机必须具有的功能。一类和二类主机已经存在,并将继续存在相当
长的一段时间,但被视为“过时的系统”并最终将升级到3类主机的状态。

3.  算法
通过UUCP连接传递消息给地址user@domain的算法可以概述如下:

      a.  如果地址的实际格式是@domain1:user@domain2,就把“domain1”而不是
“domain2”保留下来作为“doamin”,完整的格式读为“domain1!domain2!user”。
      b.  确定本地可以识别的“domain”中的最明确的部分,记作“d:”,该部分应该是
“domain”的后缀。这项工作可以通过扫描一个表来完成,表项按照从特殊到一
般的顺序排列,比较表项与“domain”检查该表项是否与“domain”的尾部匹配。
例如,对于地址mark@osgd.cb.att.com,如果本地主机能够识别“uucp”和“att.com”,
那么d就应该是“att.com”。表的最后一项是空字符串,与完全无法识别的域匹配。
      c.  查看基本表项(found table entry),寻找网关名(g:)和通往g的UUCP“!”格
式的路径“r:”。G不一定要与本地主机直接相连,但应视作连接域d的网关。(对
于给定的d,在不同的主机上g和r可能具有不同的值,不过g通常是一样的) 
      d.  根据r的开始部分查找“下一跳”的主机n,n总是直接与本地主机相连。
      e.  如果可能则确定g和n的类型。
      f.  建立n能够解释的适当的目标字符串s(见下面)。
g.	把消息及目标信息s传递给n。
如果环境中包括其它类型的不使用UUCP“!”解析的网络,表中可能还会有附加的
信息,如使用的连接类型。路径信息在其他的环境中可能被替换为那个网络的特殊信
息。
上述第二步(b)中提到的表中的第一项一般是非常精确的,能够直接构造知名的路径
而无需通过域树寻路。域树仅保留用于下列情况:没有更详尽多的信息;信息量很少;默认
路径是最佳的选择。如果存在更好的路径就可以把该信息写入表中。如果主机有大量的信息
传送给第二个主机,一般希望在两台主机之间建立直接的UUCP连接并为它们建立相应的
表项以便直接传递邮件,即使两台主机位于不同的域中。路径表的构造应该为最大的通信量
保持最短最便宜的路径。
这里对目标字符串n(上述第六步f)的构造提供几点提示。如果发送站点确定下一跳是
三类主机,那么“envelope recipient”信息(rmail的s参数)既可以使用域“!”格式
(host.com!user),也可以采用域“@”格式(user@host.com)。如果下一跳步不是三类主机,
或者发送站点不能确定,那么应尽可能使用“!”格式,因为无法预知下一跳会如何处理混
合地址。
如果已知网关是第三类,可以使用域“!”格式,但是如果发送站点不能确定其类型,或
者查找中目标字符串完全匹配(而不是与某个父域匹配),则应使用6字符“!”格式“r!user”,
如“dumbhost!host!user”。如果网关看来实际上是一个子域的网关,即与一个父域匹配(如
地址user@host.gateway.com,表中没有找到host.gateway.com但发现了gateway.com),可以
把它假定为第三类。这样在一定程度上可以安全使用如
dumbhost!domain!host.domain.com!user之类的路径。如果存在到目标主机的直接连接,可以
使用user@domain或者domain!user两种语法格式。
符合本标准的主机是三类主机,所有的子域网关必须是三类主机。

4.  例子
假设主机A.D.COM 向主机C.D.COM发送邮件。设两台主机的6字符名分别为aname
和dname,途径中间主机bname。
   主机A的用户输入:   mail user@c.d.com
   用户界面生成一个文件并使用命令(如sendmail user@c.d.com < file)把它传递给传输机
制,文件内容如下:
      Date:  9 Jan 1985   8:39 EST
      From: myname@A.D.COM (My Name)
      Subject: sample message
      To: user@c.d.com

      This is a sample message
传输机制查找到c.d.com的路径,但在数据库中没有找到;于是寻找d.com,发现其路
径是bname!dname!%s,而且发现c.cd.com是三类主机。然后加入c.d.com!user,就得到了路
径bname!dname!c.d.com!user。(如果发现c.d.com的路径是bname!cname!%s,结果路径
bname!cname!user中的域将被忽略,因为无法确认目标主机属于哪一类。)
传输机制预备一个FROM行并把它传递给uux: uux - bname!rmail dname!c.d.com!user < 
file2,file2的内容包括:
      From A.D.COM!user Wed Jan  9 12:43:35 1985 remote from aname Date:
      9 Jan 1985   8:39 EST
      From: myname@A.D.COM (My Name)
      Subject: sample message
      To: user@c.d.com

      This is a sample message

   (注意消息尾部的空行——至少需要一个空行。)这将导致B主机执行命令:rmail 
dname!c.d.com!user。B预备了它自己的FROM行并继续转发邮件:uux - dname!rmail 
c.d.com!user < file3,file3的内容包括:

      From nuucp Wed Jan  9 12:43:35 1985 remote from bname >From
      A.D.COM!user Wed Jan  9 11:21:48 1985 remote from aname Date:  9
      Jan 1985   8:39 EST
      From: myname@A.D.COM (My Name)
      Subject: sample message
      To: user@c.d.com

      This is a sample message
    C主机执行命令:rmail c.d.com!user并压缩FROM行,然后把消息保存到本地——可能
使用相同的格式:

      From bname!aname!A.D.COM!user Wed Jan  9 12:43:35 1985 Date:  9
      Jan 1985   8:39 EST
      From: myname@A.D.COM (My Name)
      Subject: sample message
      To: user@c.d.com

      This is a sample message

5.  结论
    符合本标准的主机可以接受如下所有的格式:

      rmail localuser               (user中不含“!”、“%”、“@”)
      rmail hosta!hostb!user         (user中不含“!”、“%”、“@”)
      rmail user@domain           (域中只有逗点“.”)
      rmail domain!user            (域中至少包含一个逗点“.”)
      rmail domain.!user            (域中没有圆点的情形)
    消息的信封部分(FROM行)应遵循现有的约定使用“!”路径。消息的首部(Word:
行,如Date:、From:、To:和Subject:)必须符合RFC822规范。所有首部地址必须采用@格
式。原始站点应确保地址符合RFC822,不能要求转发站点或者网关把地址转换为合法的
RFC822地址。(同样转发站点或者网关也不得把合法的RFC822地址user@domain转化成不
符合RFC822的地址gateway!user@domain,即使要转发给一类UUCP主机。)

6.  参考

   [1]  Postel, J., "Simple Mail Transfer Protocol", RFC-821,
        USC/Information Sciences Institute, August, 1982.

   [2]  Crocker, D., "Standard for the Format of ARPA Internet Text
        Messages", RFC-822, Department of Electrical Engineering,
        University of Delaware, August, 1982.

   [3]  Postel, J., and J. K. Reynolds, "Domain Requirements", RFC-920,
        USC/Information Sciences Institute, October, 1984.

RFC976 UUCP Mail Interchange Format Standard                   UUCP邮件交换格式标准


1
RFC文档中文翻译计划

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -