首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >筛分:过滤规则

筛分:过滤规则
EN

Server Fault用户
提问于 2021-10-30 11:15:47
回答 2查看 374关注 0票数 0

我想执行一项规则如下:

  • 如果"To“仅包含有"*@example.com”->丢弃的地址
  • 否则->会保留

换言之:

  • 如果" to“至少包含一个与"*@example.com”->不同的地址,则保留
  • 否则->丢弃

if not header :contains "To" "@example.com" { keep; } else { discard;}语句的问题在于,如果在其他非"*@example.com“地址中存在”*@example.com“地址,则不会保留邮件。

我需要的是一个否定搜索模式的选项,而不是完整的语句,例如:if header :contains "To" NOT "@example.com" { keep; } else { discard;}

有什么办法解决这个问题吗?

EN

回答 2

Server Fault用户

发布于 2021-12-28 13:29:32

这样做是可行的:

代码语言:javascript
复制
require "regex";
if header :regex "to" "@[^(example.com)]+" { keep; } else { discard; }
票数 1
EN

Server Fault用户

发布于 2022-04-18 19:11:04

有一个:count匹配类型(如:is:contains等)在"关系型“扩展中,您可以与:comparator比较器一起使用它,实际上您的用例就是它的标准示例

如果您使用的是Dovecotpigeon空洞(许多包解决方案和提供程序(如RoundCube、FastMail和其他提供程序)都使用它),则“关系”扩展将与其他扩展一起使用,您只需将它(及其比较器,请参阅下面)与其他扩展一起使用。只要支持扩展,无论使用什么实现,筛网过滤器看起来都应该是一样的。

IANA维护官方扩展的主列表。如果您使用Dovecotpigeon孔筛子,在它的Github上向下滚动到“实现状态”,看看哪些是支持的(最完整的)。这意味着您不需要搜索就可以找到“关系”扩展。

请注意,虽然基本安装(Dovecot的实现)支持:comparator,但默认情况下它不包括数值比较,排序规则本身是必须具体要求的扩展。

代码语言:javascript
复制
require [..., "relational","comparator-i;ascii-numeric"]

# ...

# reject if the number of recipient addresses is greater than 1
if allof(
  address :domain ["to","cc"] "example.com",
  address :count "gt" :comparator "i;ascii-numeric" ["to","cc"] "1"){
    # if you really want it destroyed
    # discard;
    fileinto :create "Trash"; stop;
  }

我做了一些测试,筛选器会将TO & CC (但不是BCC)的计数结合起来进行比较,因此它适用于(可见的)收件人地址的总数。

RFC 5228:筛

RFC 5231:关系扩展

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1082166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档