【问题标题】:(Winsock) SMTP server not receiving anything [closed](Winsock)SMTP服务器没有收到任何东西[关闭]
【发布时间】:2021-04-15 16:24:03
【问题描述】:

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

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

【问题讨论】:

  • 您是否发送了您应该在打开连接时发送的消息?客户可能正在等待它。 tools.ietf.org/html/rfc5321#section-3.1
  • 是的,但客户端也没有收到任何内容。但是,这真的是端口 25 的默认设置吗?我不应该仍然能够在没有 SMTP 的情况下在端口 25 上创建 TCP 连接吗?
  • 哦,您没有使用 SMTP 客户端连接它吗?
  • 我试过了,但没有区别,仍然只能连接但没有收到任何东西。
  • @SamuelMattsson 那么请edit您的问题显示您的实际服务器代码。你可能做错了什么,但我们看不到你真正在做什么。

标签: c++ networking smtp winsock2


【解决方案1】:

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

3.1。会话发起

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

...

3.2。客户端启动

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

...

4.3.1。测序概述

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

【讨论】:

  • 但据我了解,端口 25 没有“绑定”到 SMTP 协议,只是为它保留(就像端口 80 没有“绑定”到 HTTP),所以应该t 从技术上讲,我能够通过端口 25 上的 TCP 连接定期通信?
  • @SamuelMattsson 取决于系统。例如,在大多数系统上,小于 1024 的端口是保留的,甚至不能被非管理员进程打开。但是,如果您可以打开这样的端口并与之建立连接,那么是的,通信是可能的,无论是 SMTP 还是其他方式。当然,客户端和服务器必须就实际使用的协议达成一致,以便彼此进行有意义的通信。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 2014-06-19
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多