我有一个问题^^:
首先,我向您展示一个简单的 procmail 规则:
DELIVER="/usr/lib/dovecot/deliver -d $LOGNAME"
DEFAULT="$HOME/Maildir/"
MAILDIR="$HOME/Maildir/"
# deliver spam to spam folder
:0 w
* ^X-Spam-Status: Yes
| $DELIVER -m Spam
# deliver to INBOX and stop
:0 w
| $DELIVER
现在我的问题是,有没有办法使用 DELIVER 作为默认值,例如:
DEFAULT="/usr/lib/dovecot/deliver -d $LOGNAME"
这样在检查 procmail 规则后,所有邮件都会转到 dovecot 吗?
不幸的是,没有办法将管道(或转发到另一个地址)指定为 Procmail 中的默认传递目的地。基本上,你能做的最好的就是把这个无条件的配方添加到你的 和 中
.procmailrc
,就像你已经在做的那样。顺便说一句,将带有参数的命令存储在字符串变量中是相当脆弱的,当您需要引用一些参数时,很难或不可能正确地做到这一点。Procmail 从 shell 继承了这个问题和语法;或许可以进一步查看https://mywiki.wooledge.org/BashFAQ/050
一种可能的变化是只设置一个变量来指示食谱中的目的地,并且只在最后交付。或许是这样的:
在第一个配方之后小心地在每个配方上使用一个
E
标志意味着条件匹配的第一个获胜,就像在常规 Procmail 配方文件中一样;没有它,最后匹配的配方获胜,您将始终处理所有配方。