URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57658
[ Назад ]

Исходное сообщение
"Exim queryrouter: ругается command returned non-zero code 127"

Отправлено dodger , 24-Июн-05 06:19 
FreeBSD 5.4.
Exim-4.51

Кусок конфы по этому поводу в секции роутеров:
localmaildiruser:
  driver = queryprogram
  command = /bin/echo
  command_user = 26
  command_group = 26

В /etc/passwd: 26 = mailnull

В логах:
localmaildiruser router: command returned non-zero code 127
Пробовал заняться дебугингом - ничего кроме повторения инфо из лога не получил.
В документации пишут, что 127 код возвращается когда накосячено с правами или команда не существует - execve() не может работать:
# ps -aux |grep exim
---cut---
mailnull 60966  0,0  0,3  5564  2800  ??  I    11:18     0:00,00 /usr/local/sbin/exim -bd -q30m (exim-4.51)
root     60989  0,0  0,3  5680  2880  ??  I    11:18     0:00,00 /usr/local/sbin/exim -q (exim-4.51)
---cut---
# ls -la /bin/echo
-r-xr-xr-x  1 root wheel 3992 2005-05-08 07:01 /bin/echo*

Где рыть?? Подскажите пожалуйста.


Содержание

Сообщения в этом обсуждении
"Exim queryrouter: ругается command returned non-zero code 12..."
Отправлено dodger , 28-Июн-05 10:14 
>Где рыть?? Подскажите пожалуйста.

ВсЕ забили на нашу проблему :))))
Окей, могу понять.
Мы немного поменяли условия, и решили запускать перловые скрипты встроенным интерпретатором Exim.

Возникают следующие проблемы:

запуск перловой процедуры из MTA Exim (работает вполне нормально):
   address_data = ${perl{sendAuthReq}}
Это в конфигурации exim.

сама процедура в перле:
sub sendAuthReq
{
... пропущено...
my $user = Exim::expand_string{'$local_part'};
Exim::log_write("Ive got user = " . $user . "\n");
.. пропущено...
}
В логах Exima:
2005-06-28 14:28:34 Ive got user = HASH(0x8136170)

В документации Exim:
Within any Perl code called from Exim, the function Exim::expand_string is available to call back into Exim's string expansion function. For example, the Perl code

  my $lp = Exim::expand_string('$local_part');


makes the current Exim $local_part available in the Perl variable $lp. Note those are single quotes and not double quotes to protect against $local_part being interpolated as a Perl variable.

$local_part содержит в себе часть емылового адреса до собаки.

---------------------------
пробую дебугом:

прибавляю в конфигурацию exim:
debug_print $local_part
там где address_data = ${perl{sendAuthReq}}
и запускаю его с флагом отладки...
в STDERRе:
......... пропущено ......
37835 --------> localuser router <--------
37835 local_part=mail-test domain=мой_хост.мой_домен.ru
37835 expanding: $local_part
37835    result: mail-test
37835 mail-test
37835 processing address_data
37835 expanding: sendAuthReq
37835    result: sendAuthReq
37835 Starting Perl interpreter
37835 LOG: MAIN
37835   Ive got user = HASH(0x8136170)
37835
37835 LOG: MAIN
37835   maildir=  quota= user=HASH(0x8136170)
37835
.......... пропущено. ........

Как сие понять?? С  чего эта падла вставляет хэш вместо нормального логина до собаки?


"Exim queryrouter: ругается command returned non-zero code 12..."
Отправлено dodger , 28-Июн-05 13:06 
Ладна.. Видать это по принципу цвета фонарей для велосипедов.
Чем сложнее вопрос, тем меньше людей участвуют в дискуссии ;))
Пишу в maillist разработчиков....