有问题的 Mail Sieve 规则

有问题的 Mail Sieve 规则

我需要使用以下三个规则对收到的电子邮件进行分类:

  1. 如果电子邮件发送至任何@somedomain.tld,然后将该电子邮件复制到“somedomain_tld”
  2. 如果电子邮件发送至任何其他@*.tld,然后将该电子邮件复制到“others_tlds”。(任何其他 =“不是somedomain.tld”)
  3. 将其余的电子邮件复制到第三个文件夹“rest”。

我正在使用鸽舍筛选规则来做到这一点。

还有一个附加条件:上述三个规则必须应用于电子邮件中的每个“收件人:”地址……因此,在最复杂的情​​况下,应将电子邮件复制到三个文件夹中

例如:应将以下电子邮件复制到三个文件夹中:

From: [email protected]
To: [email protected], [email protected], [email protected]
Subject: Test Email

This is a test email
  1. 因为 ”[电子邮件保护]“此电子邮件应复制到“somedomain_tld”
  2. 因为 ”[电子邮件保护]“此电子邮件应抄送至“others_tlds”
  3. 因为 ”[电子邮件保护]“此电子邮件应抄送至“rest”

要求和第一条规则很简单:

require ["fileinto","copy"];
if address :is :domain "to" "somedomain.tld" { fileinto :copy "somedomain_tld"; }

但第二个不知道该怎么做:

if address :matches :domain "to" "*.tld" { fileinto :copy "others_tlds"; }

也会与 somedomain.tld 匹配,但这并不是我想要的...(如果我有一封电子邮件,内容是“收件人:[电子邮件保护]“它将被复制到 somedomain_tld (OK) 和 others_tlds (BUG))

对于#3我一点头绪都没有。

我也在考虑正则表达式,但我不知道如何在筛选正则表达式(或任何其他正则表达式样式)中表达“除此之外的每个域”

有人知道如何弯曲鸽舍筛来做 1、2、3 吗?

答案1

require ["fileinto"];
if header :contains "To" "domain.tld"
{
        fileinto "INBOX/domain_tld";
        stop;
}
if header :contains "To" ".tld"
{
        fileinto "INBOX/other_tld";
        stop;
}
if true
{
        fileinto "INBOX/rest";
        stop;
}

相关内容