可以多次发出EHLO或HELO SMTP命令吗?

可以多次发出EHLO或HELO SMTP命令吗?,smtp,Smtp,在符合rfc5321 SMTP实现的情况下,是否可以多次发出EHLO或HELO命令?如果是这样,那会对连接状态产生什么影响 第4.1.1.1节提及的所有内容如下: 客户端SMTP应通过发出EHLO命令启动SMTP会话。[…]在任何情况下,客户必须在启动邮件事务之前发出HELO或EHLO。这些命令以及对其中一个命令的“250 OK”回复确认SMTP客户端和SMTP服务器都处于初始状态,即没有正在进行的事务,并且所有状态表和缓冲区都已清除 这意味着(尽管没有详细说明)如果事务正在进行中,发送EHLO

在符合rfc5321 SMTP实现的情况下,是否可以多次发出EHLO或HELO命令?如果是这样,那会对连接状态产生什么影响

第4.1.1.1节提及的所有内容如下:

客户端SMTP应通过发出EHLO命令启动SMTP会话。[…]在任何情况下,客户必须在启动邮件事务之前发出HELO或EHLO。这些命令以及对其中一个命令的“250 OK”回复确认SMTP客户端和SMTP服务器都处于初始状态,即没有正在进行的事务,并且所有状态表和缓冲区都已清除


这意味着(尽管没有详细说明)如果事务正在进行中,发送EHLO或HELO命令是一个顺序错误。

尽管暗示服务器必须处于初始状态,但根据第4.1.4节,这是允许的:

EHLO命令可以在会话的稍后由客户端发出。如果它是在会话开始后发出的,并且SMTP服务器可以接受EHLO命令,则SMTP服务器必须清除所有缓冲区并重置状态,就像发出RSET命令一样

因此,关于“确认”客户端和服务器都处于初始状态的部分必须理解为,在收到EHLO响应后,服务器必须处于初始状态,客户端也必须处于初始状态(客户端的意外初始状态可能是EHLO开始的原因)