Postfix 支持三种内容检测方法,从在邮件入队列前进行轻量级逐行扫描,到在邮件入队列后进行复杂内容分析的强大工具。每种方法都适用于不同的场景。
入队列前,内置,轻量级
此方法在邮件存储到队列之前进行检查,并使用 Postfix 的内置消息头和消息正文检查功能。虽然其主要目的是阻止蠕虫或病毒引发的特定邮件洪流,但也可用于阻止病毒检测系统发送的垃圾邮件和邮件通知洪流。内置的正则表达式并非用于实现通用垃圾邮件和病毒检测。为此,您应使用下面描述的内容检查方法之一。详细信息请参阅 BUILTIN_FILTER_README 和 BACKSCATTER_README 文档。
队列后、外部、高资源消耗
此方法在邮件存储到队列后进行检测,并使用标准协议(如 SMTP 或"管道传输到命令并等待退出状态")。队列后检查允许您在接收邮件时使用任意复杂的内容过滤器,而不会导致超时,并在高峰负载下不会耗尽内存资源。此方法的详细信息在 FILTER_README 文档中。
队列前、外部、中等权重
以下两种方法在邮件存储到队列前进行检查。
- 第一种方法使用 SMTP 协议,并在 SMTPD_PROXY_README 文档中描述。此方法适用于 Postfix 2.1 及更高版本。
- 第二种方法使用 Sendmail 8 Milter 协议,并在 MILTER_README 文档中进行了描述。此方法适用于 Postfix 2.3 及更高版本。
尽管这些方法看似吸引人,但它们存在一些严重的限制,您需要注意。首先,内容检测软件必须在有限时间内完成检测;若检测耗时过长,则入站邮件投递将超时。其次,内容检测软件必须在有限内存下运行;若检测耗费过多内存,则在峰值负载下软件将崩溃。队列前检测会限制系统可处理的峰值负载,并限制可使用的内容过滤器的复杂程度。
更复杂的内容过滤软件未内置于Postfix中是有充分理由的:编写邮件传输代理(MTA)所需的技能与编写垃圾邮件或病毒过滤器不同。Postfix鼓励使用外部过滤器和标准协议,因为这使您能够根据需求选择最佳的MTA和内容检测软件。有关外部内容检测软件的信息可在Postfix官网http://www.postfix.org/及[email protected]邮件列表中查阅。