【问题标题】:using sylfilter with procmail将 sylfilter 与 procmail 一起使用
【发布时间】:2014-02-17 01:31:54
【问题描述】:

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

过滤器的网页显示:

sylfilter ~/Mail/inbox/1234

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

返回值如下:

0 垃圾邮件(垃圾邮件)

1 干净(非垃圾邮件)

2 不确定

127 个其他错误

我一直在尝试将 sylfilter 与 procmail 合并,但没有取得多大成功。与 bogofilter 等其他垃圾邮件工具相比,最大的问题是 sylfilter 不会对电子邮件本身进行任何更改 (与 bogofilter 不同,网络上的例子比比皆是, 在消息头中放入一个 X-Bogosity 字段)。我想要一切 被归类为垃圾到 $HOME/Mail/Junk 和所有 不进一步分类到文件夹,如procmail规则。 也许返回 2 的东西可以去 $HOME/Mail/uncertain。

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

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

但是,这不会使用 sylfilter(和 日志文件显示“没有输入文件”。在继续处理另一个之前 规则)。所以,我想知道这里是否有人知道类似的案例并知道这个问题的答案。

【问题讨论】:

    标签: filter spam procmail


    【解决方案1】:

    我不熟悉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 的路径进行硬编码。如果它位于非标准位置,请修改.procmailrc 开头的PATH,而不是在代码中乱扔可执行文件的显式路径。所以如果它在/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

    【讨论】:

    • 您好,谢谢!我还认为 sylfilter 可能不会被删除来处理标准输入上的消息。那么问题是:是否可以暂时将副本提供给文件,在该文件上使用 sylfilter,然后继续处理后果(如您所建议的那样)?
    • 感谢您的编辑!我现在已经验证这可行。我非常感谢这一点。如果你有时间,我想知道这个食谱背后的细节!再次感谢!!
    • 编辑了更多。祝你好运!
    • 请考虑marking this answer as accepted。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多