procmail não executa script php

1

Eu configurei um gateway SMS kannel no meu FreeBSD 7.2 - o serviço funciona muito bem.

Agora estou tentando configurar um recurso de email2sms. Para isso eu criei um usuário do sistema chamado kannel e todos os e-mails são encaminhados para este usuário.

No diretório home de kannel eu tenho os seguintes arquivos.

-rw-r--r--  1 kannel  kannel    81B 17 jan 09:50 .procmailrc
lrwxr-x---  1 root    kannel    58B 14 jan 13:24 email2sms.php @ -> some-what-some-where
-rw-rw-rw-  1 root    kannel   5,8K 17 jan 09:52 log.email2sms
-rw-------  1 kannel  kannel   1,3K 17 jan 09:50 procmail.log
-rw-r-----  1 root    kannel   606B 14 jan 13:28 rawmail.txt

O arquivo email2sms.php é um link simbólico para o script a php (ZendFramework Application) que recebe o email de STDIN e usa o ZendFramework para analisar esse email em um objeto. Em seguida, faça uma solicitação http para o gateway SMS. O script php funciona.

Conteúdo de .procmailrc

LOGFILE=$HOME/procmail.log
VERBOSE=yes

:0
| php email2sms.php >> log.email2sms

Do último e-mail enviado, eu tenho isso em procmail.log

procmail: [97744] Mon Jan 17 09:50:40 2011
procmail: [97744] Mon Jan 17 09:50:40 2011
procmail: Assigning "LASTFOLDER= php email2sms.php >> log.email2sms"
procmail: Executing " php email2sms.php >> log.email2sms"
procmail: Notified comsat: "kannel@:/home/user/kannel/ php email2sms.php >> log.email2sms"
From [email protected]  Mon Jan 17 09:50:40 2011
 Subject: asdf as
  Folder:  php email2sms.php >> log.email2sms                              2600

Mas não há nova saída para log.email2sms, e o script deve mostrar o assunto do email.

Se eu sudo como o usuário kannel e canalizar um arquivo com e-mail bruto para o script, ele será executado muito bem.

[root@webserver /home/user/kannel]# /home/user/kannel/ sudo -u kannel cat rawmail.txt | php email2sms.php >> log.email2sms

E o comando é enviado para log.email2sms conforme desejado.

Alguma idéia pessoal?

UPDATE

Mudei o phpscript para apenas die('bail me out scotty'); e o script foi executado de .procmail ao enviar um email. O arquivo log.email2sms é anexado com o texto da fiança.

Portanto, talvez o conteúdo do e-mail não seja canalizado corretamente ou a classe Zend Framework que manipula os dados canalizados de STDIN esteja com bugs.

    
por Phliplip 17.01.2011 / 10:32

2 respostas

1

O problema não foi com o procmail, mas no script do Zend Framework que eu tinha.

No ZendFramework, a leitura de emails do STDIN usa:

// will use file_get_contents()
$email = new Zend_Mail_Message(array('file' => "php://stdin"));

E NÃO:

// will use stream_get_contents()
$email = new Zend_Mail_Message(array('file' => "STDIN"));

Nota para si: não use tips'n'trix nos comentários

    
por 17.01.2011 / 12:11
0

Parece um problema de shell limitado, verifique se o comando php está no caminho, também para depurar o procmail você sempre pode adicionar no topo do arquivo

LOGFILE=$HOME/procmail.log
VERBOSE=on
    
por 17.01.2011 / 10:45