在procmail中使用sylfilter

用户名

我已经使用sylfilter一年多了(可从http://sylpheed.sraoss.jp/sylfilter/获得),它作为过滤工具非常有效(无可抱怨)。但是,我一直在尝试将procmail与sylfilter一起使用,但遇到了很多麻烦。

过滤器的网页显示:

sylfilter ~/Mail/inbox/1234

作为对消息进行分类的示例。

返回值如下:

0个垃圾邮件(垃圾邮件)

1清洁(非垃圾邮件)

2不确定

其他127个错误

我一直在尝试将sylfilter与procmail结合在一起,但并没有成功。与bogofilter之类的其他垃圾邮件工具相比,最大的问题是sylfilter不会对电子邮件本身进行任何更改(与bogofilter不同,bogofilter的示例在网络上比比皆是,并且在Web站点的X-Bogosity字段中邮件标题)。我希望所有分类为“垃圾邮件”的东西都转到$ HOME / Mail / Junk,而所有不需要进一步分类的东西(如procmail规则)都应进入。也许返回2的内容可以转到$ HOME / Mail / unertain。

这是我根据Fedora邮件列表中的建议进行的最新尝试。

:0 Wc
| /usr/bin/sylfilter /dev/stdin
:0 a
$HOME/Mail/Junk/.

但是,这不会使用sylfilter处理电子邮件(日志文件显示“没有输入文件。”,然后继续处理其他规则)。因此,我想知道这里是否有人知道类似案件并知道该问题的答案。

三元组

我不熟悉sylfilter,(有点含糊)的问题描述使我认为在标准输入中输入消息有问题。但是,如果您可以做到这一点,那么下面就是您如何在Procmail中检查程序的退出代码。

:0
* ? sylfilter /dev/stdin
$HOME/Mail/Junk/.

# You should now have the exit code in $? if you want it for further processing
SYLSTATUS=$?

:0
* SYLSTATUS ?? ^^1^^
$HOME/Mail/INBOX/.
# ... etc

如果sylfilter返回成功(零)退出代码,则条件成功;否则,条件为成功。如果失败,我们将继续进行后续操作。我们将其保存$?到一个命名变量中,以便即使随后的配方$?通过调用某些其他外部程序将系统全局复位,也可以检查其值

顺便说一句,您不需要对的路径进行硬编码sylfilter如果它位于非标准位置,请PATH在开始时进行修改,.procmailrc而不要使用显式的可执行文件路径乱码。所以,如果它在/usr/local/really/sf/sylfilter,你会放

PATH=/usr/local/really/sf:$PATH

如果您需要临时文件中的消息,请尝试这样的操作;

TMP=`mktemp -t sylf.XXXXXXXX`
TRAP='rm -f $TMP'
:0c
$TMP

:0
* ? sylfilter $TMP
$HOME/Mail/Junk/.

# etc as above

mktemp命令将创建一个唯一的临时文件。TRAP分配设置了Procmail终止时要运行的命令序列。完成后,这将清理临时文件。因为我们将是该文件的唯一编写者,所以在将消息副本写入此文件时,我们不必担心锁定。

有关更多具体语法的详细信息,另请参见http://www.iki.fi/era/procmail/quickref.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章