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

希望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)将扫描当前收到的电子邮件,并对邮件内容执行一些操作。但我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了) 这是在新邮件到达时调用

我对procmail有一个非常常见的要求,但不知怎么的,我无法得到结果。我有包含以下内容的procmailrc文件:

: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
      表示:

        代码> f <代码>考虑管道作为过滤器。
      • w
        等待过滤器或程序完成并检查其现有代码(通常忽略);如果筛选不成功,则文本将不会被筛选
      我的垃圾邮件检查器(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用户身份运行它。哦,还要确保使用绝对文件路径。

      我也试过了。但还是不行我不知道为什么:(这是我的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'