我对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
那很好,只需放在fw
after :0
(:0 fw
)之后.你的python程序将收到邮件stdin
.你必须"回应"可能转换的邮件stdout
.
fw
手段:
f
将管道视为过滤器.
w
等待过滤器或程序完成并检查其exitcode(通常被忽略); 如果过滤器不成功,则文本将不会被过滤.
我的垃圾邮件检查程序(bogofilter)就是这样的.它添加了标题,后来procmail规则根据这些标题执行某些操作.
那很好,只需放在fw
after :0
(:0 fw
)之后.你的python程序将收到邮件stdin
.你必须"回应"可能转换的邮件stdout
.
fw
手段:
f
将管道视为过滤器.
w
等待过滤器或程序完成并检查其exitcode(通常被忽略); 如果过滤器不成功,则文本将不会被过滤.
我的垃圾邮件检查程序(bogofilter)就是这样的.它添加了标题,后来procmail规则根据这些标题执行某些操作.
该日志摘录中明确指出,你的脚本执行,即使它并不显示预期的效果.如果执行失败,我希望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身份运行它.哦,并确保使用绝对文件路径.