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 等),可在访问表或内容过滤规则中实现精细化策略