У меня странная проблема с запуском сценариев (сбой perl и ruby) из входящей почты, локально доставляемой procmail.
Система - CentOS 5.5, с постфиксом в качестве почтовой программы и настройкой .forward для отправки электронной почты в procmail. .Procmailrc и сценарии идентичны рабочей настройке на сервере Ubuntu.
Вот .procmailrc:
PATH= /usr/local/bin:/usr/bin:${PATH}
SHELL=/bin/bash
MAILDIR=$HOME/Maildir
DEFAULT=${MAILDIR}/
LOGABSTRACT=yes
LOGFILE=$HOME/Maildir/proclog
VERBOSE=YES
:0 wc
* ^To.*web@mydomain.com
| /home/web/perltest.pl
Вот скрипт на Perl:
#!/usr/bin/env perl
system("touch /home/web/touchedfile");
А затем сбой в журнале при получении письма:
procmail: Executing "/home/web/perltest.pl"
/home/web/perltest.pl: line 3: syntax error near unexpected token `"touch /home/web/touchedfile"'
/home/web/perltest.pl: line 3: `system("touch /home/web/touchedfile");'
Окончания строк - все UNIX. Сценарий работает нормально из командной строки.
Вся установка работает нормально, если я передаю команду procmail напрямую из командной строки, но когда она вызывается как часть процесса локальной доставки, #! строка в сценарии игнорируется.
Я могу заставить скрипт perl запускаться, если я явно выполняю perl в конвейере, например так:
:0 wc
* ^To.*web@mydomain.com
| perl /home/web/perltest.pl
... но я действительно не хочу признать поражение и сделать это.