如何检测和防止postfix从泄露的邮件帐户泄露垃圾邮件

我们在运行CentOS的专用服务器上为众多客户托pipe电子邮件和网站,并通过Virtualmin进行configuration。

电子邮件是通过Postfix处理的。

在周末我们注意到客户的电子邮件账户已经被盗用,服务器已经被用来基本上抽出垃圾邮件。 因此,我们的服务器被列入黑名单,影响服务器上的其他帐户。 我们认为,台式机感染了恶意软件,使得垃圾邮件发送者能够访问相关帐户的SMTPlogin凭据。 从那时起,这是开放的季节。

我的问题是:是否有任何到位的自动检测垃圾邮件就像这种性质的活动?

谢谢

如果您使用SASL / TLS对用户进行身份validation,则可以通过服务器设置不同的“path”。 一条path可能是传统的端口25的传入邮件,它将通过amavisd-new进行扫描,以便扫描垃圾邮件和病毒,并且可以设置另一个具有更多宽容模式的path,可能具有更高的垃圾邮件阈值。 您也可以允许或禁止不同types的电子邮件附件。

您甚至可以限制电子邮件types,或者更具体地说,限制您的用户可以发送的地址。

你怎么去取决于你现在有什么样的软件。

正如我在上面发表的评论,我也有同样的问题。 在做了一些研究之后,我想出了这个快速解决scheme(仍在testing中 – 使用它自己承担风险):

在你的postfix main.cf文件中:

smtpd_relay_restrictions = ... permit_mynetworks, reject_unknown_reverse_client_hostname, permit_sasl_authenticated, ... 

请注意,“postfix 2.10”中提供了“smtpd_relay_restrictions”,但在2.10之前也可以使用它们,请查看文档 。

就我而言,我需要执行2个更改:

  1. 在我的规则中移动“permit_sasl_authenticated”。 之前,我对我的authentication用户非常信任。
  2. 添加规则:“reject_unknown_reverse_client_hostname”,因为大部分“授权垃圾邮件发送者”报告“未知”的主机(不幸的是,其中一些包含主机名信息)。 我还从我的一些客户的服务器中添加了一个白名单(使用:check_client_access规则),这些服务器已知不会parsing他们的IP – >主机名。

到现在为止还挺好。 更好的是,因为它在邮件日志中显示为“被拒绝”,现在我可以使用我当前的fail2banconfiguration来禁止这些客户端。

注意,你可以执行一个广泛的检查(比如可能rbl检查,在允许你的auth用户发送邮件之前)。 我还没有尝试,但。

将spamassassin添加到游戏中并且能够在交付之前标记并阻止这些垃圾邮件是很好的。 然而,由于spamassassin不是日本的消息(我所有的客户都是日本人)真的很好,我不想现在给它太多的权力。

我希望它可以帮助你。

有一段时间,我发表了我以前的答案,我带着这个小窍门,我认为是更有效地处理被盗的凭据(可能不适用于所有人):

1)安装fail2ban(如果您还没有)阻止来自特定IP地址的失败login尝试。

2)跟踪(通过脚本)连接到服务器的地理位置IP。 如果您在1分钟内检测到2个不同的国家,请locking帐户并通知用户。

locking帐户将自动阻止任何试图使用该帐户的客户端。

在我的情况下,这种情况已经被certificate是有效的,因为我不希望我的客户在不到1分钟的时间内在2个不同的国家(我的服务器在日本)。

但是,如果你的邮件客户遍布世界各地,我会build议增加国家的数量,因为如果有人在两个国家的边界​​,移动设备可能会显示这样的模式。

此外,这种技术意味着你有一种方式直接联系你的客户(通过电话或其他方式,除了他们的妥协帐户)。

这对窃取凭证的恶意软件特别有用,正如我曾经经历过的,在这种情况下,这种恶意软件似乎在几个受感染的客户端(位于全球各地)之间共享这些凭据。 但是,如果垃圾邮件来自位于与原始帐户所有者所在国家/地区相同的国家/地区内的单个客户端,则无效。

跟踪脚本可以很容易地编码: tail -n0 -F mail.log并将每行传递给parsing器脚本,parsing器脚本将使用geoiplookup提取IP地址并获取其位置。 保存在一个数据库(或文件)与该帐户和最后一个国家/国家检测到。 如果您使用的是UNIX帐户,则更简单的locking方法是使用: passwd ACCOUNT -l 。 不要忘了给你发一封电子邮件,以便你了解这个问题。

如果您没有脚本技能,或者您不想从零开始,请告诉我,我将分享我的脚本。