Postfix 怎么限制单个发信 IP 的发送速率以防止被限流?

Postfix 怎么限制单个发信 IP 的发送速率以防止被限流?
背景:Gmail、Outlook、Yahoo 等大型收件服务商都有严格的发信速率限制——短时间内高频连接和大量投递会被限流或临时拉黑。Postfix 默认 default_destination_concurrency_limit=20 对个人或小型服务器来说偏高,引发不必要的反垃圾策略触发。
Step 1 — 设置全局并发限制:postconf -e 'default_destination_concurrency_limit=2' 将同域并发连接数降到 2,postconf -e 'default_destination_recipient_limit=50' 限制单次连接投递人数,postconf -e 'default_destination_rate_delay=5s' 设置同域两次投递间隔至少 5 秒。
Step 2 — 针对特定域精细调控:通过 transport 表为不同收件域设置独立速率:在 /etc/postfix/transportgmail.com slow:,然后在 master.cf 添加 slow unix - - n - - smtp -o smtp_destination_rate_delay=15s,实现对 Gmail 等大型收件方的更保守投递策略。
Step 3 — 监控队列状态:mailq | grep -c "^[A-F0-9]" 实时查看活跃队列大小,qshape deferred 按域查看延迟队列分布——如果某个域的 deferred 占比异常,优先排查该域的速率先行下调。
Step 4 — 重载生效:每次修改 main.cf 后执行 postfix reload。建议在业务低峰期逐步收敛参数,避免一次性大幅收紧导致邮件积压。

📎 Postfix QSHAPE_README;RFC 5321 §4.5.4 重试间隔