Php Exim中使用管道的邮件路由

Php Exim中使用管道的邮件路由,php,linux,centos,pipe,exim,Php,Linux,Centos,Pipe,Exim,我正在寻找发送电子邮件到多个目的地,即一个到用户指定的电子邮件地址,另一个到php脚本。在网上冲浪时,我得出的结论是,我必须在路由器中使用管道,并传输我的邮件代理的配置,在我的案例中,即Exim。我尝试在Exim配置中嵌入管道传输,但失败。服务器导致管道传输失败。需要帮助解决此问题。 我将exim.cnf文件修改为: ############ ROUTERS system_aliases: driver = accept domains = **.**.**.**(my Domain) tr

我正在寻找发送电子邮件到多个目的地,即一个到用户指定的电子邮件地址,另一个到php脚本。在网上冲浪时,我得出的结论是,我必须在路由器中使用管道,并传输我的邮件代理的配置,在我的案例中,即Exim。我尝试在Exim配置中嵌入管道传输,但失败。服务器导致管道传输失败。需要帮助解决此问题。 我将exim.cnf文件修改为:

############ ROUTERS
system_aliases:
driver = accept 
domains = **.**.**.**(my Domain) 
transport = use_pipe

############ TRANSPORT
use_pipe:
debug_print = "Using Pipe Transport"
driver = pipe
command = /etc/script.php
return_path_add
delivery_date_add
envelope_to_add
return_output
其中script.php是我想要发送文件的第二个目的地。 以下是日志:

 3402   uid=3000 gid=3000 pid=3402
 3402   auxiliary group list: 3000
 3402   home=NULL current=/
 3402 set_process_info:  3402 delivering 1ZTPOU-0000sn-JB to abc using use_pipe
 3402 Using Pipe Transport
 3402 use_pipe transport entered
 3402 direct command:
 3402   argv[0] = /etc/testScript.php
 3402 direct command after expansion:
 3402   argv[0] = /etc/testScript.php
 3402 Writing message to pipe
 3402 writing data block fd=10 size=44 timeout=3600
 3402 writing data block fd=10 size=2048 timeout=3600
 3402 writing data block fd=10 size=1 timeout=3600
 3404 set_process_info:  3404 reading output from |/etc/testScript.php
 3402 use_pipe transport yielded 2
 3402 search_tidyup called
 3399 use_pipe transport returned FAIL for abc@myDomain
 3399 post-process abc@myDomain (2)
 3399 LOG: MAIN
 3399   ** abc@myDomain R=system_aliases T=use_pipe: Child process of use_pipe transport returned 127 (could mean unable to exec or command does not exist) from command: /etc/testScript.php

*testScript位于日志中指定的确切位置。

在路由器部分,我编写了自己的自定义路由器,将电子邮件发送到所需的php脚本。在transport部分中,我编写了自己的自定义传输,它将确保使用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脚本

您能在日志文件中包含生成的准确错误消息吗?@AndrzejA.Filip日志包含在内。查看一下。1)检查脚本文件的权限:
ls-l/etc/testScript.php
。UID3000用户可以执行它吗?2) 检查脚本第一行的有效性
#。uid为3000的用户能否执行该程序@安德泽亚,菲利普,我查过了。文件权限或用户所有权似乎没有任何问题。