Назад | Перейти на главную страницу

маршрутизатор для перенаправления с помощью программы запроса - exim4

Мы настраиваем Exim4 маршрутизатор с driver = queryprogram, с идеей выполнить сценарий и перенаправить определенные адреса на основе логики сценария.

Проблема в том, что при отладке того, как exim будет маршрутизировать адрес, мы получаем my_router router: command returned non-zero code 127 ошибка.

Почему exim получает command returned non-zero code 127? Как мы можем это исправить?

Спасибо!

Вот некоторая, надеюсь, полезная информация:

# exim -d -bt anaddress@mylocaldomain.com

...

--------> my_router router <--------
local_part=anaddress domain=mylocaldomain
checking local_parts
anaddress in "! root"? yes (end of list)
R: my debug message
calling my_router router
my_router router called for anaddress@mylocaldomain.com: domain = mylocaldomain.com
requires uid=1001 gid=1001 current_directory=/tmp
direct command:
  argv[0] = /tmp/myscript.sh
direct command after expansion:
  argv[0] = /tmp/myscript.sh
my_router router: defer for anaddress@mylocaldomain.com
  message: my_router router: command returned non-zero code 127
anaddress@mylocaldomain.com cannot be resolved at this time: my_router router: command returned non-zero code 127
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=8094 terminating with rc=1 >>>>>>>>>>>>>>>>

Скрипт (/tmp/myscript.sh), обрабатывающий почту, просто

#/usr/bin/php

echo 'redirect another_address@another_domain.com';
exit;

У скрипта есть разрешения

$ ls /tmp
total 196K
4.0K -rwxrwxr-x 1 someuser somegroup         58 Oct  5 20:48 myscript.sh

Маршрутизатор настроен в exim4.conf.template так как:

...

my_router:
  debug_print = "R: my debug message"
  driver = queryprogram
  command = /tmp/myscript.sh
  current_directory = /tmp
  command_user = myuser
#  domains = +local_domains
  local_parts = ! root
  cannot_route_message = Unknown Special user

В сценарии допущена опечатка: после хеша опущена фраза.

#!/usr/bin/php

echo 'redirect another_address@another_domain.com';
exit;

Код выхода 127 означает, что соответствующий интерпретатор не найден, поскольку строка shebang имеет неправильный формат.

Также я не уверен, что вы действительно хотите, чтобы ваш скрипт интерпретировался PHP. Так что, возможно, вам придется заменить первую строку на #!/bin/sh