O problema
Eu gostaria que o postfix enviasse e-mails para um script que opera em arquivos de propriedade do grupo www-data
localizado em /var/www/
. No entanto, recebo mensagens de erro que indicam privilégios insuficientes. Permitindo que o script seja executado em whoami
, posso confirmar que ele é executado pelo usuário correto scriptuser
(conforme definido no meu arquivo /etc/postfix/transport
). Também posso confirmar que o usuário tem direitos de acesso suficientes, pois não há erros ao executar o script usando sudo -u scriptuser /path/to/script
.
Portanto, estou bastante confuso e um pouco perdido. Como é possível que o usuário tenha acesso direto aos arquivos, o script é executado pelo Postfix como esse usuário específico, mas ainda recebo a mensagem permission denied
?
Eu também tentei adicionar default_privs = www-data
a /etc/postfix/main.cf
, como sugerido em aqui sem sucesso. Habilitar o acesso via chmod o+rx
faz o trabalho, mas eu consideraria isso potencialmente perigoso, já que qualquer um com acesso shell ao servidor poderia ler esses arquivos.
Os arquivos de configuração
# in file /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
virtual_maps = hash:/etc/postfix/virtual/addresses
# in file /etc/postfix/master.cf
mailreply unix - n n - - pipe
flags=FR user=scriptuser argv=/usr/lib/postfix/sbin/pipemailreply
# in file /etc/postfix/transport
mailreplyuser@localhost mailreply
# in file /etc/postfix/virtual/addresses
mydomain.com DOMAIN
@mydomain.com mailreplyuser@localhost
Os direitos de arquivo em /var/www/hmtl/
(via ls -la
):
drwxrws--- 4 www-data www-data 4096 Mar 13 00:41 .
drwxr-xr-x 3 root root 4096 Mar 13 01:02 ..
-rw-r--r-- 1 root www-data 8 Mar 13 00:15 test.txt
A mensagem de erro
Mar 13 10:13:21 myservername postfix/pipe[3545]: 774F3FEB3B: to=<mailreplyuser@localhost>, orig_to=<[email protected]>, relay=mailreply, delay=0.13, delays=0.07/0/0/0.06, dsn=5.3.0, status=bounced (Command died with status 1: "/usr/lib/postfix/sbin/pipemailreply". Command output: cat: /var/www/html/test.txt: Permission denied )