希望procmail运行自定义python脚本,每次出现新邮件时
我对procmail有一个非常常见的要求,但不知怎么的,我无法得到结果。我有包含以下内容的procmailrc文件:希望procmail运行自定义python脚本,每次出现新邮件时,python,email,procmail,Python,Email,Procmail,我对procmail有一个非常常见的要求,但不知怎么的,我无法得到结果。我有包含以下内容的procmailrc文件: :0 * ^To.*@myhost | /usr/bin/python /work/scripts/privilege_emails_forward.py 其中,我的自定义python脚本(privilege_emails_forward.py)将扫描当前收到的电子邮件,并对邮件内容执行一些操作。但我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了) 这是在新邮件到达时调用
:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py
其中,我的自定义python脚本(privilege_emails_forward.py)将扫描当前收到的电子邮件,并对邮件内容执行一些操作。但我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了)
- 这是在新邮件到达时调用外部程序(python)的正确方法吗李>
- 我的python程序(privilege\u emails\u forward.py)将如何接收邮件作为输入?我的意思是作为sys.argv或stdin
- 那很好,只要把
fw
放在:0
后面(:0fw
)。python程序将在stdin
上接收邮件。您必须在stdout
上“回显”可能转换的邮件
fw
表示:
等待过滤器或程序完成并检查其现有代码(通常忽略);如果筛选不成功,则文本将不会被筛选w
根据您的sudo配置,您必须以root用户身份运行它。哦,还要确保使用绝对文件路径。我也试过了。但还是不行我不知道为什么:(这是我的procmailrc脚本::0 fw*^To.*@myhost |/usr/bin/python/work/scripts/privilege\u emails\u forward.pytry VERBOSE=是,请查看您的procmail日志文件。也许您可以发现错误!Johannes!由于此注释文本字段不足以打印procmail日志输出,我已经给出了输出作为答案。请查看。)it.Johannes!我已经检查了错误日志,其中一件引起我注意的事情是:执行“/usr/bin/python,/work/scripts/privilege\u emails\u forward.py”为什么在/usr/bin/python和我的自定义脚本之间有一个逗号。首先,我的procmailrc正确吗?太棒了!我试着运行你给的脚本,procmail被webmail替换了(当前用户),我的脚本被执行了。但是当我收到一封邮件时(无论是谁发的邮件),我的procmail运行procmailrc,对吗?那么谁将是运行脚本的正确用户?Paprika!为了清楚地解释,我的自定义python脚本已获得足够的权限(777),当我收到一封邮件时,它仍然不会自动执行。要知道你的procmail脚本是以哪个用户的身份运行的,请将procmailrc中的脚本行替换为:“|/usr/bin/id-un>/tmp/procmailuser‘不要’忘记前面的管道符号!然后,检查‘cat/tmp/procmailuser’应该会显示用户。虽然procmail可能有效,但是自从2001年以来,procmail就没有进行过积极的开发,而且,是否存在在收到新消息时也会运行脚本的替代方案? # sudo -u procmail /bin/sh -c '/bin/cat /work/scripts/mail.txt | /usr/bin/python /work/scripts/privilege_emails_forward.py'