Маршрутизация почты с использованием pipe в Exim

Я искал отправку электронной почты нескольким адресатам, т. Е. Один на указанный пользователем адрес электронной почты, а другой на сценарий php. Работая в Интернете, я пришел к выводу, что мне нужно использовать pipe в маршрутизаторах и передавать конфигурации моего почтового агента, т.е. 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 присутствует в точном месте, указанном в журналах.

4

Решение

В разделе роутеры я написал свой собственный роутер, который будет доставлять почту на мой нужный скрипт php. В разделе транспорта написан собственный собственный транспорт, который обеспечит доставку до нужного скрипта с помощью curl. Держал system_aliases раздел в конфигурации маршрутизаторов, как он есть, но изменил драйвер с accept в redirect. Написал следующие конфигурации в моем /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-скриптом

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]