router para redirecionar com o queryprogram - exim4

1

Estamos configurando um Exim4 router com driver = queryprogram , com a ideia de executar um script e redirecionar determinados endereços com base na lógica do script.

O problema é que ao depurar como o exim rotearia o endereço, obtemos um erro my_router router: command returned non-zero code 127 .

Por que o exim está recebendo command returned non-zero code 127 ? Como podemos consertar isso?

Obrigado!

Aqui estão algumas informações úteis:

# exim -d -bt [email protected]

...

--------> 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 [email protected]: 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 [email protected]
  message: my_router router: command returned non-zero code 127
[email protected] 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 >>>>>>>>>>>>>>>>

O script (/tmp/myscript.sh) que processa o e-mail é apenas

#/usr/bin/php

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

O script tem permissões

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

O roteador está configurado em exim4.conf.template como:

...

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
    
por arod 05.10.2016 / 23:26

1 resposta

2

Você tem um erro de digitação no script: bang é omitido após o hash.

#!/usr/bin/php

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

O código de saída 127 significa que o intérprete apropriado não foi encontrado na medida em que a linha shebang está incorreta.

Além disso, não tenho certeza se você realmente quer que seu script seja interpretado pelo PHP. Então pode ser que você tenha que substituir a primeira linha por #!/bin/sh

    
por 05.10.2016 / 23:54