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

Non*_*-da 10 python email procmail

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

:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个新邮件到达时调用外部程序(python)的正确方法吗?
  • 我的python程序(privilege_emails_forward.py)将如何接收邮件作为输入?我的意思是作为sys.argv或stdin ????

Joh*_*iss 11

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

fw 手段:

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

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


pap*_*ika 5

日志摘录中明确指出,你的脚本执行,即使它并不显示预期的效果.如果执行失败,我希望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身份运行它.哦,并确保使用绝对文件路径.