我运行一个小型邮件服务器,具有所有常用function:发送本地邮件,接收本地文件夹的邮件,根据别名redirect邮件和邮件列表。
redirect转到其他域(包括Google)的地址,因此所有发送到其中一个redirect地址的垃圾邮件都会损害我的服务器与Google的声誉,甚至导致我的本地生成邮件受到速率限制。
我可以想象,减less这个问题的一个办法就是永远不要存储被redirect的邮件。 这样,如果Google拒绝某些邮件为垃圾邮件,我也是如此。而不是我的服务器重新发送邮件,原来的服务器,作为一个垃圾邮件发送服务器,希望不会再尝试。
所以问题是:我可以在ACL的某处告诉exim
谢谢!
这不是一个答案,而是解释你所要做的事情的复杂性。
你必须始终记住,一封电子邮件可以寄给多个收件人。 你说“如果是货运代理,我不想排队”。 那么,当一个代理商和一个本地邮箱时,你会做什么? 在数据阶段你只知道消息的内容(标题和正文),在这一点上,你已经接受了收件人(一个转发者和一个本地)。
由于SMTP协议不允许应用每个收件人首选项,因此执行所需的操作要复杂得多。 Exim中有一项新function叫做PRDR(按收件人传递响应)。 这是几年前的协议草案,是对SMTP协议的扩展。 几乎没有其他邮件服务器支持Exim以外的其他邮件服务器。 它需要一个邮件服务器连接到您的Exim邮件服务器,并说:“我看到你允许PRDR,所以我要去请求它,并允许你拒绝每个用户的电子邮件,而不是全部或没有。
它要求你configuration一个PRDR ACL来检查特定的事情(垃圾邮件分数,收件人将特定发件人标记为垃圾邮件等)。 对于每个收件人,在收到邮件后 (这在常规SMTP中不允许),ACL将被调用一次,并且在该PRDR ACL中,您可以拒绝或接受每个收件人。 由于发送邮件服务器请求PRDR模式,所以它会理解它。
否则,你要么接受所有(并与谷歌冒着负面声誉),要么拒绝所有(并冒着拒绝所需的电子邮件)。
您还可以为每个入站邮件指定最多1个收件人。 如果以这种方式进行限制,则可以在数据阶段指定转发器/非转发器,并根据垃圾邮件分数确定要执行的操作。 但是,对于有10个收件人的电子邮件,您将收到1封电子邮件给第一封电子邮件,暂时保留其余9封邮件,发送邮件服务器将对其进行排队并稍后重试。 经过一段时间后(取决于发送邮件服务器队列的重试时间),您将再次收到第二个收件人的电子邮件,临时发送剩余的邮件。8.重复1,7次。 重复1次,剩下6次。 请记住,在每个传递之间将是一个暂停,您无法控制,因为它取决于发件人将重试排队的邮件多长时间。
这个选项不是很好: – /
**具有讽刺意味的是,LMTP是SMTP协议的一个子集,用于从入站SMTP服务器传输到后端邮箱服务器(即不通过互联网,仅在内部)。 LMTP允许每个收件人拒绝。 所以如果你想这样考虑的话,可以把PRDR当作一个LMTP的特定function应用于SMTP协议。
发件人validation会在外部MTA上创build额外的负载,因此不推荐使用。 但是你可以设置一个通用的防垃圾邮件的MTA。
我的经验表明,两个简单的条件有助于检测大约90%的垃圾邮件:
static-dynamic-123-456.789-client.fiber.peer.tld 都是垃圾邮件发送者,应该通过简单的正则表来过滤出来。 每个来自上述主机的消息,都应该向bayes传递。 我的select是spamassassin的。 所有其他的消息应该由bayestesting。
这种方法可以过滤掉大约99.9%的垃圾邮件,并具有很大的优势 – bayes会自动更新。 所有你必须做的 – 定期添加一些非常活跃的垃圾邮件发送者主机到规则#2的正则表。
检测到垃圾邮件后,您可以轻松阻止其转发到gmail或其他地方。