我可以得到exim拒绝一些电子邮件地址

我有exim设置为接受后缀为 – 的本地地址。 所以如果是一个用户,那么乔 – 任何东西都被接受。

但是有一些我想拒绝的子地址(他们已经变得太垃圾邮件了,没有什么用处)。 在被本地用户路由器预约之前,是否有这样做的方法? 我可以在别名文件中做些什么吗?

我在Ubuntu 10.04上运行

在只存在的localuser路由器之前添加另一个路由器,以拒绝要拒绝的lp / suffix组合。 这是一个硬编码后缀的例子:

reject_suffixes: driver = redirect local_parts = joe-badsuff1 : joe-badsuff2 allow_fail fail_verify = true data = :fail: invalid email <$local_part@$domain> 

另一种方法是从文件中查找它。 相同的基本概念,只是一个文件查找:

 reject_suffixes: driver = redirect local_parts = /path/to/file allow_fail fail_verify = true data = :fail: invalid email <$local_part@$domain> 

local_parts指向的文件只是要拒绝的local_parts列表:

 joe-badsuff1 jane-badsuff2 jack-badsuff1 # etc... 

我更喜欢使用路由器来代替ACL,因为它捕获了所有的边缘情况,比如本地提交的消息(以及不会使rcpt acl脱机)等等。

您可以创build一个acl来拒绝这些地址。 到“begin acl”部分,添加如下内容:

 deny message = This address is locked. recipients = /a/file/containing/the/rejected/addresses 

即使接收者被接受,这也将拒绝该消息。 这里的“收件人”部分是一个简单的列表,你可以使用任何types的列表,而不是指定一个文件(SQL查询,硬编码列表,无论什么)。

只需为他们添加一个别名。

  #别名::行动:评论 
 joe-spam :: fail:由于垃圾邮件量而被禁用。 

我喜欢pipe理被拒绝的子地址以及同一个别名文件中的接受地址(每个域名都有一个)。 我也只想每个域的一个路由器。

如果你有一个路由器在别名文件中进行查找,只需先查找$ original_local_part,然后查找$ local_part,因为$ original_local_part保存了带有后缀(又名子地址)的整个地址:

  data = ${lookup {$local_part$local_part_suffix@$domain} nwildlsearch {/cfg/aliases} {$value}\ {${lookup {$local_part@$domain} nwildlsearch {/cfg/aliases} {$value}}}} 

然后在别名文件中,为要拒绝的子地址添加一行:

 [email protected]: :fail: no such user, too much spam [email protected]: [email protected] 

因此,如果exim在第一次search中find子地址(“[email protected]”),它将处理它(在我的示例中失败),但是如果不是,则第一次查找将失败并导致第二次search只是本地部分(“[email protected]”),并find并接受/redirect。 如果当前地址上没有子地址,则可能仅在第一次查找时匹配。