如何使用 Postfix 处理外发垃圾邮件

如何使用 Postfix 处理外发垃圾邮件

我有一个拥有数百名用户的 Postfix SMTP 服务器,他们以经过身份验证的用户身份使用它发送电子邮件。

有时一个帐户遭到黑客攻击,数千封电子邮件就会从 SMTP 服务器发出,从而引发垃圾邮件泛滥到数百个电子邮件地址。

这显然会使我的服务器被插入许多黑名单,当我意识到我需要时:

  • 修复被黑的账户(并教育用户使用好的密码并经常更改密码)
  • 停止泛滥,从传出队列中删除垃圾邮件
  • 将 IP 地址列入黑名单,并在必要时将其删除
  • 监控发出的电子邮件,检查它们是否被标记为垃圾邮件

现在我想了解如何在洪水发生之前有效地防止洪水,因为我们不能冒险被列入任何黑名单。我认为这可以通过以下方式实现:

  • 强制用户使用好的密码:如果您使用像 Active Directory 这样的身份验证后端,这可以轻松实现,但是保存到数据库中的 Postfix 用户和虚拟域怎么办?
  • 在 SMTP 服务上激活 fail2ban(但如果黑客已经知道密码并在第一次尝试时使用它们,则此方法无效)
  • 针对同一用户实施一些洪水检测,例如传出速率检测,如果是垃圾邮件,则可以停止针对特定用户的中继:可以在 Postfix 上使用什么技术来实现这一点?
  • 监控:一些 Nagios/Icinga 检查 Postfix 传出队列中的元素(但可能为时已晚)
  • 监控:很多服务可以检查 IP 地址是否在黑名单中(但为时已晚)

还有其他想法吗?

答案1

使用您的邮件服务器发送垃圾邮件或恶意软件的 SASL 身份验证客户端通常是僵尸网络的结果。您可以使用 postfwd 规则和Postfwd Anti Geoip 垃圾邮件插件它将检查高发送率以及来自多个国家或 IP 地址的登录。

安装完成后后发和插件,您可以配置规则,一旦发件人超过一定限制,就会阻止发件人。

典型的速率限制规则集可能看起来像这样(反僵尸网络规则在上面的 Anti Geoip Spam 插件链接的说明中给出):

id=R005; action=dunno ; client_name=friendly\.mailserver\.org\.uk$
id=R010; sender=~/.+/; action=rate(sender/100/86400/REJECT only 100 messages per day for sender [$$sender])
id=R020; sender=~/.+/; action=rate(sender/25/3600/REJECT only 25 messages per hour for sender [$$sender])
id=R030; sasl_username=~/.+/; action=rate(sasl_username/100/86400/REJECT only 100 messages per day for auth user [$$sasl_username])
id=R040; sasl_username=~/.+/; action=rate(sasl_username/25/3600/REJECT only 25 messages per hour for auth user [$$sasl_username])
id=R050; user=~/.+/; action=rate(user/100/86400/REJECT only 100 messages per day for user [$$user])
id=R060; user=~/.+/; action=rate(user/25/3600/REJECT only 25 messages per hour for user [$$user])

答案2

搜索“postfix anvil”。它为出站提供速率限制功能。当帐户受到损害时,它可以有效缓解声誉问题。

相关内容