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

Postfix配置咨询:为两个发件域向单个收件域设置速率延迟的解决方案

Postfix配置咨询:为两个发件域向单个收件域设置速率延迟的解决方案

嘿,我刚好碰到过类似的需求,Postfix其实提供了发件人依赖的传输映射功能来解决这个问题——核心就是给每个发件域单独分配一个专属的SMTP传输通道,这样就能分别控制每个域的发送速率了,具体操作步骤如下:

1. 配置发件人依赖的传输映射

首先我们要创建一个映射文件,让不同发件域的邮件走不同的传输通道:

  • 创建映射文件 /etc/postfix/sender_transport,内容如下:
    aaa.com     smtp-aaa:
    bbb.com     smtp-bbb:
    
  • 执行Postfix的映射编译命令生成哈希表:
    postmap /etc/postfix/sender_transport
    
  • 在main.cf中添加这个映射的配置:
    sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
    

2. 在master.cf中为每个传输通道配置独立的速率限制

接下来我们要在Postfix的服务配置文件master.cf里,为刚才定义的smtp-aaa和smtp-bbb通道分别设置专属的限制参数:
复制默认的smtp服务配置,修改名称和对应的限制项:

smtp-aaa unix  -       -       n       -       -       smtp
  -o default_destination_rate_delay=200s
  -o smtp_destination_concurrency_limit=1
  -o default_destination_recipient_limit=100
  -o default_destination_rate_limit=100/24h
smtp-bbb unix  -       -       n       -       -       smtp
  -o default_destination_rate_delay=200s
  -o smtp_destination_concurrency_limit=1
  -o default_destination_recipient_limit=100
  -o default_destination_rate_limit=100/24h

这里解释下关键参数:

  • smtp_destination_concurrency_limit=1:确保同一发件域一次只发送一封邮件,符合“一个接一个发送”的要求
  • default_destination_rate_delay=200s:控制连续发送邮件的间隔为200秒
  • default_destination_rate_limit=100/24h:限制24小时内最多发送100封邮件

3. 验证配置并重启Postfix

最后一步是检查配置是否有误,然后重启服务让配置生效:

  • 执行配置检查命令:
    postfix check
    
  • 如果没有报错,重启Postfix服务(根据你的系统选择命令):
    # 对于systemd系统
    systemctl restart postfix
    # 对于SysVinit系统
    service postfix restart
    

这样配置完成后,来自aaa.com的邮件会通过smtp-aaa通道发送,bbb.com的邮件通过smtp-bbb通道发送,两个通道的速率限制完全独立,即使发往同一个收件域,也不会互相干扰,各自的队列和限制规则都会正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:58:09