You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure App Service中用Telnet排查外部SMTP连接故障?

排查Azure App Service与外部SMTP连接问题

我之前也踩过类似的坑——对方说已经把Azure出站IP加进白名单,但App Service就是连不上SMTP,只返回干巴巴的「Failure sending mail」。既然没法像VM那样RDP用Telnet,给你分享几个我亲测有效的排查步骤:

  • 先确认出站IP是否全部加入白名单
    别只看App Service属性里的「出站IP地址」列表就完事了!如果你的App Service有多个部署槽,或者用了Premium/Isolated计划,可能还有额外的出站IP(比如槽的独立IP)。另外,如果配置了VNet集成,还要把VNet的出站公网IP也加上。很多时候对方只加了一个IP,漏掉了其他的,导致连接被拒。

  • 用Kudu工具模拟Telnet测试连接
    App Service没法直接用Telnet,但Kudu高级工具能帮你搞定:

    1. 打开Azure门户里你的App Service,进入「高级工具」点击「Go」进入Kudu;
    2. 切换到「Debug console」选「PowerShell」(CMD的Telnet可能没装,PowerShell更稳);
    3. 执行命令测试连通性:Test-NetConnection smtp.yourserver.com -Port 25(换成对方实际的端口,比如587或465);
      这个命令会返回连接状态、延迟、是否丢包,能直接告诉你是连不上还是超时。
  • 检查Azure的端口限制与网络规则
    Azure默认会限制App Service出站的25端口(除了Isolated计划或特定情况),如果对方SMTP用的是25端口,大概率是这个问题。要么让对方换成587/465(这两个端口Azure默认放行),要么提交Azure支持请求申请解禁25端口。另外,还要检查App Service的「网络限制」里有没有不小心禁用了SMTP端口的出站规则。

  • 开启应用详细日志抓具体异常
    「Failure sending mail」太笼统了,得抓底层错误:
    比如在ASP.NET应用里,把日志级别调到Debug,查看是否有SocketException(连接被拒)、TimeoutException(超时)或者SSL/TLS相关的错误。如果是SSL问题,可能对方SMTP的证书不被信任,或者App Service默认禁用了旧版本的TLS(比如对方只支持TLS 1.0,而App Service已经禁用)。

  • 用Azure Monitor排查网络流量
    开启App Service的「网络日志」,然后用Log Analytics查询出站连接情况,比如:

    AzureDiagnostics
    | where ResourceType == "APPSERVICES" and Category == "AppServiceNetworkLogs"
    | where RemoteIpAddress == "对方SMTP服务器IP"
    | project TimeGenerated, OperationName, ResultType, ResultDescription
    

    这能帮你看到Azure层面是否有连接被拦截的记录。

  • 用同区域VM做对比测试
    如果上面的步骤都没头绪,在Azure同区域创建一个临时VM,把VM的公网IP让对方加进白名单,然后用Telnet或PowerShell测试连接对方SMTP。如果VM能连上,说明问题在App Service的网络配置或Azure限制;如果VM也连不上,那大概率是对方的白名单没配置对,或者对方SMTP有其他限制(比如地区IP段拦截)。

内容的提问来源于stack exchange,提问作者Widor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:08:38