Estou tentando canalizar e-mails recebidos para um script para processamento. Eu tenho um transporte Postfix personalizado definido em master.cf, conforme a seguir.
transpire unix - n n - - pipe
flags=Rq user=implantd argv=/opt/transpire/bin/implantproc.py $recipient > /dev/null 2>&1
Isso funciona, os emails definidos no local_recipient_map são canalizados para o script, porém tenho um problema de permissões. Parece que o script (implantproc.py) não tem permissão de gravação em um arquivo, que será necessário para ser executado. Por exemplo, uma notificação de falha na entrega 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 meu entendimento que por padrão o postfix é executado em nobody/nogroup
, mas tentei chownar o arquivo log.txt sem 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 de errado?