(Winsock) SMTP 服务器未收到任何信息

问题描述

我正在尝试使用 Windows Winsock 创建一个简单的 SMTP 服务器,目前它只是一个 TCP 服务器,可以打印收到的任何内容。但是,当我连接到它时,它没有收到任何数据;它正在获得连接但没有别的(甚至没有断开连接消息)。如果我将端口更改为 25 以外的任何端口,则一切正常。该端口已打开并在防火墙中允许。可能是什么原因?

编辑:找到解决方案,查看我自己的答案。

解决方法

SMTP protocol 要求 服务器 向客户端发送问候语,然后客户端才能发送任何命令:

3.1.会话启动

当客户端打开与服务器的连接时,将启动 SMTP 会话并且服务器以打开消息作为响应。

...

3.2.客户端启动

一旦服务器发送了问候(欢迎)消息,客户端也收到了,客户端通常会向服务器发送EHLO命令,表明客户端的身份...

...

4.3.1.测序概述

发送方和接收方之间的通信是一种交替对话,由发送方控制。因此,发送方发出命令,接收方以回复进行响应。除非通过服务扩展协商其他安排,否则发送方必须在发送进一步命令之前等待此响应。 一个重要的回复是连接问候语。通常,当连接完成时,接收方会发送 220 “Service ready”回复。发送方应该在发送任何命令之前等待此问候消息。 ...

,

没关系,一直是诺顿在惹我。如果有人遇到同样的问题,我会通过进入诺顿 -> 设置 -> 防病毒并关闭电子邮件防病毒扫描来解决。