Alterar usuário para invocação do script de transporte do postfix

1

Estou tentando enviar e-mails recebidos para um script para processamento. Eu tenho um transporte Postfix personalizado definido em master.cf, conforme o seguinte.

transpire unix  -       n       n       -       -       pipe
  flags=Rq user=implantd argv=/opt/transpire/bin/implantproc.py $recipient > /dev/null 2>&1

Isso funciona, os e-mails definidos no local_recipient_map são canalizados para o script, no entanto, tenho um problema de permissão. Parece que o script (implantproc.py) não tem permissão de gravação para um arquivo, que ele precisará executar. Por exemplo, um NDR mostrando o erro de permissão.

<[email protected]>: Command died with status 1:
    "/opt/transpire/bin/implantproc.py". Command output: Traceback (most recent
    call last):   File "/opt/transpire/bin/implantproc.py", line 11, in
    <module>     open("log.txt", 'a').write("test!") IOError: [Errno 13]
    Permission denied: 'log.txt'

Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.3.0
Diagnostic-Code: x-unix; Traceback (most recent call last):   File
    "/opt/transpire/bin/implantproc.py", line 11, in <module>
    open("log.txt", 'a').write("test!") IOError: [Errno 13] Permission
    denied: 'log.txt'

É / foi entendido que, por padrão, o postfix é executado sob nobody/nogroup , mas eu tentei chowning o arquivo log.txt com ninguém. Além disso, você notará que criei um usuário específico, implantd , que deve ser usado para invocar o script de transporte.

Alguém pode aconselhar o que estou fazendo errado?

    
por George 04.09.2013 / 19:30

0 respostas