对于你们中的一些人来说,这可能是一个简单的问题,但我正在努力使用 Sieve 和一个包罗万象的地址来实现一些电子邮件分发。 我想要的是以下内容:
到目前为止我尝试过的脚本在大多数情况下都运行良好。但是,如果同时发送电子邮件至 [email protected] 和 [email protected],则分发将不再正常工作。这是我尝试过的:
if address :localpart :matches ["To", "Cc"] "shop-*" {
redirect "[email protected]";
} elsif address :localpart :is ["To", "Cc"] "alias47" {
redirect "[email protected]";
} else {
keep;
}
问题是,如果发送电子邮件
To: [email protected]
和 Cc: [email protected]
,那么电子邮件会以 [电子邮件受保护]结束两次。
如果我将脚本更改为
if address :localpart :matches ["To", "Cc"] "shop-*" {
redirect "[email protected]";
}
if address :localpart :is ["To", "Cc"] "alias47" {
redirect "[email protected]";
}
keep;
并且电子邮件已发送
To: [email protected]
和 Cc: [email protected]
,然后电子邮件以 [电子邮件受保护] 结束两次,两次为 [电子邮件受保护],还两次为默认的综合邮箱。
从逻辑的角度来看,我完全理解为什么电子邮件会这样分发。现在的问题是,有没有一种方法可以按照我想要的方式分发电子邮件,或者只能通过单独的邮箱来实现?是否可以引入变量来检查之前是否已将同一封电子邮件发送到某个邮件地址?
感谢您的想法。
redirect
会改变隐式的keep,你需要使用copy
扩展,这样你的脚本才能继续运行。
require "copy";
require "variables";
set "sent" "false";
if address :localpart :matches ["To", "Cc"] "shop-*" {
redirect :copy "[email protected]";
set "sent" "true";
}
if address :localpart :is ["To", "Cc"] "alias47" {
redirect :copy "[email protected]";
set "sent" "true";
}
if string :is "${sent}" "true" {
discard;
}