如何配置仅针对特定发件人/服务器进行扫描的amavisd-new?


10

我想知道如何将amavisd-new配置为仅扫描特定客户端(IP,CIDR或主机名)或发件人的电子邮件域上的垃圾邮件。

我知道可以在收件人的邮件地址上执行此操作,但不能在发送方的邮件地址上执行此操作。甚至可以通过策略银行在收件人的IP地址上执行此操作。但是我的方法应该是独立于接收者,并且仅在发送者上中继。

我要做的是仅扫描来自Yahoo,Google,Hotmail和其他大型发件人的邮件。因此,配置应观察哪些发件人比不应该观察的发件人容易。

我知道在MTA方面更容易实现,但这不是问题的一部分,因为我已经在MTA方面找到了解决方案。我想以全新的方式来做。而且,不知道如何将发件人列入白名单也无济于事,因为这仍然意味着邮件经过了所有扫描,但是却获得很高的负面评分。除非由大型公司发送,否则根本不应该扫描邮件。

那么,amavisd-new中的哪些参数才是启用扫描特定发件人且仅针对这些发件人的正确选择?


您看过这些例子吗?如果是这样,他们怎么了?
the-wabbit 2012年

@ syneticon-dj我认识他们。这是我已经拥有的解决方案(上面的第四段)。但是它们在队列过滤器之后,因此我需要amavis作为队列之前过滤器运行,然后这不起作用。这是为了绕过特定的发送者;我只想扫描特定的发件人并绕过其余发送者。
mailq 2012年

我不明白为什么它在排队前不起作用。反转仅扫描特定发件人而不扫描其他内容的逻辑只是反转了策略库的配置设置-将旁路_ * _ checks_maps变量设置为默认配置,并确保yahoo.com策略库的映射为空。
the-wabbit 2012年

为什么不给SpamAssassin打电话将白名单工作呢?来自amavisd.conf-sample:“如果邮件的所有收件人将发件人列入黑名单或黑名单,则将绕过垃圾邮件扫描(称为SpamAssassin),从而节省了时间。” 使用@whitelist_sender_maps时,“所有”收件人应该受到影响,不是吗?
sebokopter 2012年

Answers:


1

Amavisd将所有列入白名单的白名单

您需要的是whitelist_sender_map(在此)和正则表达式环顾(在此

将除Domain.X之外的所有白名单列入白名单

@whitelist_sender_maps =(new_RE(
    qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i
));

将除X的域和子域之外的所有白名单都列入白名单

@whitelist_sender_maps =(new_RE(
    qr'[@。](?!(gmail \ .com $ | hotmail \ .com $ | aol \ .com $))'i
));

修改中

例如,将msn.com添加到白名单例外

@whitelist_sender_maps =(new_RE(
    qr'[@。](?!(gmail \ .com $ | hotmail \ .com $ | aol \ .com $ | msn \ .com $))'i
));

不要将规则分解成多个规则,这不是您想要的

在两行或更多行中违反规则将对所有内容进行白名单!!

(如果可能,我将本节用红色标出)

简单来说,白名单是一种顺序检查,一次只允许一行或多条规则。

让我们看下面的错误示例

#不要复制这个
@whitelist_sender_maps =(new_RE(
    qr'@(?!(gmail\.com$|hotmail\.com$))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
#不要复制这个
  1. msn.com上的所有内容都会通过,因为第一行返回TRUE,并且检查停止。
  2. gamil.com上的所有内容都会通过,因为在第一行失败后,会自动转到第二行,这将返回TRUE
  3. 不在列表中的域名呢?他们会通过。这是规则的意图!

您最终将所有发件人列入白名单!!

Perl测试程序

#!/ usr / bin / perl

使用严格

#拒绝域和子域
#my $ REGinfo ='==拒绝域和子域=='
#my $ REG = qr'[@。](?!(gmail \ .com $ | hotmail \ .com $ | aol \ .com $))'i;

#仅精确域
我的$ REGinfo ='==仅精确域==';
我的$REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;

打印$ REGinfo。“ \ n”;
打印'$ REG ='。$ REG。“ \ n \ n”;

我的@strTest =(
    “ test@hotmail.com”,
    'test@gmail.com',
    “ test@aol.com”,
    “ test@msn.com”,
    “ test@yahoo.com”,
    “ test@yahoo.aol.com”,
    'aol.com@somethingelse.com'
);

为我的$ i(0 .. $#strTest){
    如果($ strTest [$ i] =〜$ REG){
        打印(“通过$ strTest [$ i] \ n”);
    }
    其他{
        打印(“失败$ strTest [$ i] \ n”);
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.