温馨提示×

Debian Postman如何设置邮件接收限制

小樊
38
2025-12-20 16:57:27
栏目: 智能运维

Debian 上 Postfix 邮件接收限制实用配置

说明与总体思路

  • 在 Debian 邮件服务器场景中,通常所说的“Postman”多为笔误,实际指 Postfix。接收侧限制一般从三方面入手:
    1. 基于客户端来源的限制(连接频率、收件人速率等);
    2. 基于策略/灰名单/黑白名单的准入控制;
    3. 系统层面的防火墙与暴力破解防护。
  • 下文给出可直接落地的 Postfix 参数与配套方案,并配套防火墙与 Fail2Ban 建议,便于组合使用。

Postfix 内置接收限制参数

  • 建议将以下参数加入 /etc/postfix/main.cfsmtpd_recipient_restrictions(或按你的版本放入合适的限制链),并 postfix reload 生效。示例为常用安全阈值,可按业务酌情放宽或收紧:
# 示例:在现有规则末尾追加下列限制
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_policy_service inet:127.0.0.1:10023,   # Postgrey 灰名单
    check_client_access hash:/etc/postfix/access,  # 客户端黑白名单
    check_sender_access hash:/etc/postfix/sender,  # 发件人黑白名单
    check_recipient_access hash:/etc/postfix/recipient,  # 收件人黑白名单
    reject_rbl_client zen.spamhaus.org,            # 可选:RBL 反垃圾
    reject_rhsbl_sender dbl.spamhaus.org          # 可选:发件人域名黑名单
  • 频率与连接限制(建议值可按需调整):
smtpd_client_connection_rate_limit = 5     # 每客户端每秒新连接数
smtpd_client_message_rate_limit   = 5     # 每客户端每秒邮件数
smtpd_client_recipient_rate_limit = 10    # 每客户端每秒 RCPT TO 数
smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}
  • 说明与要点:
    • 上述速率限制作用于“接收阶段”,可有效抑制邮件风暴与字典爆破。
    • 灰名单使用 Postgrey,通过策略端口 10023 接入 Postfix,能显著降低垃圾邮件命中率。
    • 黑白名单文件需使用 postmap 生成数据库后生效(见下一节)。

黑白名单与访问控制文件

  • 客户端 IP 黑白名单(/etc/postfix/access):
# 允许
203.0.113.10    OK
# 拒绝
198.51.100.66   REJECT
# 仅允许本机回环
127.0.0.1       OK
  • 发件人黑白名单(/etc/postfix/sender):
baduser@example.com   REJECT
trusted@partner.com  OK
  • 收件人黑白名单(/etc/postfix/recipient):
admin@mydomain.com   REJECT
postmaster@mydomain.com  OK
  • 生成数据库并应用:
sudo postmap /etc/postfix/access
sudo postmap /etc/postfix/sender
sudo postmap /etc/postfix/recipient
sudo systemctl reload postfix
  • 提示:对业务伙伴或内部网段,优先使用 permit_mynetworks 与精确网段放行,减少误伤。

系统层面防护与进阶

  • 防火墙限制来源与端口(UFW 示例,仅开放必要来源与端口):
sudo apt update && sudo apt install ufw
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw enable
# 按需仅允许可信网段
sudo ufw allow from 203.0.113.0/24 to any port 25,587 proto tcp
  • Fail2Ban 防暴力(/etc/fail2ban/jail.local 片段):
[DEFAULT]
bantime = 600
maxretry = 3

[postfix]
enabled  = true
port     = smtp,submission
filter   = postfix
logpath  = /var/log/mail.log
banaction = iptables-multiport
  • 进阶可选:部署 milter-limit 对 Milter 层进行速率/数量限制,缓解资源滥用(需额外安装与端口规划)。

验证与运维建议

  • 配置生效后,使用 swaks 或 telnet 进行连接与收件人速率测试,观察日志 /var/log/mail.log 是否出现 4xx/5xx 拒收与速率限制提示;按需微调阈值。
  • 建议将 Postfix 关键参数与黑白名单变更纳入版本控制,变更前备份 main.cf 与映射文件,变更后执行 postfix check && postfix reload
  • 若与第三方过滤(如 SpamAssassin、商业网关)联动,注意限制顺序与策略服务端口占用,避免重复检查或放行冲突。

0