【问题标题】:When an e-mail message fails MTA-STS checks, it must not be delivered; will the sender be informed about the delivery failure? When?如果电子邮件未通过 MTA-STS 检查,则不得投递;是否会通知发件人递送失败?什么时候?
【发布时间】:2026-01-30 05:05:01
【问题描述】:

短:

当即将发送的电子邮件消息未通过 MTA-STS 检查时,不得按设计发送; 发件人会被告知递送失败吗?什么时候?

长篇和背景信息:

在自定义域上实施 mta-sts 以强制使用 TLS 连接时,错误配置 mta-sts.txt 策略文件(或不支持 TLS 连接的 smtp 服务器)将导致电子邮件无法以强制执行的策略将需要 TLS 连接来传递电子邮件。

通过 TLS 报告域持有者(而不是发件人)可能会被告知任何问题,前提是 TLS 报告设置到不同的域或工具,该工具在与相关域不同的地址上进行通知。

我的问题是关于任何电子邮件的发件人。在一个策略文件提到不正确的 mx 记录的测试用例中,没有发送电子邮件(如预期的那样),但测试发件人没有接收任何有关交付问题的消息(尚未)。

这是预期的行为吗?还是会在几个小时后通知发件人?如果是这样,几个小时? - 我问是因为交付失败和 NDR(未交付报告)通常会立即返回。

如果用户拼错了电子邮件地址或接收服务器出现故障,发件人会被告知问题并采取措施。有时甚至会宣布“交货延迟”;还没有失败,但也没有交付。

我的印象是,发件人没有被告知邮件未送达并且被“默默地黑洞/丢弃”。需要明确的是:消息未传递是此测试用例中的预期行为。

规格:https://www.rfc-editor.org/rfc/rfc8461

【问题讨论】:

  • 根据RFC 5321,一旦 SMTP 服务器接受了电子邮件消息的责任,它就不能丢失它,而是投递或退回(退回)它。
  • @罗伯特,谢谢。我在 RFC5321 中找不到直截了当的答案,其中提到了 1 到 3 天的时间窗,但没有具体的答案。显然它比 mta 早一点;)。但是,您的主要观点是它只能有两个结果,这很有帮助。它还允许测试。我的第一次测试导致 24 小时后退回邮件,但那是由于 mx 记录中不存在服务器和正确的 mta 文件。所以错误是关于 DNS 问题。对于下一轮测试,mx dns 记录不是假的,只是错误的服务器。我想我会在第二轮测试之后得到答案。

标签: email smtp starttls dmarc


【解决方案1】:

在运行了一些测试用例之后,我经历了以下几点:

(这是由 Outlook.com smtp 服务器完成的。)

测试用例 C

  • MTA-STS:故意不正确,但 mta-sts 文件中存在第三方 mx 服务器。
  • DNS:正确的 mx 服务器。

在 24 小时后通知发件人递送失败。

用我的当地语言解释了发生了什么;这里的信息亮点:

  1. 消息无法传递。
  2. 多次尝试交付。
  3. 但原因是无法连接到远程服务器。
  4. 建议通过电话联系收件人,要求收件人将错误通知邮政局长。
  5. 甚至有人建议该问题很可能只能由邮政局长解决。
  6. (提供了一个链接,但这并没有真正的帮助。此外,技术退回消息在其中可见,其中包含“MTA-STS 验证失败”的技术字样)。

测试用例 B

  • MTA-STS:mta-sts 文件中正确且所需的 mx。
  • DNS:故意设置为不正确的 mx 服务器,但现有服务器。

24 小时后,我收到了一条错误回复。令人困惑的是,该地址在目标域中不存在的消息状态。虽然这是真的,但它不应该走到这一步。然而,在审查技术部分时,outlook 发送服务器提到“mta-sts 错误验证失败”。所以技术部分包含正确的 mta-sts 验证错误,但人类/用户可读部分只提到目标地址在目标服务器中不存在。

我猜如果地址不存在,任何 mta-sts 错误对于向最终用户报告都“不太重要”。建议用户重新输入并重新发送电子邮件,并验证收件人的地址(电话是否被提及)。 但是,即使用户按照说明进行操作,也不会发送下一封电子邮件,但这超出了此测试用例。


测试用例 A

  • MTA-STS:更正 mta-sts 文件中的 mx。
  • DNS:Fake MX 更正。

24 小时后,我收到了一条错误回复。无法传递邮件的原因是无法解析收件人的域位置。 (不想要的结果,但合乎逻辑,mx 没有指任何东西。)

消息的技术部分提到了“DNS 查询失败”。没有提到任何 mta-sts。


测试用例 Z(奇怪的一个)

  • MTA-STS:更正 mta-sts 文件中的 mx。
  • DNS:不正确但现有的 mx 记录;引用正确 mx 服务器的相同 IP 的 cname(这无关紧要,因为 mta-sts 应该将 cert 与 cname 进行比较。)

结果,出乎意料:

  • 一封电子邮件在 24 个时间窗口之间的某个时间送达。
  • 一封电子邮件因 mta-sts 验证错误而失败。

网络服务器的临时停机可能是一个因素,尽管这应该无关紧要。 - 无法解释。


结论

如您所见,我花了一段时间才找到正确的测试用例。但是测试用例 C 描述了所需的行为。 是的,在 24 小时后以 outlook.com 作为 smtp 服务器通知发件人。 以清晰的语言通知用户。话虽如此,我确实对这里的时间有额外的看法,如下所述。

限制

坚持事实:我没有对尝试未加密连接的服务器执行测试用例。测试用例 C 将球放入收件人的邮政局长的球场,我很想知道在未加密尝试的情况下球(“待办事项”)将放在哪里,因为收件人无法解决但必须解决由发件人或发件人的邮政主管。

我也没有测试多个 smtp 服务器。

进一步的想法

话虽如此,发件人 SMTP 需要支持 MTA-STS 验证(如果我错了,请在 cmets 中纠正我*),所以如果服务器太旧,它会尝试通过非加密连接,它很可能不支持 MTA-STS,因此它不会验证 MTA-STS 策略,只是简单地发送不受保护的电子邮件。 * 在这里找到确认,来自段落"There is a standard...")

如果有人试图通过 dns-poisoning 重定向某些传入的电子邮件,现代 smtp 服务器不会将电子邮件传递到错误的目的地。 因此,它可以防止作恶,而不是防止遗产。

意见

我觉得24小时的反馈延迟太长了。测试用例 C 在该 24 小时窗口内报告了 11 次重试尝试。虽然我很欣赏系统没有放弃,但我认为至少通知发件人不定期交付可能符合发件人的利益。

【讨论】:

  • RFC 3464 说:几个小时后,[MTA] 可能会发出一个“延迟”的 DSN,以通知发件人邮件尚未送达。几天后,MTA 可能会放弃传递邮件的尝试并返回“失败的”DSN。所以你看到的可能是一致的。电子邮件不是即时消息 :-)
  • @Robert ;) 也许电子邮件本身不是即时通讯,但是,错误反馈应该尽快。如果地址错误,您可以立即将其取回。如果 mta-sts 验证失败,我认为您也应该将其取回,至少您提到的“延迟”DSN,因为发件人对交付的正常期望被打破了。至少我对 24 小时后通知发件人感到满意,正如您所知,我最初的印象是发件人根本不会收到通知。
  • 也许他们等到 DNS 条目的生存时间到期?
  • 不太可能,在测试期间,DNS 记录的 TTL 为 2 分钟。