2015-08-23 2 views
4

Я искал отправку сообщения по электронной почте нескольким адресатам. I.e Один из указанных пользователем адресов электронной почты и другой для скрипта php. Серфинг через Интернет, я пришел к выводу, что мне нужно использовать трубку в маршрутизаторах и передавать конфигурации моего почтового агента i.e Exim в моем случае. Я попытался, но не смог включить передачу труб в моих конфигурациях Exim. Сервер приводит к неудачной передаче труб. Нужна помощь в устранении этой проблемы. Я изменил мой файл exim.cnf как:Почтовая маршрутизация с использованием трубы в Exim

############ 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 [email protected] 
3399 post-process [email protected] (2) 
3399 LOG: MAIN 
3399 ** [email protected] 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 присутствует в точном месте, указанном в журналах.

+0

Не могли бы вы включить ТОЧНЫЕ сообщения об ошибках сгенерированный в файлах журнала? – AnFi

+0

@ Журналы AndrzejA.Filip включены. Взгляни. –

+0

1) проверить разрешения файла сценария: 'ls -l/etc/testScript.php'. Может ли пользователь с uid 3000 выполнить его? 2) проверьте правильность первой строки скрипта '#! ...'. Может ли пользователь с uid 3000 выполнять программу? http://linux.die.net/man/1/php – AnFi

ответ

2

В разделе маршрутизаторов я написал свой собственный маршрутизатор, который будет отправлять электронную почту на мой желаемый сценарий php. В транспортной секции был написан мой собственный пользовательский транспорт, который обеспечит доставку желаемого скрипта с помощью curl. Хранится раздел в конфигурации маршрутизаторов system_aliases как это, но изменил драйвер от accept к redirect .Wrote следующие конфигурации в моем /etc/exim.cnf файле:

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

mailTest.php был мой скрипт