我有筛选规则:
if header :contains "subject" ["TOP-SECRET"] {
setflag "\\Seen";
fileinto :create "Hidden-Folder";
stop;
}
基于此,TOP-SECRET
将主题中包含的任何内容移动到hidden-folder
并设置为已读。
有没有办法Hidden-Folder
通过 sieve 将其设置为未订阅(从文件夹列表中隐藏)?或者如何“管道”哪个帐户订阅文件必须通过脚本进行编辑?
答案1
我认为没有选项可以配置这样的行为——无论是在 Sieve 还是在 Pigeonhole 或 Dovecot 配置中。
但我可以提出一个解决方法:创建一个未订阅的隐藏文件夹并将子目录放入其中。
如果您创建一个文件夹,Hidden-Folder
并将其定义为未订阅(手动或使用doveadm
),则操作fileinto :create "Hidden-Folder.Foo" will create the folder
foo inside
Hidden-Folder`,但不会自动订阅它。
你当然也可以使用vnd.dovecot.execute
并doveadm mailbox unsubscribe
在运行后运行取消订阅邮箱fileinto
,甚至在提交邮件之前创建邮箱(而不订阅它)。不过,通过 Sieve 执行系统命令感觉不太好;即使它只是一个带有经过严格检查的参数的预定义命令。
答案2
经过一些测试后,我通过将其传输到外部脚本获得了所需的功能。
筛选代码如下:
if envelope :matches "To" "*@*" {
set "recipient" "${0}";
}
if header :contains "subject" ["TOP-SECRET"] {
setflag "\\Seen";
fileinto :create "Hidden-Folder";
pipe "my-script" ["${recipient}"];
stop;
}
那么筛管my-script
代码看起来像
#!/bin/bash
mbox=$1
result=`find /mnt/var/mailboxes -type d -name $mbox`
perl -pi -e 's/Hidden-Folder//g' $result/subscriptions
附注 - 确保所有邮箱的所有者/mnt/var/mailboxes
都是 Dovecot。