El otro día estaba intentando enviar mails desde una aplicación web, corriendo en un Apache con un servidor con Red Hat y, qué raro, los correos no se enviaban y la función siempre daba fallo. El código PHP sabía que estaba correcto y con Postfix también correctamente configurado, tuve que investigar un poco más el motivo.
Tras ver un poco por los logs, concretamente en el fichero relacionado con el sistema de correo (/var/log/maillog), vi que se estaba llenando de líneas como las que siguen:
postfix/sendmail[8500]: fatal: chdir /var/spool/postfix: Permission denied postfix/sendmail[9316]: fatal: chdir /var/spool/postfix: Permission denied postfix/sendmail[9764]: fatal: chdir /var/spool/postfix: Permission denied
Tras un poco más de investigación me acordé de que Red Hat trae SELinux y que probablemente me estuviese molestando un poco. Lo primero que hice fue comprobarlo para estar seguro y nada mejor para ello que el comando getsebool.
shell> getsebool -a | grep mail allow_postfix_local_write_mail_spool --> on httpd_can_sendmail --> off logging_syslogd_can_sendmail --> off
Bien, efectivamente aquí tenemos el problema. La variable httpd_can_sendmail está a off, con lo cual deshabilita|bloquea|prohibe cualquier posibilidad de envío de correos desde el servidor. Así que vamos a habilitarla.
shell> setsebool httpd_can_sendmail 1
Tras este sencillo comando, comprobamos que el nuevo valor se estableció correctamente,
shell> getsebool -a | grep httpd_can_sendmail httpd_can_sendmail --> on
Y ahora desde la aplicación web ya me permite enviar correos de forma satisfactoria.
No hay comentarios :
Publicar un comentario