温馨提示×

Debian Postman如何设置邮件过滤

小樊
40
2025-12-08 19:49:58
栏目: 智能运维

Debian Postfix 邮件过滤设置指南

术语澄清与总体思路

  • 常见误写是把Postfix写成“Postman”。本文面向使用Postfix作为MTA的Debian服务器,介绍如何按“连接阶段—发件人—收件人—内容”分层设置过滤,并集成Postgrey(灰名单)与SpamAssassin(反垃圾评分)。
  • 过滤分层概览:
    • 连接阶段:客户端IP、HELO主机名校验
    • 发件人阶段:MAIL FROM 地址合法性
    • 收件人阶段:RCPT TO 与访问控制
    • 内容阶段:SpamAssassin评分、ClamAV防病毒、附件类型限制

基础策略与连接阶段过滤

  • 启用HELO阶段检查与延迟拒绝(便于记录完整信息后再拒绝):
    • 编辑**/etc/postfix/main.cf**:
      • smtpd_delay_reject = yes
      • smtpd_helo_required = yes
      • smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, permit
  • 发件人阶段限制(拒绝格式错误或不存在域):
    • smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, permit
  • 收件人阶段限制(默认策略与访问控制):
    • 保持默认:smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
    • 按需追加:check_recipient_access(按收件人放行/拒收)、reject_unknown_recipient_domain 等
  • 说明:
    • reject_unknown_helo_hostname 可进一步拒绝无A/MX记录的HELO主机名,但在DNS不稳定时可能产生误判,建议谨慎使用或配合灰度策略

灰名单 Postgrey

  • 安装与配置:
    • sudo apt-get update && sudo apt-get install postgrey
    • 编辑**/etc/default/postgrey**:POSTGREY_OPTS=“-inet=127.0.0.1:10023 -delay=60”(灰名单延迟60秒
    • 启动服务:sudo systemctl start postgrey(或 service postgrey start)
  • 集成到Postfix:
    • 在**/etc/postfix/main.cf**的 smtpd_recipient_restrictions 中追加:check_policy_service inet:127.0.0.1:10023
    • 使配置生效:sudo postfix reload
  • 作用:对首次发信的客户端临时延迟接收,配合重试机制显著降低垃圾邮件命中率

反垃圾评分 SpamAssassin

  • 安装与启用:
    • sudo apt-get install spamassassin
    • 按需编辑**/etc/spamassassin/local.cf**(如启用HTML校验、调整阈值等)
  • 集成到Postfix(内容过滤):
    • 在**/etc/postfix/main.cf**添加:content_filter = spamassassin
    • 使配置生效:sudo postfix reload
  • 说明:SpamAssassin对邮件内容与头信息进行评分,配合客户端或服务器端规则实现自动标记/拒收

进阶 反病毒与附件类型限制

  • 反病毒与一体化过滤(Amavisd-new + ClamAV + SpamAssassin):
    • 安装:sudo apt-get install amavisd-new spamassassin clamav clamav-daemon clamav-freshclam
    • 在**/etc/postfix/main.cf**设置:content_filter = smtp-amavis:[127.0.0.1]:10024
    • 在**/etc/postfix/master.cf**追加(示例):
      • smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yes
      • 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o mynetworks=127.0.0.0/8 …
    • 在**/etc/amavis/amavisd.conf**设置处置策略(示例):
      • $final_virus_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_spam_destiny = D_REJECT;
  • 附件类型限制(示例思路):
    • 通过Postfix的 header/body 检查或内容过滤,限制或隔离特定扩展名(如 .exe、.bat、.js 等),可在访问表或内容过滤规则中实现精细化策略

0