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
相关产品推荐
相关产品推荐

