IBM Cloud Foundry下Nodemailer的SMTP连接被阻断如何配置网络
问题根因
绝大多数Cloud Foundry(CF)平台默认会封禁出站25端口的TCP流量,用于防范垃圾邮件滥用,你当前配置的SMTP端口刚好是25,这是超时的核心原因。你本地环境没有端口限制所以运行正常,部署到CF后流量被平台网络规则拦截。
解决步骤
1. 优先更换SMTP端口
OCI 伦敦区的邮件发送服务默认支持两个替代端口:
- 587端口:使用STARTTLS加密,适配你当前的
secure: false+requireTLS: true配置 - 465端口:使用隐式SSL加密,需要将配置中的
secure参数改为true
修改后的配置示例:
const ENDPOINTS = { smtp: { endpoint: 'smtp.email.uk-london-1.oci.oraclecloud.com', port: 587, // 替换原来的25端口 from: 'accounts-noreply@example.com', credentials: { id: ..., pass: ... } } }
改完后可以再进容器用curl --ssl smtp://smtp.email.uk-london-1.oci.oraclecloud.com:587测试连通性。
2. 配置CF平台出站规则
如果更换端口后还是超时,需要在CF平台侧放开对应目标地址、端口的出站权限:
- 如果你使用的是企业自建CF平台:联系平台管理员将OCI SMTP服务的IP段、对应端口(587/465)添加到应用所属空间的**应用安全组(ASG)**规则中,允许出站TCP访问。
- 如果你使用的是公有云商用CF服务:进入服务控制台的安全组/出站规则配置页,手动添加规则:允许你的应用出站到
smtp.email.uk-london-1.oci.oraclecloud.com的587/465端口。 - 如果平台支持容器级网络策略,也可以通过CF CLI执行命令配置:
# 允许你的应用出站到OCI SMTP服务的587端口 cf add-network-policy <你的应用名称> --destination-ip <OCI SMTP对应的IP段> --port 587 --protocol tcp
内容的提问来源于stack exchange,提问作者David Min
相关产品推荐
相关产品推荐

