跳到主要内容

3. 身份 (Identities)

Internet Mail 使用的身份形式包括: mailbox, domain name, message-ID 和 ENVID (envelope identifier). 每一种都是全局唯一的.

3.1. 邮箱 (Mailbox)

"A mailbox receives mail. It is a conceptual entity that does not necessarily pertain to file storage." [RFC5322]

mailbox 被指定为 Internet Mail 地址 <addr-spec>. 它有两个不同部分, 由 at-sign (@) 分隔. 右侧是与 ADMD 关联的全局解释 domain name. domain name 在第 3.3 节讨论. 正式的 Internet Mail 地址语法可以支持 source routes, 用于指示消息应经过的发送路径. source routes 并不常用, 且已在 [RFC5321] 中废弃.

at-sign 左侧的部分包含一个全局不透明字符串, 称为 <local-part>. 它只由地址 domain name 指定的实体解释. 除本节后文说明的情况外, 所有其他实体都将 <local-part> 视为未解释的字面字符串, 并保留其所有原始细节. 因此, 公开分发它等同于发送一个 Web browser "cookie", 只有该字符串返回给创建者时才会被解释.

一些 local-part 值已被标准化, 用于联系组织内人员. 这些名称覆盖常见的运营和业务职能 [RFC2142].

站点通常会为 <addr-spec> 左侧的 <local-part> 制定本地结构约定. 这允许 sub-addressing, 例如区分同一参与者使用的不同讨论组. 但是需要强调, 这些约定严格属于 User 所在组织的私有约定, 除 <addr-spec> 右侧列出的域之外, 任何其他域都不会解释这些约定. 例外情况是符合公开标准化约定的专用服务, 如下文所述.

基本 email 地址定义将 <local-part> 视为全局不透明. 但是, email 的某些使用方式会为该值增加标准化的全局模式, 例如 Author 与 Gateway 之间的使用. <local-part> 细节对于公共 email 传输基础设施仍然不可见, 但会为 Gateway 的后续处理提供地址和处理指令. 这些约定的标准化示例包括 Voice Profile for Internet Mail (VPIM) [RFC3801] 的电话号码格式, 例如:

[email protected],

以及 iFax ([RFC3192], [RFC4143]), 例如:

FAX=+12027653000/[email protected].

3.2. Email 地址使用范围

email 地址的使用已经远远超出其在 email 传输和递送中的原始角色. 从实践角度看, email 地址字符串已成为表示在线身份的常用标识符. 因此, 必须明确特定上下文中身份字符串的性质和角色, 以及负责设置该字符串的实体. 例如, 见第 4.1.4, 4.3.3 和 5 节.

3.3. 域名 (Domain Names)

domain name 是对 Internet 资源的全局引用, 例如主机, 服务或网络. domain name 通常映射到一个或多个 IP Addresses. 从概念上讲, 该名称可以涵盖一个组织, 一组集成为同质服务的机器, 或一台单独机器. domain name 可以被管理为指向单个 User, 但这并不是常见实践. 该名称结构化为由点 (.) 分隔的层级标签序列, 层级顶部位于序列最右端. 序列中可以有许多名称, 即层级深度可以很大. domain name 通过 Domain Name System (DNS) ([RFC1034], [RFC1035], [RFC2181]) 定义和运行.

当 domain name 不是 mailbox 地址的一部分时, Internet Mail 使用它指代 ADMD, 或者指代对消息采取动作的主机, 例如为 message identifier 提供管理作用域或执行传输处理.

3.4. 消息标识符 (Message Identifier)

用于识别消息的标准化标签有两个: Message-ID: 和 ENVID. Message-ID: 关联内容, ENVID 关联传输.

3.4.1. Message-ID

IMF 最多提供一个 Message-ID:. 单条消息的 Message-ID: 是用户级 IMF 标签, 有多种用途, 包括 thread 组织, 辅助识别重复消息以及 DSN (Delivery Status Notification) 跟踪. Originator 分配 Message-ID:. Recipient 的 ADMD 是 Message-ID: 的预期消费者, 但传输路径上的任何 Actor 都可以使用它.

Message-ID: 是全局唯一的. 其格式类似 mailbox, 由 at-sign (@) 分隔为两个不同部分. 通常, 右侧指定分配该 identifier 的 ADMD 或 host, 左侧包含一个全局不透明字符串, 用于在右侧引用的域内唯一标识该消息. message identifier 的唯一性持续时间未定义.

当消息以任何方式被修订时, 是否分配新的 Message-ID: 需要进行主观评估, 以判断编辑内容是否改变到足以构成新消息. [RFC5322] 指出, "a message identifier pertains to exactly one version of a particular message; subsequent revisions to the message each receive new message identifiers." 但经验表明需要一些灵活性. 一个无法完成的测试是 Recipient 是否会认为新消息等同于旧消息. 对 Internet Mail 的大多数组件来说, 无法预测特定 Recipient 在此问题上的偏好. 创建新的 Message-ID: 和不创建新的 Message-ID: 都有其缺点.

以下是一些指导和示例:

  • 如果消息只是在形式上发生变化, 例如字符编码, 它仍然是同一消息.

  • 如果消息内容仅有少量增加, 例如在 RFC5322.Subject 头字段开头添加 Mailing List 标签, 或在主要正文部分文本末尾添加一些 Mailing List 管理信息, 它很可能仍然是同一消息.

  • 如果消息中的病毒被删除, 它很可能仍然是同一消息.

  • 如果消息中的冒犯性词语被删除, 一些 Recipient 会认为它是同一消息, 但另一些不会.

  • 如果消息被翻译成另一种语言, 一些 Recipient 会认为它是同一消息, 但另一些不会.

  • 如果消息被包含在消息摘要中, 该摘要是新消息.

  • 如果消息由 User 转发, 这是新消息.

  • 如果消息被 "redirected", 例如使用 User Agent (MUA) 中称为 "Bounce" 或 "Resend" 的功能, 这是新消息.

3.4.2. ENVID

Envelope Identifier (ENVID) 是主要用于 DSN 跟踪的标签 [RFC3461]. ENVID 被指定为 SMTP 协议的一部分. 它由 Originator 分配并由 MHS 使用. Recipient 的 MHS 可以使用它辅助重复检测. ENVID 是全局唯一的. 其格式类似 mailbox, 由 at-sign (@) 分隔为两个不同部分. 通常, 右侧指定分配该 identifier 的 ADMD 或 host, 左侧包含一个全局不透明字符串, 用于在右侧引用的域内唯一标识该消息.