El problema
Me gustaría que postfix canalice los correos electrónicos a un script que opere en archivos propiedad del www-data
grupo ubicado en /var/www/
. Sin embargo, recibo mensajes de error que indican privilegios insuficientes. Al dejar que se ejecute el script whoami
, puedo confirmar que lo ejecuta el usuario correcto scriptuser
(como se establece en mi /etc/postfix/transport
archivo). También puedo confirmar que el usuario tiene suficientes derechos de acceso, ya que no se producen errores al ejecutar el script usando sudo -u scriptuser /path/to/script
.
Por tanto, estoy bastante confundido y un poco perdido. ¿Cómo es posible que el usuario tenga derecho de acceso a los archivos, Postfix ejecute el script como este usuario específico, pero sigo recibiendo el permission denied
mensaje?
También intenté agregar default_privs = www-data
a /etc/postfix/main.cf
, como se sugiere enaquísin éxito. Habilitar el acceso a través de chmod o+rx
hace el trabajo, pero lo consideraría potencialmente peligroso ya que cualquier persona con acceso de shell al servidor podría leer esos archivos.
Los archivos de configuración
# 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
Los derechos de archivo en /var/www/hmtl/
(a través de 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
El mensaje de error
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 )
Respuesta1
Cambié "user=scriptuser" a "user=scriptuser:scriptgroup" y pude hacerlo funcionar.