3.4. 用户设置和数据

在其他情况下,您可能希望为站点的每个用户支持设置和数据。例如,如果您使用 SpamAssassin 扫描传入邮件(参见 垃圾邮件扫描器),您可能希望允许针对个人的垃圾邮件阈值、可接受的语言和字符集以及贝叶斯训练/数据。

一个难点在于,传入邮件的 SMTP 时间过滤是在系统级别完成的,在邮件被传递给特定用户之前,因此不太适合个人偏好。单个消息可能具有多个收件人;并且与 转发邮件 的情况不同,使用每个收件人偏好的聚合不是一个好的选择。考虑一个场景,其中您的用户来自不同的语言背景。

然而,事实证明,这种说法可以进行修改。诀窍是将传入消息中的收件人数量限制为一个,以便可以根据属于相应用户的设置和数据来分析消息。

要做到这一点,您将接受第一个 RCPT TO:,然后对后续命令发出 SMTP 451(延迟)响应。如果调用者是一个行为良好的 MTA,它将知道如何解释此响应,并稍后重试。(如果它感到困惑,那么,好吧,它可能是一个您一开始就不想接收邮件的发送者)。

显然,这是一个权宜之计。发送到您站点多个用户的每封邮件将被每个收件人延迟 30 分钟或更长时间。尤其是在企业环境中,常见的是看到涉及内部多人和外部多人的电子邮件讨论,并且邮件传递的时间线至关重要,这可能根本不是一个好的解决方案。

主要与企业和其它大型站点相关的另一个问题是,传入邮件通常被转发到内部机器进行传递,并且收件人通常在邮件交换器上没有帐户。在这些情况下,仍然有可能支持用户特定的设置和数据(例如,通过数据库查找或 LDAP 查询),但您可能还需要考虑这是否值得付出努力。

话虽如此,如果您在一个小型站点上,并且不担心延迟交付,这可能是一种允许每个用户微调其过滤标准的可以接受的方式。