首先,对不起我的英语。
permit_mynetworks
我认为在列表的第一个位置设置和permit_sasl_authenticated
限制是很常见的smtpd_recipient_restriction
,但是,如果一个帐户被盗用(病毒使用被盗的凭据 - 例如来自 Outlook 配置文件 - 发送垃圾邮件),并且经过身份验证的客户端可以发送电子邮件在没有进一步限制的情况下,您的最后机会是您的 milters 正确拒绝来自受感染帐户的垃圾邮件;但是,效率不是更低吗?
我认为 postfix 更有效地拒绝垃圾邮件,因为它使用来自 SMTP 协议等的信息,但 milters 必须扫描邮件的内容以检测邮件是否为垃圾邮件。
但是,我的所有客户端都使用 TLS 连接到我的服务器。病毒/垃圾邮件发送者能否使用加密连接发送电子邮件(如果他们窃取了密码)?我不这么认为,因为垃圾邮件发送者试图尽可能快地传递消息,而加密连接对于这些目的来说太慢了。
如果是这种情况,我允许经过身份验证的客户端发送邮件没有问题,但我想确定一下。
根据我们在评论中的讨论,我可以想到另一种解决问题的方法。这在托管业务中一直发生在我身上——你必须让任何拥有基本上任何客户端的人都连接到你的 smtp 服务器,如果他们的工作站受到攻击,他们可以做他们想做的事。
同样,我的方法是纵深防御,在客户服务方面稍有冒犯(即,如果您再次给我们造成垃圾邮件问题,请告诉他们,我们将丢弃您)。
1) 使用 Postfix 的速率控制(您可以通过谷歌搜索更多信息 - 非常广泛) 这对于在用户开始发送垃圾邮件时节省服务器上的 CPU 周期和内存很有用。如果您遇到问题,这将减缓损坏并且不会淹没目标主机 - 因此它可以帮助您成为有礼貌的公民并保护自己和其他用户。
2)基于 SMTP 用户的速率限制
Postfix 能够使用策略插件,例如这个旨在完全按照您的意愿行事的插件
http://wiki.policyd.org/
http://www.simonecaruso.com/limit-sender-rate-in-postfix/
您可以根据自己的意愿积极地使用这些策略 - 包括完全禁用用户的帐户,以便他们在打电话给您之前无法登录。
3)不要忘记病毒
配置 postfix 以使用http://amavis.sourceforge.net/扫描出站邮件
我希望这是一个可以接受的答案。如果您还有其他问题,请告诉我。
干杯!
正如@Binary在他的帖子中所说,这都是关于多层防御的。在第一行,postfix 有轻量级的检查,例如postscreen和stmpd_*_restriction(包括
permit_mynetworks
andpermit_sasl_authenticated
)。这种防御将是有效的并节省许多资源。经过轻量级检查后,postfix 会将垃圾邮件检查传递给外部 content_filter(队列之前或之后)。当然,它会消耗更多资源,但此检查仅调用通过第一道防线的(很少百分比的)电子邮件。防御层的深度将取决于您的资源。
当然,TLS/加密连接比未加密连接慢。但是像TLS 缓存这样的技术长期提高了 SSL 握手的性能。当然,垃圾邮件发送者/受感染的客户对此并不关心。他们只需要一个攻击媒介即可通过您的服务器启动垃圾邮件/病毒电子邮件。
我同意使用出站垃圾邮件过滤作为防止发送垃圾邮件的前线防御是低效的,但它仍然很重要。另一种方法是垃圾邮件通过并将您列入黑名单,然后您的整个域都陷入困境。所以,我认为深度防御方法确实是这里唯一的方法,包括频繁的密码轮换、2FA 等。出站垃圾邮件过滤器只是洋葱的一层——而且它很重要。将其视为最后一道防线,而不是第一道防线。此外,您应该在与邮件集群不同的硬件上运行它。
特定的实现(milters,与其他所有东西相比)不如系统的整体效率重要。在分层方法中,您可以通过测量通过的垃圾邮件相对于总电子邮件来确定每个步骤的有效性,从而建立一种量化的方法来衡量效率或有效性。希望当出站垃圾邮件被过滤掉时,垃圾邮件将非常少,不会影响性能。
回答你的最后一个问题:我认为 2014 年没有任何客户端不应该使用 TLS 的理由。它是可靠安全过程中的另一层。新的垃圾邮件技术每天都在发生,使用 TLS 只会比不使用 TLS/其他加密更好地保护您。