在 Ubuntu 上给邮件服务器限速,通常取决于你用的是哪种邮件系统(Postfix、Exim、Sendmail 等)。最常见的是 Postfix,下面以 Postfix + 常见限速场景 为主说明,并补充其他方案。
编辑配置文件:
sudo nano /etc/postfix/main.cf
添加或修改:
# 单个客户端最大并发连接数
smtpd_client_connection_count_limit = 5
# 单个客户端连接速率(单位:连接/秒)
smtpd_client_connection_rate_limit = 10
# 单个客户端发送邮件数量(单位:封/分钟)
smtpd_client_message_rate_limit = 20
重载配置:
sudo systemctl reload postfix
✅ 适合防止单个用户或脚本疯狂发信
message_size_limit = 10485760 # 10MB
Postfix 原生不支持“每天最多发多少封”,但可以用 policyd / postfwd 实现。
sudo apt update
sudo apt install postfwd
sudo nano /etc/postfwd.cf
示例规则:
# 每个发件人每分钟最多 30 封
id=1
sender=@example.com
action=rate(sender/30/60)
# 超过限制直接拒绝
id=2
action=reject 你发信太快,请稍后再试
sudo systemctl enable postfwd
sudo systemctl start postfwd
在 main.cf 中添加:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10040
如果你是想限制邮件服务器整体出口带宽:
# 限制 eth0 出口 1Mbps
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
查看:
tc qdisc show dev eth0
删除:
sudo tc qdisc del dev eth0 root
sudo apt install fail2ban
Postfix 默认支持,无需额外配置。
| 需求 | 推荐方案 |
|---|---|
| 限制单用户发信速度 | postfwd |
| 限制并发连接 | Postfix 参数 |
| 限制每分钟发信数 | postfwd |
| 限制每天发信数 | postfwd / 日志分析 |
| 限制出口带宽 | tc |
| 防止暴力破解 | fail2ban |
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 10
smtpd_client_message_rate_limit = 30
message_size_limit = 10485760
配合 postfwd + fail2ban 是最稳妥方案。
如果你愿意,可以告诉我:
我可以给你一套可直接复制使用的完整配置。