【问题标题】:Debian - invoke external script from exim on receipt of emailsDebian - 在收到电子邮件时从 exim 调用外部脚本
【发布时间】:2011-09-11 00:02:53
【问题描述】:

我正在寻找处理传入特定虚拟主机的电子邮件并使用电子邮件数据作为参数调用外部脚本的最佳方法的 fopointers - 基本上是为了允许将电子邮件发送到主机上的某个“私人”电子邮件地址然后自动将某些内容插入该站点数据库。我目前已将 exim 设置为邮件处理程序。

【问题讨论】:

    标签: email debian external-process exim


    【解决方案1】:

    您必须遵循 exim 单文件配置结构。在路由器部分编写您自己的自定义路由器,将电子邮件发送到您想要的 php 脚本。在传输部分编写您自己的自定义传输,以确保使用 curl 传递到所需的脚本。只需在您的/etc/exim.cnf 文件中写入以下配置:

    ############ROUTERS
    runscript:
            driver = accept
            transport = run_script
            unseen
            no_expn
            no_verify
    ############TRANSPORT
    run_script:
         debug_print = "T: run_script for $local_part@$domain"
         driver = pipe
         command = /home/bin/curl http://my.domain.com/mailTest.php --data-urlencode $original_local_part@$original_domain
    

    mailTest.php 将是您的指定脚本。

    【讨论】:

    • 一般来说 PHP 并特别是通过 curl 转移似乎不太适合这项任务。
    • 就我而言,我必须将电子邮件发送到多个目的地。我必须同时使用这两个驱动程序,即接受和重定向。我发现只有一种方法可以同时使用这两种方法并有效地完成我已经提到的工作。
    【解决方案2】:

    Procmail 是一个很好的通用答案。如果您的需求非常具体,您可以直接从您的.forward(或 Exim 的相应构造——不记得它的具体区别)中挂钩您自己的脚本,但通常,将您自己的脚本包装在一个简单的 .procmailrc 中帮助您避免一堆不确定的电子邮件传递细节,并专注于实际处理。

    :0
    ' ^Subject: secretpassword adduser \/[A-Z]+
    | echo "insert $MATCH into users" | mysql -d users
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 2014-05-01
      • 2018-04-19
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多