有谁知道我可以向试图将邮件发送到我的服务器的发件人提供什么 SMTP 回复代码,以便它知道邮件无法发送到我的服务器。但不是硬故障,所以它会将电子邮件退回给发件人。
我希望它尝试将电子邮件发送到该域的其他 MX 记录。现在发件人可以尝试多次将其发送到我的服务器,但每次我都希望它不被接受并尝试其他 MX 记录。
答案1
回复代码的第一位数字将告诉发送者是否可以重试交易。如果第一位数字是 4,则可以稍后或立即重试交易到不同的 MX,并且有机会成功。如果第一位数字是 5,则表示永久失败,应将其退回给用户,因为重试交易将再次导致相同的错误。
相关章节RFC 2821说:
4yz 瞬态否定完成答复
命令未被接受,请求的操作未发生。但是,错误情况是暂时的,可以再次请求操作。发送方应返回到命令序列的开头(如果有)。当两个不同的站点(接收方和发送方 SMTP 代理)必须就解释达成一致时,很难为“瞬时”赋予含义。此类别中的每个回复可能具有不同的时间值,但鼓励 SMTP 客户端重试。确定回复是否适合 4yz 或 5yz 类别(见下文)的经验法则是,如果回复在重复时成功,而命令形式或发送方或接收方的属性没有任何变化(即,命令重复相同,接收方没有提出新的实现),则回复为 4yz。
5yz 永久否定完成答复
命令未被接受,请求的操作未发生。SMTP 客户端不鼓励重复完全相同的请求(按相同顺序)。即使某些“永久性”错误情况也可以纠正,因此人类用户可能希望指示 SMTP 客户端在未来某个时间点通过直接操作重新启动命令序列(例如,在拼写更改后,或用户更改帐户状态后)。