温馨提示×

Debian邮件服务器怎么防垃圾

小樊
47
2026-07-07 13:05:22
栏目: 云计算

在 Debian 上搭建邮件服务器后,防垃圾邮件(Anti-Spam)是必须做的一步。下面给你一个从基础到进阶、可落地的方案,适合生产环境。


一、基础防护(必须做)

1️⃣ 使用正规邮件组件组合

推荐组合(最常用、稳定):

  • Postfix(MTA)
  • Dovecot(IMAP/POP3)
  • SpamAssassin(内容过滤)
  • ClamAV(病毒扫描,可选)
  • Postgrey(灰名单,非常有效)
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd spamassassin clamav postgrey

2️⃣ DNS 反垃圾邮件校验(非常重要)

✅ SPF(发件人策略框架)

在域名 DNS 添加:

example.com.  IN  TXT  "v=spf1 mx -all"

含义:只允许你自己的邮件服务器发信。


✅ DKIM(数字签名)

安装并配置 OpenDKIM

sudo apt install opendkim opendkim-tools

生成密钥:

opendkim-genkey -s mail -d example.com

DNS 添加:

mail._domainkey.example.com TXT "v=DKIM1; k=rsa; p=公钥内容"

Postfix 配置:

smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_recipient_access hash:/etc/postfix/recipient_access

✅ DMARC(防伪造)

DNS 添加:

_dmarc.example.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

二、Postfix 反垃圾配置(核心)

1️⃣ 拒绝明显垃圾连接

编辑 /etc/postfix/main.cf

smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname

smtpd_sender_restrictions =
    reject_unknown_sender_domain

smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_invalid_hostname,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    check_recipient_access hash:/etc/postfix/recipient_access

2️⃣ 启用灰名单(Postgrey)

效果非常明显,能挡掉 30%~50% 垃圾

sudo apt install postgrey

Postfix 加入:

smtpd_recipient_restrictions =
    check_policy_service inet:127.0.0.1:10023

三、SpamAssassin 内容过滤

1️⃣ 启用 SpamAssassin

编辑 /etc/default/spamassassin

ENABLED=1
CRON=1

启动:

sudo systemctl enable spamassassin
sudo systemctl start spamassassin

2️⃣ Postfix 调用 SpamAssassin

编辑 /etc/postfix/master.cf

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin

spamassassin unix  -       n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

3️⃣ 自动标记或拒收垃圾

SpamAssassin 默认:

  • 分数 ≥ 5:标记为 [SPAM]
  • 分数 ≥ 10:可直接拒收

四、RBL(实时黑名单,强烈推荐)

main.cf 中加入:

smtpd_recipient_restrictions =
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net

⚠️ 注意:

  • 生产环境 不要滥用 RBL
  • Spamhaus 免费,但需公网 IP

五、Fail2ban 防暴力攻击

sudo apt install fail2ban

监控 Postfix / Dovecot 登录失败:

[postfix]
enabled = true

[dovecot]
enabled = true

六、用户层防护(推荐)

  • 使用 邮件客户端规则
  • 自动学习 SpamAssassin(Bayes)
  • 定期清理 .Spam 目录

七、推荐防垃圾等级方案

等级 措施
基础 SPF + DKIM + DMARC
中级 Postfix 限制 + Postgrey
高级 SpamAssassin + RBL
企业 商业反垃圾网关(如 Proxmox Mail Gateway)

八、常见错误

❌ 没做反向解析(PTR)
❌ 开放 open relay
❌ 没限制发信频率
❌ 没监控日志 /var/log/mail.log


九、我可以继续帮你

如果你愿意,可以告诉我:

  1. 你用的是 Postfix / Exim / Sendmail
  2. 个人邮箱 还是 企业多用户
  3. 是否已经配置 SPF/DKIM

我可以直接给你一份 可复制粘贴的完整配置文件

0