首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用无法识别的命令时SMTP流水线的正确性

使用无法识别的命令时SMTP流水线的正确性
EN

Stack Overflow用户
提问于 2022-06-24 09:51:17
回答 1查看 38关注 0票数 0

了解SMTP PIPELINING RFC 2920第3.2节表明,服务器支持流水线MUST NOT缓冲区响应无法识别的命令。是期望SMTP Protocol Violation Error的理想响应

例如,这里有一个没有流水线但使用UNKNOWNCOMMAND的文字记录

代码语言:javascript
运行
复制
C: EHLO domain
S: 250-ServerName ..... 250-PIPELINING
C: UNKNOWNCOMMAND 
S: 500 Unrecognized Command
C: EHLO domain
S: 250-ServerName ..... 250-PIPELINING

带流水线

代码语言:javascript
运行
复制
C: EHLO domain
S: 250-ServerName ..... 250-PIPELINING
C: UNKNOWNCOMMAND\r\nEHLO domain
S: 500 Unrecognized Command
S: 250-ServerName ..... 250-PIPELINING

这是预期的行为,还是SMTP服务器不应该缓冲对未知命令和特定命令(RFC 2920,3.2节,第5节)的响应?所以对于流水线的UNKNOWNCOMMAND\r\nEHLO domain,服务器应该只发送一个500 Unrecognized Command响应并刷新500 Unrecognized Command输入缓冲区吗?表现出这种行为的服务器是否遵守了更严格的约束?

EN

回答 1

Stack Overflow用户

发布于 2022-06-27 07:30:32

第3.2节的相关要点如下:

(6)服务器不得缓冲对无法识别的命令的响应。(9)在任何情况下,服务器不得刷新或以其他方式丢失TCP输入缓冲区的内容。

我将这两点解释为:如果在“单个”TCP数据包中发送未知命令,然后发送已知命令,服务器必须在再次从输入中读取之前立即发送对未知命令的响应。换句话说,您接收的是“两个”TCP数据包,而不是一个。除非您监视您的网络流量(或以编程方式测量精确的时间),否则您将无法注意到两者之间的差异。正如上面第9点所指出的,服务器可能不会重置其输入缓冲区。

作为一个客户端,您通常也可以在EHLODATA之后立即发送命令,而不会出现任何问题,因为大多数服务器在它们的输入缓冲区中不会向前看。但是,这样的客户端违反了管道扩展。检测这一点可以用作一种反垃圾邮件技术(请参阅这篇维基百科文章中的无效流水线)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72742181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档