我正在尝试测试在我的邮件服务器上使用筛选脚本的更模块化的方法来测试。
以前,我对所有事情都使用 .dovecot.sieve,但是现在我的需求发生了冲突,所以我想测试一下主脚本并包含多个包含内容。
它是dovecot 2.0.9。
我设置如下:
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
当我直接在 .dovecot.sieve 文件中执行我需要的操作时,一切都运行正常。但我只是尝试将其更改为以下内容:
require ["include"];
include :personal "filing";
include :personal "vacation";
当我编译它时出现以下错误:
# sievec .dovecot.sieve
.dovecot: line 2: error: included personal script 'filing' does not exist.
.dovecot: line 3: error: included personal script 'vacation' does not exist.
.dovecot: error: validation failed.
但它们确实存在:
# ls -l sieve total 8
-rwxrwxrwx 1 root root 390 Aug 23 14:53 filing.sieve
-rwxrwxrwx 1 root root 740 Aug 23 15:04 vacation.sieve
那么为什么 dovecot 没有看到包含的内容?
我已尝试 chmod 777 以防它的权限,但这没有帮助。
我尝试过绝对路径名,并将包含文件放在不同的位置,将它们重命名为不带筛选后缀,明确地使用筛选后缀调用它们,但都不起作用。
我不能使用全球,因为这些是特定于帐户的要求。
有谁知道为什么 sievec 会失败吗?
答案1
Jens 在 sievec 和配置方面做得很正确。我发现,虽然 sievec 出现故障,但自动回复程序实际上按设计运行,并自动编译 .svbin 文件。因此,sievec 错误有点像是转移注意力的借口,遗憾的是,我记不起我在哪里读到过我需要首先运行 sievec。我认为它可能只对 :global 而不是 :personal 是必要的。
希望这对遇到同样错误的人有所帮助 - 虽然我没有修复 sievec 错误,但我发现它是不必要的,并且 .svbin 文件正在被正确地自动编译。
谢谢。
答案2
问题是,当您运行时,sievec
它不知道您是哪个用户,因此也不知道您在哪里~/sieve
。
如果您使用-u
参数sievec
那么编译应该没有问题。