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

.Net SmtpClient调用Amazon SES发邮件超时问题排查求助

针对Amazon SES SMTP超时及TLS问题的抓包分析建议

一、定位TLS握手阶段的异常点

在Wireshark中过滤目标SES服务器流量(过滤规则:ip.addr == email-smtp.us-east-1.amazonaws.com),重点排查TCP连接建立和TLS握手两个阶段:

  • 正常流程:TCP三次握手(SYN→SYN-ACK→ACK)完成后,客户端发送STARTTLS命令,随后触发完整TLS握手流程(Client Hello→Server Hello→Certificate→Server Key Exchange→Server Hello Done→Client Key Exchange→Change Cipher Spec→Finished→Server Change Cipher Spec→Server Finished)
  • 异常PC的抓包若卡在以下环节,对应排查方向:
    • TCP三次握手阶段:检查本地防火墙/企业内网策略是否拦截587端口出站流量,或本地路由配置异常
    • STARTTLS发送后无响应:服务器未接收命令,或本地TLS套件不被SES支持
    • TLS Client Hello发出后无Server Hello:对比正常PC抓包的TLS版本和加密套件列表,异常PC可能使用了SES已弃用的旧版本(如TLS 1.0/1.1,SES仅支持TLS 1.2+)或不兼容的加密套件

二、结合openssl命令的失败细节分析

给openssl命令添加-debug参数,获取更详细的失败阶段信息:

openssl s_client -crlf -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:587 -debug
  • 若输出卡在connect:errno=xxx:属于TCP层面连接问题,优先排查防火墙、网络路由或DNS解析
  • 若卡在STARTTLS之后无响应:尝试指定SES支持的TLS版本和加密套件测试,比如:
    openssl s_client -crlf -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:587 -tls1_2 -cipher ECDHE-RSA-AES128-GCM-SHA256
    
    若该命令能成功,说明异常PC默认TLS配置不符合SES要求

三、检查.Net SmtpClient的TLS配置

.Net平台的SmtpClient行为受系统或代码配置影响:

  • 代码中必须显式设置EnableSsl = true
  • 对于.NET Framework:检查系统注册表是否禁用TLS 1.2,需确保HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319下的SchUseStrongCrypto值设为1
  • 对于.NET Core/.NET 5+:可通过代码强制指定TLS版本,避免系统默认配置问题:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;
    

四、排除网络环境差异

仅部分PC出现问题,大概率是网络环境差异导致:

  • 检查异常PC是否处于企业内网,是否有代理服务器、防火墙规则拦截SMTP over TLS流量
  • 对比正常PC和异常PC的DNS解析结果,确认是否解析到SES官方指定的服务器IP范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:46:01