跳到主要内容

8. 消息修改 (Message Modification)

站点 可以 修改 submission 以确保符合标准和 site policy. 本节描述若干通常被认为有用的修改.

注意: 作为实现 message modification 的本地决策指导, 首要规则是将此类动作限制为修复具有明确解决方案的具体问题. 对 address element 尤其如此. 例如, 不加区别地向缺少 domain 的 address 或 element 追加 domain, 通常会导致更多损坏 address. unqualified address 必须先验证为该 domain 中有效的 local part, 然后才能安全地添加 domain.

MSA 转发或投递的任何 message 必须 符合 [SMTP-MTA] 和 [MESSAGE-FORMAT] 的要求.

8.1. 添加 'Sender'

如果 sender identity 已知且未在 'From' 字段中给出, MSA 可以 添加或替换 'Sender' 字段.

MSA 必须 确保其放入 'Sender' 字段的任何 address 实际上都是有效 mail address.

8.2. 添加 'Date'

如果 submitted message 缺少 'Date' 字段, 或 'Date' 字段不符合 [MESSAGE-FORMAT] syntax, MSA 可以 添加或更正 'Date' 字段.

8.3. 添加 'Message-ID'

如果缺少 'Message-ID' 字段, 或该字段不是有效 syntax (按 [MESSAGE-FORMAT] 定义), MSA 应该 添加或替换 'Message-ID' 字段. 注意, 许多 client 仍不生成 Message-ID 字段.

8.4. 传输编码 (Transfer Encode)

如果需要且不会损害 MIME type, MSA 可以 按 MIME convention 对 message 应用 transfer encoding.

8.5. 对消息签名

MSA 可以 对 message 进行 (digital) signature, 或以其他方式向 message 添加 authentication information.

8.6. 加密消息

MSA 可以 为 transport 加密 message, 以反映 organizational policy.

注意: 为了有用, MSA 添加 signature 和/或 encryption 通常意味着 MUA 与 MSA 之间的 connection 本身必须以其他方式得到保护, 例如在 secure environment 内运行, 在 transport layer 保护 submission connection, 或使用提供 session integrity 的 [SMTP-AUTH] mechanism.

8.7. 解析 Alias

MSA 可以 按 local policy 解析 SMTP envelope 中, 以及可选 header address field 中 domain name 的 alias (CNAME record).

注意: 无条件解析 alias 可能有害. 例如, 如果 www.example.net 和 ftp.example.net 都是 mail.example.net 的 alias, 重写它们可能丢失有用信息.

8.8. 头部重写 (Header Rewriting)

MSA 可以 按 local policy 重写 SMTP envelope 中, 以及可选 header address field 中的 local part 和/或 domain. 例如, 站点可能更愿意将 'JRU' 重写为 'J.Random.User' 以隐藏 login name, 和/或将 'squeaky.sales.example.net' 重写为 'zyx.example.net' 以隐藏 machine name 并使移动用户更容易.

然而, 只有匹配特定 local MSA configuration setting 的 address, local-part 或 domain 才应被更改. MSA 应用 data-independent rewriting rule 会非常危险, 例如总是删除 domain name 的第一个 element. 因此, 例如当完整 domain 匹配 '*.foo.example.net' 时剥离 domain 最左侧 element 的 rule 是可以接受的.

MSA 不得 以违反 [SMTP-MTA] 对 local-part 修改约束的方式重写 forward-pointing (destination) address.