当前位置:  开发笔记 > 编程语言 > 正文

每次出现新邮件时,都希望procmail运行自定义python脚本

如何解决《每次出现新邮件时,都希望procmail运行自定义python脚本》经验,为你挑选了2个好方法。

我对procmail有一个非常常见的要求,但我无法以某种方式获得结果.我有这个内容的procmailrc文件:

:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py

其中我的自定义python脚本(privilege_emails_forward.py)将扫描当前收到的电子邮件,并对邮件内容进行一些操作.但是我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了).

这是一个新邮件到达时调用外部程序(python)的正确方法吗?

我的python程序(privilege_emails_forward.py)将如何接收邮件作为输入?我的意思是作为sys.argv或stdin ????

Johannes Wei.. 11

那很好,只需放在fwafter :0(:0 fw)之后.你的python程序将收到邮件stdin.你必须"回应"可能转换的邮件stdout.

fw 手段:

f 将管道视为过滤器.

w等待过滤器或程序完成并检查其exitcode(通常被忽略); 如果过滤器不成功,则文本将不会被过滤.

我的垃圾邮件检查程序(bogofilter)就是这样的.它添加了标题,后来procmail规则根据这些标题执行某些操作.



1> Johannes Wei..:

那很好,只需放在fwafter :0(:0 fw)之后.你的python程序将收到邮件stdin.你必须"回应"可能转换的邮件stdout.

fw 手段:

f 将管道视为过滤器.

w等待过滤器或程序完成并检查其exitcode(通常被忽略); 如果过滤器不成功,则文本将不会被过滤.

我的垃圾邮件检查程序(bogofilter)就是这样的.它添加了标题,后来procmail规则根据这些标题执行某些操作.



2> paprika..:

该日志摘录中明确指出,你的脚本执行,即使它并不显示预期的效果.如果执行失败,我希望procmail能够记录错误.

无论如何,确保执行procmail的用户(uid)具有执行脚本的正确权限.电线脚本到procmail的前提是你成功的东西,如该测试(用正确的UID替换"procmail的"):

# sudo -u procmail /bin/sh -c '/bin/cat /work/scripts/mail.txt | /usr/bin/python /work/scripts/privilege_emails_forward.py'

根据您的sudo配置,您必须以root身份运行它.哦,并确保使用绝对文件路径.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有