接收邮件时遭遇“Connection is closed by foreign host”错误的原因排查及解决方法咨询
接收邮件时遭遇“Connection is closed by foreign host”错误的原因排查及解决方法咨询
您好,我看了您提供的telnet测试SMTP连接的日志,这个问题在SMTP交互场景里挺常见的,咱们一步步来分析可能的原因和对应的解决办法:
先把您的测试日志贴出来方便参考:
telnet 192.168.52.133 587 Trying 192.168.52.133... Connected to 192.168.52.133. Escape character is '^]' 220 WIN-LJJOOG2IF45 Microsoft ESMTP MAIL Service, Version: 10.0.20348.1 ready at Tue, 26 Nov 2024 06:49:17 -0800 ehlo 250-WIN-LJJOOG2IF45 Hello [192.168.52.128] 250-TURN 250-SIZE 2097152 250-ETRN 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-8bitmime 250-BINARYMIME 250-CHUNKING 250-VRFY 250 OK mail from:[redacted1]@gmail.com 250 2.1.0 [redacted1]@gmail.com....Sender rcpt to: [redacted2]@gmail.com Connection closed by foreign host.
从日志能看到,您已经成功建立了SMTP连接,EHLO握手也正常完成,但在发送rcpt to指令时直接被对方服务器断开了连接,常见的原因主要有这几个:
- 缺少身份认证:很多SMTP服务器(尤其是587这个提交端口)要求在发送RCPT命令前必须先进行AUTH身份验证。您当前的测试流程里没有做认证步骤,服务器可能因为这个直接拒绝并断开连接。建议您在EHLO之后添加
AUTH LOGIN(或者对应服务器支持的认证方式),输入用户名和密码后再尝试发送MAIL FROM和RCPT TO指令。 - 收件人地址问题:收件人邮箱
[redacted2]@gmail.com可能不存在,或者被目标服务器的拒收规则拦截(比如对方把这个邮箱设置了拒收,或者服务器判定该地址无效)。您可以先确认收件人邮箱的有效性,或者换一个已知有效的收件人测试。 - 发送方IP/域名被拦截:您的客户端IP(192.168.52.128)可能被目标服务器的防火墙、反垃圾邮件系统标记为可疑IP,导致服务器直接断开连接。您可以检查目标服务器的安全策略,或者尝试从其他IP进行测试。
- SMTP服务器配置限制:目标Microsoft ESMTP服务器可能有发送限制,比如单次连接的收件人数量、邮件大小限制,或者对未认证连接的收件人范围做了限制(比如只允许发送到本地域名邮箱,而您发送的是gmail.com的外部邮箱)。您可以查看该服务器的SMTP配置文档,确认是否有这类限制。
给您几个具体的测试建议:
- 补充身份认证步骤后再测试,示例流程如下:
ehlo yourdomain.com AUTH LOGIN # 输入base64编码的用户名 # 输入base64编码的密码 mail from:[redacted1]@gmail.com rcpt to:[redacted2]@gmail.com - 更换一个本地域名的收件人邮箱(如果目标服务器是内部服务器)进行测试,看是否能正常完成交互。
- 查看目标SMTP服务器的系统日志,里面应该会记录断开连接的具体原因,这是最直接的排查方式。
备注:内容来源于stack exchange,提问作者Eniya Sri




