为什么从发送电子邮件到收到拒绝之间的延迟时间这么长?

为什么从发送电子邮件到收到拒绝之间的延迟时间这么长?

举几个例子,我有两个要发送邮件的电子邮件地址,假设“[电子邮件保护]“ 和 ”[电子邮件保护]“(两个不同的收件人,在两个不同的域上)。在这种情况下,发送方是 Exchange 2007,然后经过内容过滤系统(类似 MessageLabs)。

在第一个例子中,我尝试发送一封电子邮件,两天后我收到了拒绝邮件,邮件内容如下:

Diagnostic-Code: smtp;550 4.4.7 QUEUE.Expired; message expired

在第二个例子中,我尝试发送一封电子邮件,6 天后收到拒绝,并显示以下诊断代码:

Diagnostic-Code: smtp; 5.4.7 - Delivery expired (message too old) '[Errno 61] Connection refused' (delivery attempts: 0)

我的问题本质上是:不管返回的具体消息是什么,从大范围来看,哪些因素可以解释(a)消息被拒绝的情况 - 即在失败之前尝试了多长时间,(b)发送端和接收端在确定这些延迟/超时/失败方面起什么作用?

我猜测,如果发送出现问题,则发送服务器的重试策略适用,而如果 SMTP 连接并应答,但没有收到,在这种情况下接收服务器将发挥更大的作用。

谢谢!

答案1

许多人希望电子邮件能像即时消息一样工作。然而,它是一种使用存储转发机制的完全不同的机制。可能会出现相当大的延迟,从而允许更可靠的交付,但对问题的即时通知较少。

电子邮件在被退回之前等待的时间由退回它的服务器配置。这可以是您的服​​务器、客户端系统上的服务器之一或两者之间的服务器。通常,电子邮件将重试近一周。重试机制和重试计划建议包含在 RFC 中。(不记得具体是哪一个了。)通常每小时一次,持续几个小时,然后间隔更长,延迟时间更长。

有些服务器会发送一两条消息通知发送者他们的消息被延迟了。这是可选的,通常最后一条延迟消息会在一两天内发送。

邮件也可能因为被认为是永久性的原因而被立即退回。我应用了一些我不会改变的策略,这些策略会导致电子邮件被退回。这些策略通常应用于服务器配置,表明电子邮件几乎 100% 可能是垃圾邮件。向非本地帐户发送电子邮件也被视为永久性问题(仅限传入邮件)。大小限制通常也被视为永久性问题。具有永久性的邮件将立即退回,除非它们已经因临时问题而被推迟。

如果我因其他原因拒绝投递,则邮件将被延迟。这会告诉呼叫服务器这种情况是暂时的,可能会修复。正确配置的服务器将重试几天。一些可能的垃圾邮件情况在这里以这种方式处理。如果我注意到合法服务器配置不正确,我会调整我的配置并允许它投递邮件,并尝试通知其他服务器的管理员更正其配置。这对某些垃圾邮件很有效,因为它无法正确重试。

答案2

取决于发送方和接收方的错误。

如果接收方错误是最终的(即,意味着无法进一步尝试的错误,例如“帐户不存在”,具有特定的 SMTP 代码),则它将失败。

如果服务器刚好断开连接/无法访问,则会在发送方上进行配置(它尝试将消息丢弃到某处多长时间)。

如果是通过中继(最终服务器离线,备份服务器接受)那么它会在备份服务器上配置......因为您的服务器实际上接收了电子邮件并将其删除。

在您的情况下,接收方不想与您/您的服务器有任何关系,因此它拒绝连接(服务器存在,tcp 连接失败 - 可能是多种原因之一,包括反垃圾邮件模块、防火墙),因此您的服务器不知道(没有最终答案)并且只要配置为这样做就会重试。

答案3

我认为这是双方可配置的偏好。一旦您交出邮件,您就无法控制何时从另一端的处理程序收到递送通知。这些都取决于 MTA 的所有者,包括您自己。

相关内容