如何在 sieve/dovecot 中设置每个域的过滤器?
在文档中,我可以看到每个用户的设置:sieve = ~/.dovecot.sieve,现在我正在使用全局过滤器:sieve_before = /etc/dovecot/sieve/global 。但是,我希望能够根据域设置过滤器。
答案1
简而言之,你不能。
Dovecot 仅允许全局和每个用户的筛选。
before/default/after
筛选是全局的,适用于每条消息。如果您确定要以相同的方式处理所有消息,则必须设置过滤器sieve_before
,而不是default
。但这里有一个没有得到很好解释的陷阱。
sieve_before
可能包含多条规则。将应用第一个匹配的规则,并停止筛选处理。如果您希望将消息传递给筛选user
进行额外过滤,则必须将动词添加keep
到特定规则的末尾。
require "fileinto";
# rule:[some_domain]
if header :contains "From" "some.domain.tld"
{
fileinto "some_domain_tld";
keep;
}
elseif . . . . .
{
. . . . .
keep;
}
else
{
keep;
}
如果keep
省略了动词,则筛选引擎将把它视为隐式动词stop
,并且消息不会传递给user
筛选器。