10. 其他主题
本节讨论与 DMARC 部署和运行相关的若干主题.
10.1. SPF 特有问题
SPF 与 DMARC 一起使用时会带来一些问题, 域所有者和邮件接收方应对此有所了解:
-
仅 SPF 认证: 如果域所有者只发布 SPF 策略而不发布 DKIM 策略, 则所有电子邮件转发 (RFC5321.MailFrom 域发生变化的情形) 都会导致标识符对齐失败.
-
邮件列表: 许多邮件列表在 RFC5322.From 字段中使用原作者的域, 但将 RFC5321.MailFrom 域改为自己的域. 这会破坏 SPF 标识符对齐.
-
转发器: 简单转发 (用户将邮件转发到另一个地址的情形) 不会改变 RFC5321.MailFrom 域, 但可能导致 SPF 失败, 因为转发服务器的 IP 地址未列在原始域的 SPF 记录中.
10.2. DNS 负载与缓存
DMARC 实现者应了解以下与 DNS 相关的考虑:
-
查询量: 邮件接收方会为每一封经过 DMARC 评估的消息查询 DNS 中的 DMARC 记录. 高流量接收方应实现适当的缓存策略.
-
缓存: DMARC 策略的 DNS 记录应按照其 TTL (Time To Live) 值缓存. 域所有者应设置适当的 TTL 值:
- 在策略推出或变更期间使用较短 TTL (例如 300 秒)
- 对稳定策略使用较长 TTL (例如 86400 秒)
-
否定缓存: 缺少 DMARC 记录的结果也应按照 SOA 记录的否定缓存 TTL 进行缓存.
10.3. 拒绝消息
当 DMARC 策略指示应拒绝某条消息时, 邮件接收方应考虑以下事项:
-
SMTP 拒绝与 Post-SMTP 拒绝:
- SMTP rejection (在 SMTP 事务期间) 更可取, 因为它向发送 MTA 提供即时反馈, 且不需要生成退信消息.
- Post-SMTP rejection (接受消息之后) 应避免使用, 因为它可能导致 backscatter.
-
拒绝代码: 在 SMTP 期间拒绝时, 使用适当的 5xx SMTP 回复代码. 合适的消息可以是:
550 5.7.1 Message rejected per DMARC policy for example.com -
用户通知: 如果合法用户的消息因 DMARC 失败而被拒绝, 应考虑是否通知他们.
10.4. 标识符对齐考虑
有若干考虑适用于标识符对齐:
-
子域对齐: 在宽松模式下, 子域被视为对齐. 域所有者应注意, 这意味着只要 SPF 或 DKIM 对组织域通过, 来自任意子域的邮件都会被视为对齐.
-
第三方发送方: 使用第三方电子邮件服务时, 域所有者必须确保:
- 第三方能够发送 DKIM 签名消息, 且 "d=" 标签中包含域所有者的域, OR
- 第三方的发送 IP 地址包含在域所有者的 SPF 记录中, 且 RFC5321.MailFrom 域可以设置为对齐
-
多个发送来源: 拥有多个发送来源 (内部邮件服务器, 电子邮件营销服务, CRM 系统等) 的域所有者必须确保所有来源都能产生对齐的消息.
10.5. 互操作性问题
DMARC 部署可能与某些电子邮件实践产生互操作性问题:
-
邮件列表:
- 问题: 列表经常修改消息 (添加页脚, 主题标签等), 这会破坏 DKIM 签名
- 解决方案:
- 列表可以使用自己的 DKIM 签名重新签名消息
- 列表可以重写 RFC5322.From 地址 (但这会改变表面发送方)
- 域所有者可以为邮件列表使用的域采用更宽松的策略
-
转发:
- 问题: 转发会破坏 SPF (转发服务器的 IP 未获授权)
- 解决方案:
- 依赖 DKIM (如果内容未改变, DKIM 可以经受转发)
- 转发器可以实现 SRS (Sender Rewriting Scheme)
-
间接电子邮件流: 任何消息被修改或通过中介转发的电子邮件流都可能出现 DMARC 问题. 详见 [DMARC-INDIRECT].
-
通知消息: 自动通知系统应配置为使用对齐的标识符, 或者可能需要使用采用 "p=none" 策略的域.