代码之家  ›  专栏  ›  技术社区  ›  Nanda Kishore

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

  •  10
  • Nanda Kishore  · 技术社区  · 16 年前

    我有一个非常平常的要求,但我无法得到结果,不知何故。我有包含以下内容的procmailrc文件:

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

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

    • 当新邮件到达时,这是调用外部程序(python)的正确方法吗?
    • 我的python程序(privilege_emails_forward.py)将如何接收输入的邮件?我的意思是系统argv还是stdin?????
    2 回复  |  直到 9 年前
        1
  •  11
  •   Johannes Weiss    16 年前

    很好,只要放 fw 之后 :0 ( :0 fw )您的python程序将在上接收邮件 stdin . 你必须“回音”可能被转换的邮件 stdout .

    FW 手段:

    • f 把管子当作过滤器。
    • w 等待筛选器或程序完成并检查其exitcode(通常忽略);如果筛选器不成功,则文本将不会被筛选。

    我的垃圾邮件检查程序(bogofilter)就是这样工作的。它添加了邮件头,随后的procmail规则根据这些邮件头执行一些操作。

        2
  •  5
  •   Community CDub    8 年前

    这个 log excerpt 很明显,您的脚本是执行的,即使它没有显示所需的效果。如果执行失败,我希望Procmail记录一个错误。

    无论如何,请确保以正确权限执行procmail的用户(uid)执行脚本。仅当使用类似以下内容成功测试时,才将脚本连接到procmail中(将“procmail”替换为正确的uid):

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

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

    推荐文章