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

Exim作为MTA对接Amazon SES时,如何配置以遵守其速率及收件人限制?

Exim作为MTA对接Amazon SES时,如何配置以遵守其速率及收件人限制?

当然可以通过Exim的配置搞定这两个需求,我来一步步给你讲清楚怎么做,解决你遇到的拆分后ID不变和速率控制的问题:

一、拆分多收件人邮件,生成独立Message-ID

你之前尝试的方法没生效,核心问题是只限制了收件人数,但没让Exim为拆分后的每封邮件生成新的Message-ID,同时也没正确触发邮件拆分逻辑。

在你的Exim配置里,找到对接Amazon SES的路由器(router)和传输器(transport),做如下修改:

1. 配置Router实现收件人拆分

ses_router:
  driver = manualroute
  domains = ! +local_domains  # 只处理外发邮件
  transport = ses_transport
  route_list = * email-smtp.us-east-1.amazonaws.com::587  # 替换成你的SES区域地址
  split_maxrcpt = 1  # 强制把多收件人邮件拆成单收件人邮件(如果要保留最多50人就改成50)
  headers_remove = Bcc  # 移除原始Bcc头,避免SES重复处理

这里的split_maxrcpt是关键——它会主动把To/CC/Bcc里的每个收件人拆成单独的邮件,而不是只限制每封邮件的收件人数。

2. 配置Transport生成独立Message-ID

ses_transport:
  driver = smtp
  hosts = email-smtp.us-east-1.amazonaws.com
  port = 587
  hosts_require_tls = yes
  hosts_require_auth = yes
  message_id = auto  # 为每封拆分后的邮件生成全新的Message-ID
  auth_username = YOUR_SES_ACCESS_KEY  # 替换成你的SES密钥
  auth_password = YOUR_SES_SECRET_KEY

加上message_id=auto后,每拆分出一封邮件,Exim都会自动生成一个唯一的Message-ID,彻底解决你遇到的“整个信封用同一个ID”的问题。

二、控制发送速率,遵守SES每秒发送上限

Exim自带速率控制功能,直接在刚才的ses_transport里加配置就行,分两种情况:

1. 如果你用的是Exim 4.94及以上版本(推荐)

直接用rate参数精准控制每秒发送量:

ses_transport:
  # 保留上面的所有配置
  rate = 14/s  # 限制每秒最多发送14封邮件,刚好匹配SES的上限

2. 旧版本Exim(4.93及以下)

用delay_after和delay组合来实现近似的速率控制:

ses_transport:
  # 保留上面的所有配置
  delay_after = 14  # 每发送14封邮件后
  delay = 1s        # 延迟1秒再继续发送

这样平均下来每秒发送量就会控制在14封左右,符合SES的要求。

验证配置

修改完配置后,重启Exim服务,然后发一封带多个收件人的测试邮件,检查Exim的日志(通常在/var/log/exim/main.log),你会看到每一个收件人都对应一封独立的邮件,且每个邮件的Message-ID都不一样,同时发送速率会被严格限制在每秒14封以内。

备注:内容来源于stack exchange,提问作者mhbeyle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:30:30