【发布时间】:2018-12-26 23:59:09
【问题描述】:
我们使用 Mandrill 发送电子邮件,我们想知道关于无法传递的消息的 SMTP 响应。例如,当收件人的邮箱已满时会出现 552。
SMTP 服务器只需几秒钟即可响应。在这段时间内,邮件是否到达收件人的邮箱?
如果是这样,如果邮件不能立即送达怎么办?是否存在超时,即使电子邮件未送达,SMTP 服务器也会响应?
【问题讨论】:
我们使用 Mandrill 发送电子邮件,我们想知道关于无法传递的消息的 SMTP 响应。例如,当收件人的邮箱已满时会出现 552。
SMTP 服务器只需几秒钟即可响应。在这段时间内,邮件是否到达收件人的邮箱?
如果是这样,如果邮件不能立即送达怎么办?是否存在超时,即使电子邮件未送达,SMTP 服务器也会响应?
【问题讨论】:
对于经过身份验证/受信任的发件人的 AFAIK,大多数 SMTP 服务器部署“在任何转发尝试之前接受并存储在队列中”。
如果您想要更详细的信息,请使用您使用的名称 SMTP 服务器软件。
【讨论】:
SMTP 服务器只需几秒钟即可响应。之内 到时候,邮件是否到达收件人的邮箱?
如果服务器因为邮箱已满而发送错误,这很好地表明邮件没有到达收件人的邮箱。
如果是这样,如果邮件不能立即送达怎么办?是 有一个超时,这样 SMTP 服务器即使在发送电子邮件时也会响应 没有发货?
这取决于您连接的服务器。如果您直接连接到目标服务器(例如 Exchange 服务器),它通常会知道它是否可以接受电子邮件(例如因为邮箱已满),并且可以通过拒绝发送来立即响应。
如果您连接到将电子邮件路由到另一个邮件服务器的 MTA,那么当您连接到它时,它不会知道收件人的邮箱是否已满。但是,它可能会出于其他原因拒绝该电子邮件(例如,如果您的 IP 地址因发送垃圾邮件而闻名)。 MTA 通常会在尝试将电子邮件传递到另一个邮件服务器之前接受整个邮件。
如果 MTA 尝试投递电子邮件并收到永久性 (5xx) 错误,则 MTA 将不会再次尝试投递电子邮件。如果错误是暂时的 (4xx) 错误,则 MTA 通常会等待一段时间,然后再次尝试投递邮件。大多数 MTA 都会设置一个超时设置,之后它们就会停止尝试投递邮件。
大多数现代 MTA 都支持 DSN 作为 SMTP 扩展。 (DSN 代表 Delivery Status Notification:有关详细信息,请参阅 https://www.rfc-editor.org/rfc/rfc3461。)当支持 DSN 的 MTA 无法将电子邮件传递给收件人时,它会向发件人发送一条 DSN 消息,指示它无法传递电子邮件。
【讨论】: