自定义SMTP服务器兼容多数客户端但无法适配Outlook的问题排查
问题
搭建了一台监听25端口的简易SMTP服务器,对所有请求均返回250 Ok并接收所有邮件。该服务器可正常对接多数邮件客户端,但与Microsoft/Outlook客户端交互时出现异常:Outlook仅建立连接,不发送EHLO、MAIL FROM等任何指令,直至连接超时。
正常客户端交互日志
Connected: ::ffff:209.85.166.174 < 220 XXXX.XXX.AU running experimental mail server > EHLO mail-il1-f174.google.com < 250-xxxx.xxx.au < 250-8BITMIME < 250 Ok > MAIL FROM:<xxxxx.xxxxx@gmail.com> < 250 OK > RCPT TO:<xxxx.xxx@xxxx.xxx.au> < 250 OK > DATA < 354 End data with <CR><LF>.<CR><LF> > Received: by mail-il1-f174.google.com with SMTP id ........ ...
Outlook客户端交互日志
Connected: ::ffff:40.92.52.87 < 220 XXXX.XXX.AU running experimental mail server < 451 4.4.2 Timeout waiting for data from client.
请问Outlook客户端在此场景下等待的是什么?
分析与解答
Outlook在此场景下等待的是以下两种情况之一:
- 标准的STARTTLS协商响应:Outlook默认会优先尝试加密连接,在TCP连接建立并收到服务器220问候后,它会等待服务器在EHLO响应中提供STARTTLS扩展支持。你的简易服务器既不支持STARTTLS,也没有正确回应对加密协商的预期,导致Outlook卡在连接初始化阶段,最终超时。
- 完整格式的220问候语:多数客户端对SMTP协议的换行符容错性较高,但Outlook要求严格——如果你的服务器发送的220问候语没有以标准的
<CR><LF>(回车+换行)结尾,Outlook会认为问候还未发送完成,一直等待剩余内容,直到超时。
简单来说,核心问题是你的服务器未满足Outlook对SMTP协议的严格要求:要么是缺失STARTTLS支持,要么是220问候的格式不符合标准。
内容的提问来源于stack exchange,提问作者Maxim Suponya
相关产品推荐
相关产品推荐

