2011-04-20 8 views
0

procmail에서 로컬로 전달되는 수신 메일에서 스크립트 (perl 및 ruby ​​실패)를 실행하는 데 이상한 문제가 있습니다.procmail이 스크립트를 올바르게 실행하지 않습니다.

시스템은 CentOS 5.5이고 내 메일러는 우편함이며, .forward는 이메일을 procmail에 보내도록 설정됩니다. .procmailrc와 스크립트는 우분투 서버의 작동 설정과 동일합니다.

#!/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");' 

라인 결말은 여기

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.*[email protected] 
| /home/web/perltest.pl 

는 펄 스크립트입니다 : 여기

는 .procmailrc입니다 모든 유닉스. 스크립트는 명령 행에서 정상적으로 실행됩니다.

명령 줄에서 직접 procmail로 파이프하면 전체 설치가 정상적으로 작동하지만 로컬 전달 프로세스의 일부로 호출 될 때 #! 라인은 스크립트에서 무시되는 것 같습니다.

:0 wc 
* ^To.*[email protected] 
| perl /home/web/perltest.pl 

을 ...하지만 난 정말 패배를 인정하고 싶지 않아 :

은 내가 명시 적으로 같은 파이프에 펄을 실행하면 펄 스크립트를 실행할 수 있습니다.

답변

1

문제는 selinux입니다. 작동하지 않으면 문제가 발생합니다. selinux를 사용하도록 수정하는 방법을 잘 모르겠습니다.

문제를 해결하고 selinux를 계속 실행하는 방법이 있습니다. 펄이나 루비 스크립트에 chcon system_u:object_r:procmail_exec_t을 실행하십시오. 그게 수정되었는지 확인했지만 selinux에 익숙하지 않아 "올바른"수정인지 확신 할 수 없습니다.

+0

SELinux가 실제로 범인이었습니다! 고맙습니다! – Chris

관련 문제