contents
下一主题: 邮件路由是如何进行的 上一级: 电子邮件 前一主题: 邮件是如何投递的?

电子邮件地址

对于电子邮件,地址至少由处理个人邮件的机器名称和该系统识别的用户标识组成。这可能是接收者的登录名,但也可能是任何其他内容。其他邮件寻址方案,如 X.400,使用更通用的“属性”集,这些属性用于在 X.500 目录服务器中查找接收者的主机。

机器名称的解释方式,即您的消息最终将到达哪个站点,以及如何将此名称与接收者的用户名组合,很大程度上取决于您所在的网络。

Internet 站点遵循 RFC-822 标准,该标准要求使用 user@host.domain 这种表示法,其中 host.domain 是主机的完全限定域名。中间的符号称为“at”符号(@)。因为这种表示法不涉及到达目标主机的路由,而是给出了(唯一的)主机名,所以这被称为绝对地址。

在最初的 UUCP 环境中,流行的形式是 path!host!user,其中 path 描述了消息在到达目标主机之前必须经过的主机序列。这种结构被称为 bang path 表示法,因为感叹号 (!) 通常被称为 “bang”。如今,许多基于 UUCP 的网络已经采用了 RFC-822,并且会理解这种类型的地址。

现在,这两种类型的寻址方式不能很好地混合使用。假设地址为 hostA!user@hostB。目前尚不清楚 `@` 符号的优先级高于路径,还是反之亦然:我们是否必须将消息发送到 hostB,再由 hostB 将其邮件发送到 hostA!user,还是应该将其发送到 hostA,再由 hostA 将其转发到 user@hostB?

混合使用不同类型地址运算符的地址称为混合地址。最臭名昭著的是上面的例子。通常通过赋予 `@` 符号高于路径的优先级来解决这个问题。在上面的示例中,这意味着首先将消息发送到 hostB。

但是,有一种方法可以以符合 RFC-822 的方式指定路由:<@hostA,@hostB:user@hostC> 表示 hostC 上用户 user 的地址,其中 hostC 需要通过 hostA 和 hostB(按此顺序)才能到达。这种类型的地址通常被称为 路由地址

然后,还有 `%` 地址运算符:user%hostB@hostA 将首先发送到 hostA,hostA 会将最右边的(在本例中,是唯一的)百分号扩展为 `@` 符号。地址现在是 user@hostB,邮件程序将愉快地将您的消息转发到 hostB,hostB 再将其投递给 user。这种类型的地址有时被称为 “Ye Olde ARPANET Kludge”(老式 ARPANET 补丁),不鼓励使用。尽管如此,许多邮件传输代理都会生成这种类型的地址。

其他网络仍有不同的寻址方式。例如,基于 DECnet 的网络使用两个冒号作为地址分隔符,从而产生 host::user 这样的地址。gif 最后,X.400 标准使用完全不同的方案,通过描述一组属性-值对(如国家和组织)来描述接收者。

在 FidoNet 上,每个用户都由一个代码标识,例如 2:320/204.9,由四个数字组成,分别表示区域(2 代表欧洲)、网络(320 代表巴黎和郊区)、节点(本地中心站)和点(个人用户的 PC)。FidoNet 地址可以映射到 RFC-822;上面的地址将写成 Thomas.Quinot@p9.f204.n320.z2.fidonet.org。现在我有没有说过域名很容易记住?

使用这些不同类型的寻址方式有一些影响,这将在以下章节中描述。然而,在 RFC-822 环境中,您很少会使用绝对地址(如 user@host.domain)以外的任何其他地址。


contents
下一主题: 邮件路由是如何进行的 上一级: 电子邮件 前一主题: 邮件是如何投递的?

安德鲁·安德森
1996 年 3 月 7 日星期四 23:22:06 EST