温馨提示×

centos邮件服务器如何防垃圾

小樊
40
2026-09-24 04:45:17
栏目: 云计算

在 CentOS 上搭建或运维邮件服务器时,防垃圾邮件(Anti-Spam)通常需要多层防护。下面按“从外到内、从基础到高级”的系统方式说明。


一、基础网络安全与身份可信(必须先做)

1. 使用合法公网 IP 并配置反向解析(PTR)

  • 邮件服务器 IP 必须有 PTR 记录
  • 示例:
dig -x 1.2.3.4

应返回类似:

4.3.2.1.in-addr.arpa. → mail.example.com.

2. 配置 SPF(Sender Policy Framework)

在域名 DNS 中添加:

example.com. IN TXT "v=spf1 mx a ip4:1.2.3.4 -all"

3. 配置 DKIM(DomainKeys Identified Mail)

以 Postfix + OpenDKIM 为例:

yum install opendkim

生成密钥:

opendkim-genkey -d example.com -s mail

配置 /etc/opendkim.conf 并启动:

systemctl enable opendkim
systemctl start opendkim

DNS 添加:

mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=xxx"

4. 配置 DMARC

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

✅ SPF + DKIM + DMARC 是防伪造邮件的核心


二、Postfix 层基础防护(强烈推荐)

1. 限制非法连接

编辑 /etc/postfix/main.cf:

smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions =
    reject_invalid_hostname,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    reject_unauth_destination,
    reject_rbl_client zen.spamhaus.org,
    permit_mynetworks,
    permit_sasl_authenticated,
    reject

2. 启用 RBL(实时黑名单)

常用 RBL:

  • zen.spamhaus.org
  • bl.spamcop.net
  • b.barracudacentral.org

三、使用 SpamAssassin 做内容级过滤(核心)

1. 安装

yum install spamassassin

2. 启动服务

systemctl enable spamassassin
systemctl start spamassassin

3. Postfix 调用 SpamAssassin

在 /etc/postfix/master.cf:

smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin
spamassassin unix - n n - - pipe
  user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

4. 标记或拦截垃圾邮件

在 ~/.procmailrc 或 maildrop 中:

:0:
* ^X-Spam-Flag: YES
/dev/null

或移动到 Junk:

* ^X-Spam-Level: \*\*\*\*
Junk/

四、灰名单(Greylisting,有效但略影响体验)

yum install postgrey

配置:

postgrey --inet=127.0.0.1:10023

Postfix 中:

smtpd_recipient_restrictions =
    check_policy_service inet:127.0.0.1:10023

✅ 可拦截大量僵尸网络群发邮件


五、用户与认证安全

1. 强制 SMTP 认证

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes

2. 限制爆破

yum install fail2ban

监控 /var/log/maillog:

[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/maillog
maxretry = 5

六、日常维护建议

  • 定期更新规则:
sa-update
  • 监控日志:
tail -f /var/log/maillog
  • 不开放 open relay
  • 限制单 IP 发信频率(Postfix anvil)

七、推荐组合(实战)

✅ 生产环境推荐:

Postfix
+ OpenDKIM
+ SpamAssassin
+ Postgrey
+ Fail2ban
+ RBL

如果你愿意,我可以:

  • 按你使用的 邮件系统(Postfix / Sendmail / Exchange) 给配置
  • 或给你一份 可直接用的 CentOS 防垃圾邮件配置文件模板

你现在是 新搭建还是已运行被垃圾邮件困扰?

0 踩