[功能测试问题]使用qq邮箱进行SMTP测试,报错无法连接到SMTP服务器或该服务器不支持匿名登录。

背景:
使用QQ邮箱进行SMTP测试,已经配置DNS,BMC下能够ping通,报错log如下,om组件应该为闭源包,调用对应的SMTP库。对应QQ邮箱已经通过python脚本验证支持SMTP,对应配置过程如下,SMTP服务端口也尝试使用默认的25




问题:
1.有伙伴遇到同样的问题吗?
2.是我们测试方法存在问题吗?能否提供正确的测试方法?

答案内容由AI生成,仅供参考:

问题分析

根据您提供的信息,当前在使用QQ邮箱作为SMTP服务器进行邮件发送测试时,出现“无法连接到SMTP服务器或该服务器不支持匿名登录”的错误。系统日志显示 smtp_connect: smtp_read_reply failedconnect to smtp failed, ret = -1,表明OM组件(闭源)在尝试建立SMTP连接时失败。

尽管已确认网络可达性(ping smtp.qq.com 成功),且通过Python脚本验证了SMTP功能正常,但BMC系统的OM组件仍未能成功通信,说明问题可能出在协议配置、TLS/SSL处理机制或认证方式的兼容性上。


原因排查与知识库对照

  1. SMTP协议配置要求

    • 根据知识库内容,EJBCA系统通过SMTP协议发送通知时,需明确配置外部邮件服务器地址和端口(如 192.168.13.18:25)。这表明:SMTP服务必须正确配置IP、端口、安全协议(TLS)及身份验证参数
    • QQ邮箱的SMTP服务仅支持加密连接:
      • 端口 465:SSL 加密
      • 端口 587:STARTTLS
    • 若未启用TLS或选择了错误的加密模式(例如应为SSL却配置为STARTTLS),将导致握手失败。
  2. 匿名登录 vs 认证登录

    • 错误提示中提到“服务器不支持匿名登录”,而您的界面配置中“是否启用匿名”选项为“否”,理论上应进入认证流程。
    • 但日志显示并未完成SMTP会话初始化(smtp_read_reply failed),说明问题发生在认证之前——即客户端与服务器之间的基本通信阶段就已中断,可能是由于:
      • TLS握手失败
      • 客户端未正确发送EHLO命令
      • 防火墙或中间设备拦截加密流量
  3. 证书验证问题

    • 您的配置中启用了“校验端服务器证书”,这意味着BMC会尝试验证QQ邮箱SMTP服务器的SSL证书链。
    • BMC系统若缺少公共CA根证书(如DigiCert、GlobalSign等),可能导致证书验证失败,从而终止连接。
    • 虽然您可以点击跳转至“证书管理-CA证书管理”页面导入证书,但若未实际导入受信任的根证书,则验证依然失败。
  4. OM组件限制

    • OM组件为闭源包,其内部使用的SMTP库可能存在以下限制:
      • 不完全支持现代加密套件
      • 对STARTTLS的支持存在缺陷
      • 固定期望使用特定端口或协议版本
    • 这类问题在社区中有类似反馈,例如关于邮件通知配置失败的问题(参考知识库文档《用户常见问题与解决方案FAQ》),指出“系统邮件服务配置(SMTP)可能异常或发信被阻止”。

社区经验与建议

目前知识库中虽无直接提及“QQ邮箱 + BMC SMTP失败”的案例,但有以下相关实践可供参考:

  • ejbca证书服务器搭建 文档中强调:必须确保域名解析正确,并关闭代理,否则会影响TLS连接和证书校验。虽然此场景不同,但逻辑一致——任何中间干扰都可能导致加密连接失败。
  • 另外,《用户常见问题与解决方案(FAQ)》指出,SMTP失败常见原因包括:
    • 发件人邮箱地址填写错误
    • 密码错误或授权码未启用
    • TLS配置不匹配
    • 缺少CA证书信任链

对于QQ邮箱,特别注意:必须使用“授权码”而非账户登录密码进行SMTP认证。若您输入的是QQ邮箱登录密码而非授权码,则认证必然失败。


正确测试方法建议

:white_check_mark: 推荐配置步骤:

参数 推荐值
SMTP服务器地址 smtp.qq.com
端口 465(优先推荐,固定SSL)或 587(STARTTLS)
是否启用TLS
加密类型 SSL(对应465端口)或 STARTTLS(对应587端口)
发件人用户名 yourname@qq.com
发件人密码 QQ邮箱授权码(非登录密码!)
发件人邮件地址 yourname@qq.com
是否启用匿名

:white_check_mark: 操作前准备:

  1. 登录QQ邮箱 → 设置 → 账户 → 开启“POP3/SMTP服务”并获取授权码
  2. 将QQ邮箱SMTP服务器的CA证书导出,并通过BMC的“证书管理-CA证书管理”页面导入,确保信任。
  3. 确保BMC时间准确(可通过NTP同步),避免因时间偏差导致TLS证书验证失败。

:white_check_mark: 测试建议:

  • 先尝试使用端口 465 + SSL + 授权码 的组合,因其连接更稳定。
  • 若仍失败,可临时启用抓包工具(如Wireshark)在BMC侧捕获SMTP交互过程,查看具体在哪一步断开。
  • 使用开源工具模拟相同环境测试,例如从BMC shell执行如下命令(如果支持):
    openssl s_client -connect smtp.qq.com:465 -quiet
    
    输入:
    EHLO test
    AUTH LOGIN
    <base64-encoded-username>
    <base64-encoded-auth-code>
    

结论与回答

  1. 是否有伙伴遇到同样问题?
    当前知识库中没有完全相同的案例记录,但存在关于SMTP配置失败、TLS校验问题的相关讨论,说明此类问题是已知的技术挑战之一。

  2. 测试方法是否存在错误?
    存在潜在问题:

    • 极有可能使用了QQ邮箱登录密码而非授权码
    • 可能未正确导入CA证书导致TLS验证失败;
    • 所选端口与TLS模式不匹配(如587未启用STARTTLS);
    • OM组件自身对加密协议支持有限。

建议按照上述标准流程重新配置,并重点检查授权码、CA证书导入、加密协议一致性三项关键点。若问题依旧,建议收集完整日志并提交至 discuss.openubmc.cn 社区寻求进一步技术支持。"

同样配置在V2机器上是成功的,所以操作上应该没有问题



能否抓包看一下smtp交互流程呢?

1 个赞

之前测试是在2503版本测试失败,现在在2509版本重新验证,配置DNS后能够正常测试。

不过还想请教一个问题, 我通过 tcpdump -i 网卡 -n “host BMCip” 为什么抓取不到smtp相关的交互流程呢?但是像ssh相关的是能抓到的

可以试试仅指定网卡,使用 -w 选项保存后再按照端口筛选查询smpt相关报文

1 个赞

这方面我了解不是很多,会有几个比较小白的问题
1.这里的tcpdump应该是在BMC下执行是吗?
2.在BMC下执行的话,就需要在制作hpm包之前把对应的工具给放入。目前来看telnet包也是没有tcpdump命令的

tcpdump是在BMC下执行的。

如果没有该工具,也可以在测试的接收端使用wireshark抓包。

1 个赞

感谢大佬回复,重要的还是在BMC下安装上tcpdump,或者是自建smtp服务器才方便通过wireshark抓包。