Azure Web Service调用外部SMTP发信请求超时问题排查求助
Azure Web App 对外SMTP连接超时问题排查方案
端口封禁相关问题说明
Azure没有在全局层面推送针对587端口SMTP流量的统一封禁规则,仅对未加密的默认SMTP端口25的出站流量做了订阅级别的默认限制,免费/新注册订阅默认拦截25端口出站,你的问题为非全局平台规则导致,可按以下优先级排查:
排查步骤
1. 验证AWS侧IP拦截规则
本地运行正常但Azure端超时,最常见的原因是Azure Web App的出站IP被AWS端的安全策略拦截:
- 进入Azure门户对应Web服务的【属性】页面,复制所有
出站IP地址段 - 检查AWS服务器安全组规则,确认已允许上述IP段访问587端口
- 检查iRedMail所在服务器的封禁规则:包括
fail2ban拦截记录、iptables/ufw防火墙规则、iRedMail自带的IP黑白名单配置,排除Azure出站IP被误封禁的情况。
2. 验证Azure端网络连通性
- 进入Web服务的【高级工具(Kudu)】面板,启动控制台后执行连通性校验命令:
tcpping <你的iRedMail服务器域名/IP> 587
如果返回超时,可确认是Azure到AWS服务器的网络链路层面的问题。 - 如果你的Web服务开启了VNet集成,检查关联VNet的NSG规则、路由表配置,确认没有拦截587端口出站的规则;如果开启了WAF/应用网关,检查WAF规则是否拦截了SMTP流量。
3. 校验SMTP客户端配置
- 确认代码中SMTP客户端显式开启TLS配置:
smtp.EnableSsl = true,587端口要求必须通过STARTTLS加密传输,未加密的连接会被SMTP服务直接丢弃。 - 确认代码中没有硬编码本地代理配置,部署到Azure后代理不可用会导致连接超时。
- 建议替换过时的
System.Web.Mail.SmtpMail类,改用System.Net.Mail.SmtpClient或MailKit库,旧类的加密协议支持存在兼容性问题。
兜底验证方案
可临时使用第三方SMTP服务的587端口做发信测试,如果可以正常发信,即可彻底排除Azure平台封禁587端口的可能性,问题锁定在AWS侧网络或iRedMail配置层面。
内容的提问来源于stack exchange,提问作者Krishna Sarma
相关产品推荐
相关产品推荐

