IBM Cloud Foundry 防火墙阻止 SMTP 连接 (nodemailer)

IBM Cloud Foundry firewall blocking SMTP connection (nodemailer)

我的项目使用 Nodemailer 从服务器发送服务邮件。代码在我的本地环境中运行良好,但是当部署到 Cloud Foundry 时,它在电子邮件发送连接上超时。

使用 SSH 进入应用程序容器,curl google.com 有效,但 curl --ssl smtp://smtp.email.uk-london-1.oci.oraclecloud.com 无效且超时。

在哪里以及如何配置此网络访问?

/sendEmail.ts

export async function sendEmail(toEmail): Promise<<SMTPTransport.SentMessageInfo> {
    const transporter = nodemailer.createTransport({
        host: ENDPOINTS.smtp.endpoint,
        port: ENDPOINTS.smtp.port,
        secure: false,
        requireTLS: true,
        auth: {
            user: ENDPOINTS.smtp.credentials.id,
            pass: ENDPOINTS.smtp.credentials.pass
        }
    });


    return 
          await transporter.sendMail({
              from: ...,
              to: toEmail,
              subject: ...
              text: ...,
              html: ...
          })
}

const ENDPOINTS = {
   smtp: {
        endpoint: 'smtp.email.uk-london-1.oci.oraclecloud.com',
        port: 25,
        from: 'accounts-noreply@example.com',
        credentials: {
            id: ...,
            pass: ...
        }
    }
}

尝试端口 587 而不是端口 25。通常,SMTP 使用端口 25 进行未加密传输,端口 587 用于 SSL/TLS-based 加密传输。经常是25端口因为经常被误操作而被封

对于我的项目,我通常连25端口都懒得用,而是直接尝试587。

无法使用端口 25 的原因是因为大多数云提供商都阻止访问它。

原因是 25 未经身份验证,经常被垃圾邮件发送者滥用。大多数电子邮件提供商维护 Email Reputation System 已知的垃圾邮件来源 IP 地址。因此,如果您是云提供商,您不会想成为每个人都列入黑名单的人。

TCP 端口 587 用于经过身份验证的 SMTP 访问,因此对于需要发送欺骗性邮件的垃圾邮件发送者来说用处不大。

如果您订阅了 higher/enterprise,大多数云提供商仍然允许您发送 25 岁以上的电子邮件。

有用的链接: