在收到电子邮件时触发shell脚本

时间:2010-08-09 12:37:25

标签: unix shell

我们如何通过特定主题的电子邮件在unix服务器上触发shell脚本?

3 个答案:

答案 0 :(得分:6)

procmail允许您对传入的邮件执行操作,包括过滤和启动外部命令。

一些有用的链接:

万一链接断开,这是second point from above

的链接
  

问:如何在所有或选定的上运行任意Perl或shell脚本   收到的邮件?

     

答:安装Procmail。阅读手册页(有几页)。谢谢   你。

     

:0 *条件,如果有的话你的脚本,这里

     

最简单形式的条件是正则表达式   匹配每个传入邮件的标头。更正:   如果你更简单,你可以完全省略条件线   想要做你的行动(在这种情况下,运行一个shell脚本)   无条件。

     

更复杂的条件也可以是其他shell的退出代码   脚本或程序,或针对整个消息体的测试,或   反对Procmail变量(Procmail的变量也导出到   子流程的环境,因此它们本质上是环境   变量。本FAQ的后面有详细介绍。)

     

操作也可以是将邮件保存到文件夹(附加到   Unix邮箱文件,或写入目录中的新文件)或   将消息转发到一个或多个其他地址。最后,   动作可以是更多“食谱”的嵌套块,就像这些一样   在Procmail术语中调用条件动作映射,如果是,则尝试   外部条件得到满足。 procmailrc(5)手册页已满   舀。

     

显然,您不限于Perl或shell脚本。什么   你可以从Unix命令提示符运行,可以从Procmail运行   原则,虽然通常不会运行交互式程序   很有道理。

答案 1 :(得分:2)

更一般,但在我看来,它不如Wim's procmail suggestion有用:你甚至可以just point your .forward at an executable with "|scrip.sh"

答案 2 :(得分:0)

理论上,您可以通过编写程序来监视/轮询传入的电子邮件服务器并使用标准POP3协议检查主题行,如果主题行具有特定的触发器关键字,则调用shell脚本...这是适合的方法的顺序......可能已经有一个开源解决方案......

  • 使用套接字,通过IP和端口(通常为25)连接到传入的电子邮件服务器,在一个永远循环的线程中,不会阻塞并且不会占用CPU时间
  • 使用POP3协议
  • 列出电子邮件
  • 通过POP3协议下拉标题并在主题行上执行regexp
  • 如果正则表达式与主题行匹配,则发出触发器或许是系统调用以调用shell脚本