![Windows 中阻止传出的 SMTP 套接字连接](https://linux22.com/image/1327745/Windows%20%E4%B8%AD%E9%98%BB%E6%AD%A2%E4%BC%A0%E5%87%BA%E7%9A%84%20SMTP%20%E5%A5%97%E6%8E%A5%E5%AD%97%E8%BF%9E%E6%8E%A5.png)
我有一个私人电子邮件发送应用程序(Windows),它通过 SMTP 协议发送电子邮件通知。这可能看起来像一个代码问题堆栈溢出,但事实并非如此。该应用程序运行良好,其电子邮件发送功能也很好用。问题是,在某些系统中,特别是在我的 Windows 7 Ultimate 桌面系统上,传出连接被我很难识别的东西阻止了。
我看到的问题是,在建立连接后不久的某个时刻,套接字连接就被代码关闭了10053
,也0x2745
就是WSAECONNABORTED
,即“主机中的软件中止了已建立的连接。”。在我的主机,这差不多是对的——远程服务器不是断开连接的根源。有时,在通道被来自上方的力量摧毁之前,应用程序仍有时间发送和接收 1-2 条消息。
我的第一反应是,这很简单,一定是防火墙或防病毒软件。这种软件只有内置防火墙和 Windows Defender。关闭防火墙没有用,Defender 并未设置为执行任何实时活动,只是按需运行。该机器不是域的一部分,而是纯粹的独立机器。
除此之外,我尝试通过 SSL 和 TLS 安全连接发送,但毫无用处。同时,我向 Google Mail 服务器发送邮件时没有遇到任何问题。我不知道是什么造成了这种差异,可能是 Google 服务器的 SSL 证书信誉良好,但这只是特殊情况。
问题是:假设活动是打开到远程 SMTP 服务器的套接字并执行邮件操作,Windows 中强制关闭此连接的原因可能是什么?是否有任何工具可以对此进行故障排除、查找原因并禁用它?
2013-08-08更新:
WireShark 显示以下 TCP 会话:
答案1
使用 WireShark 等嗅探网络流量可以告诉你更多有关正在发生的事情的信息。
您是否知道 SMTP 对话框中断开连接的位置的详细信息?它是完全随机的,还是与任何 SMTP 命令有关联?我强烈怀疑您的代码中发生了一些意外情况,导致了问题。