Qual é a maneira mais segura de enviar um email para um script via procmail?

1

Eu tenho uma receita simples de procmailrc que envia as mensagens para um script:

LOGFILE=/home/foouser/procmail-log
VERBOSE=yes
MAILDIR=/var/spool/mail/foouser
DEFAULT=/var/spool/mail/foouser
SHELL=/bin/sh
DELIVERED=yes
COMSAT=no

:0
| '/home/foouser/scripts/footool/footool.sh'

O script em si é bastante resiliente e razoavelmente seguro. Minha preocupação é que a própria receita do procmail não seja higienizada corretamente e, no processo de canalização, um e-mail contendo, digamos, ; rm -rf / poderia causar estragos. Devo usar aspas duplas?

MAIS INFORMAÇÕES

Com base em algum feedback aqui , parece que eu gostaria de desativar temporariamente as metas do shell e usar o dobro -citações.

Isso talvez altere a implementação do código recomendado para:

LOGFILE=/home/foouser/procmail-log
VERBOSE=yes
MAILDIR=/var/spool/mail/foouser
DEFAULT=/var/spool/mail/foouser
SHELL=/bin/sh
DELIVERED=yes
COMSAT=no
savedMetas  = $SHELLMETAS
SHELLMETAS    # Kill variable

:0
| "/home/foouser/scripts/footool/footool.sh"
SHELLMETAS  = $savedMetas    

Isso parece melhor?

    
por Mike B 07.02.2014 / 09:47

1 resposta

2

Esta invocação está incorreta, a menos que você esteja, de alguma forma, tentando executar um comando cujo nome é a saída de footools.sh :

:0
| '/home/foouser/scripts/footool/footool.sh'

Esta é a sintaxe normal:

:0
| /home/foouser/scripts/footool/footools.sh

procmail executará footools.sh e passará o email para o script em stdin .

Não há necessidade de $SHELLMETAS ou escape especial. $SHELLMETAS é para casos incomuns em que você precisa enviar caracteres especiais como argumentos para o seu script, mas não deseja que esses argumentos sejam interpretados por um shell. Você pode ignorá-lo com segurança para um caso de uso simples, como acima.

    
por 07.02.2014 / 18:00