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

Node.js使用Nodemailer多邮箱发信报421并发连接超限如何解决

问题场景

持有多个同域名邮箱账号,包括welcome@jhonexample.com、reminder@jhonexample.com、invoice@jhonexample.com等,需要通过不同邮箱向用户发送邮件。发信时间不固定,存在两个及以上不同邮箱同时向大量用户批量发信的情况。
发信触发分为两类:

  • 定时任务触发:通过cron-job每日固定时间自动发送,无人工干预
  • 接口触发:前端调用业务接口时实时触发邮件发送

当前为每个邮箱单独创建了独立的Nodemailer transporter实例,配置示例如下:

let welcometransporter = nodemailer.createTransport({
  host: "mail.jhonexample.com",
  port: 587,
  secure: false, // true对应465端口,其余端口设为false
  auth: {
    user: "welcome@jhonexample.com",
    pass: "********",
  },
  logger: true,
  tls: {
    rejectUnauthorized: false,
  },
  pool: true,
  maxConnections: 2,
  maxMessages: 8,
});
let remindertransporter = nodemailer.createTransport({
  host: "mail.jhonexample.com",
  port: 587,
  secure: false, // true对应465端口,其余端口设为false
  auth: {
    user: "reminder@jhonexample.com",
    pass: "********",
  },
  logger: true,
  tls: {
    rejectUnauthorized: false,
  },
  pool: true,
  maxConnections: 2,
  maxMessages: 8,
});

运行过程中出现如下报错:

Error: Invalid greeting. response=421 Too many concurrent SMTP connections from this IP address; please try again later.:
报错原因

该报错由SMTP服务端的IP维度并发连接限制触发:当前每个邮箱对应独立的连接池,单实例maxConnections设为2,当多个transporter同时发信时,所有实例建立的SMTP连接数累加后超过了邮件服务器允许的单IP最大并发连接阈值,服务端直接返回421拒绝连接。

调整方案
  • 全局管控总并发连接数
    首先确认所用邮件服务商的单IP最大并发SMTP连接限制,所有transporter的maxConnections数值加总后,不能超过该限制值的80%,预留20%的缓冲空间应对突发发信请求。如果邮箱数量多,优先降低单实例的maxConnections值,比如单实例设为1,避免总连接数超限。
  • 批量任务错峰限流
    针对cron触发的批量发信任务,增加发送队列限流逻辑,控制每秒推入发送队列的邮件数量,不要瞬间提交全量待发邮件;不同邮箱的批量发信任务设置错峰时间,避免多个批量任务同时运行占满所有连接。
  • 按邮件优先级分配连接配额
    把接口实时触发的邮件(如注册验证、操作通知类)和批量发送的邮件(如欢迎信、提醒、账单类)做资源隔离:给实时邮件预留固定的连接配额,保证高优先级邮件不会被批量发信任务阻塞;批量发信任务使用剩余的连接配额,遇到连接资源不足时自动排队等待。
  • 优化连接池参数
    适当调低maxMessages参数,让单连接发送少量邮件后主动释放,避免长连接长期占用连接资源;配置连接空闲超时时间,空闲时间超过阈值的连接自动关闭,减少无效连接占用。
  • 增加临时错误重试逻辑
    针对421这类服务端临时拒绝的错误,配置指数退避重试机制:第一次报错等待1秒后重试,第二次等待2秒,第三次等待4秒,最多重试3次,不要收到报错后立刻高频重试,避免触发服务端更长时间的拦截。
  • 可选优化
    如果日常发信量较大,现有单IP并发配额无法满足需求,可以联系邮件服务商提升单IP的并发连接上限,或者配置多出口IP轮询发信,分散单IP的连接压力。

内容的提问来源于stack exchange,提问作者Ritik Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:24:31