用于重复的Message-ID值的SMTP响应代码

服务器应该发送什么SMTP响应代码来报告Message-ID字段与已经看到的Message-ID重复?

RFC 5322,§3.6.4“标识字段”指出:

“消息ID:”字段提供了一个唯一的消息标识符,它是指特定消息的特定版本。 消息标识符的唯一性由生成它的主机保证。

因此,对于消息声明已经在具有不同内容的消息中已经看到的消息ID值,该指令是违反该指令的。 这意味着SMTP服务器可能会在此基础上拒绝消息。

注意:目的不是要记住所见过的 每一个价值; devise繁琐,操作昂贵。 相反,其意图是使用我们碰巧logging的那些值来检测违反上述指令的传入请求的一部分,并在此基础上尽早拒绝。

RFC 5321§4.2“SMTP回复”中描述的一组代码描述了一些条件,其中字段是拒绝原因(例如,“邮箱不允许”,回复代码553)。

什么应该是条件“消息ID值已经看到”的响应代码?

MTA代理程序不能也不能拒绝邮件的发送。

这样做需要MTA知道(并记住) 所有系统范围内使用的Message-ID,这在CPU,内存和磁盘需求方面显然是令人望而却步的。

简而言之,MTA 必须接受具有重复的消息ID的邮件,留下(可选的)随后的删除工作以供稍后处理(例如:由IMAP服务器或邮件客户端)。