我们在 Windows 和 Linux 中使用什么命令来检查远程 SMTP 服务器 (192.168.5.5) 是否响应 SMTP 命令?
答案1
如何检查远程 SMTP 服务器是否响应 SMTP 命令?
使用telnet
。
telnet smtp.example.com 25
笔记:
- 看安装 Telnet 客户端如果
telnet
您的 Windows 版本没有安装。 smtp.example.com
用。。。来代替192.168.5.5
- 连接后
telnet
即可使用SMTP 命令与服务器对话:
S: 220 smtp.server.com 简单邮件传输服务已准备就绪 C: HELO client.example.com S:250 你好客户端.example.com C: 邮件发件人: S:250 好 C:收件箱至: S:250 好 C:数据 S:354 发送消息内容;以 结尾。 C: C: 。 S:250 OK,消息已接受传送:排队为 12345 C:退出 S:221 再见
其中S:
是服务器,C:
是客户端(telnet
)。
进一步阅读
答案2
Windows 默认不启用 telnet。而且 telnet 客户端不太好用。所以最好安装 cygwin。
那么
nc 3.4.5.6 25
如果您想使用 telnet 进行连接,则必须先启用 telnet 客户端。查看 ctrl 面板..程序和功能..然后在最左侧,“打开或关闭 Windows 功能”,单击那里。然后会出现一个窗口来打开或关闭窗口功能,列表按字母顺序排列,单击 telnet 客户端。您可以取消勾选 telnet 服务器。这样它只会启用 telnet 客户端。
然后你可以做
telnet 3.4.5.6 25
这是在 Windows 7 中启用 telnet 客户端。它已经安装,从某种意义上说,您不需要指向安装文件,就像在 xp 中需要安装 Windows 功能时一样,它只是没有启用。(顺便说一下,XP 默认启用了 telnet 客户端。xp 没有安装但未启用的问题)。顺便说一句,使用 telnet 服务器,如果您勾选了该框,它会使服务出现在 services.msc 中但未启动,服务会列出,但 windows 在 services.msc 中将其称为“已禁用”。显然,通常不建议您运行 telnet 服务器。
事实是,有时他们可以使用 SSL 服务器。
有两种带 SSL 的 SMTP 类型,较旧的类型往往在端口 465 上,这是以 SSL 开头的隐式 SSL。它们在此处进行了讨论https://www.fastmail.com/help/technical/ssltlsstarttls.html
为此,隐式 SSL、nc 或 telnet 本身对您无济于事。您需要使用 stunnel(nc 或 telnet)。或者,openssl。更常见的 SMTP 带 SSL 形式往往位于端口 587 上,并且是显式 SSL,它从非 SSL 开始,然后转为 SSL。为此,可以使用 nc 或 telnet 来查看它是否是通过 SSL 的 SMTP。在端口 25 上运行的 OpenSSL 可能是纯 SSL,但通常是显式 SSL。
顺便说一句,从技术上讲,我们不再谈论 SSL,而是 TLS。TLS 从 SSL v3 开始,然后您得到了 TLS 版本。SSL 很旧,TLS 从 TLS 1.0 开始等更现代。自从出现 Poodle 漏洞以来,SSL 3.0 确实已经逐步淘汰。
关于 openssl,Grawity 有一篇很棒的文章介绍了这一点,另一个答案也介绍了这一点telnet 或 netcat 客户端可以通过 SSL 通信吗?
(你可能需要也可能不需要-crlf
)
openssl s_client -connect 1.2.3.4:465
openssl s_client -connect 1.2.3.4:465
openssl s_client -connect 1.2.3.4:587 -starttls smtp
openssl s_client -connect 1.2.3.4:25 -starttls smtp
一旦连接,就会有 SMTP 命令,因此您可以发送电子邮件,但如果您只是想查看服务器是否响应,则不需要这样做。
如果你只是检查响应而不需要发送电子邮件,那么你真正需要 openssl 的唯一情况是隐式 SSL - 端口 465