Si gestionas tu propio servidor web y de correo, más de una vez te habrás encontrado con problemas a los que no encuentras solución y terminas buscando por qué te pasa si antes todo funcionaba bien. Este artículo es para intentar ayudarte cuando tu cms, en este caso prestashop da el error More than one «from» person al mandar correos.
Si hemos tenido problemas anteriores o nos hace falta una solución para ISPConfig que no envía correos desde los dominios dados de alta, y los hemos solucionado, podría darse el siguiente caso en nuestro servidor.
Al enviar correos desde consola de comandos los correos llegan bien, incluso si creamos un archivo php para enviar un correo y lo colocamos en una de las webs que tenemos activas, accedemos desde el navegador, y también llega perfectamente el correo, pero ahora vamos a nuestra instalación de prestashop, le damos a enviar el correo de prueba, o desde el formulario de contacto y, o bien nos da un error, o nos indica que se ha enviado pero nunca llega.
More than one «from» person en prestashop 1.6
Si estamos teniendo este problema, tendremos que entrar en nuestro servidor mediante SSH, por ejemplo con putty. Una vez estemos en la consola nos iremos al log de errores del apache, en centos de la siguiente forma:
tailf /var/log/httpd/error_log
Si no tenemos otros errores deberíamos ver una lista parecida a la siguiente
More than one "from" person More than one "from" person More than one "from" person
En caso de que haya otros errores en la web veremos el mensaje mezclado entre otros similares al que pongo en la lista de arriba. Voy a tratar de explicar por qué pasa esto, aunque no hay un motivo exacto pero sí una causa.
Este mensaje nos aparece cuando enviamos parámetros adicionales al servicio de correo que son incorrectos, por eso nos funciona nuestro php que hemos creado nosotros mismos, pero no nos funciona el comando mail() en prestashop ni algún otro cms como joomla.
Para solucionarlo vamos a revisar dos puntos, para asegurarnos de que no dejamos ningún cabo suelto, en primer lugar, y mucho menos probable es la configuración de sendmail. Iremos a editar el archivo de configuración de php y buscaremos la línea donde nos indica la ruta a sendmail, pero no en /etc/php.ini.
En lugar de eso, y como estamos usando ISPConfig, debes saber que cada dominio que creamos tiene su propia configuración para php, por lo que la ruta donde vamos a encontrar el archivo que tenemos que modificar será una diferente. Dependiendo de nuestro dominio, que tendremos que mirarlo en el panel, nos quedará una ruta parecida a esta:
nano /var/www/conf/web2/php.ini
Donde web2, será el número de web que nos haya creado el ispconfig, simplemente entramos en la configuración del dominio y ahí veremos las carpetas a las que apunta y la id de la web, una vez lo tengamos y sepamos la ruta proseguiremos.
La línea de sendmail debería ser similar a esta
sendmail_path = /usr/sbin/sendmail -t -i
Si al final de ella encontramos algún comando -f [email protected], por ejemplo
sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]
debemos eliminarlo y dejarlo como os he puesto antes, solo hasta el -i es correcto. Esto eliminará el correo adicional que se esté agregando al mandar emails. Aunque por supuesto este caso es muy poco probable ya que habría que configurar este parámetro cuando se realiza la instalación del servicio.
Por otro lado, y sin cerrar el archivo php.ini, tenemos una opción para forzar parámetros adicionales en el mail, la cual vamos a descomentar pasando de esto:
;mail.force_extra_parameters =
a esto
mail.force_extra_parameters =
Este cambio lo que va a hacer es eliminar la quinta variable del comando mail() en php, ya que le estamos forzando una variable vacía, y por tanto no se podrán utilizar múltiples from, que es lo que nos estaba dando error. Si tenemos una tienda en prestashop solo nos interesa tener un correo desde el que se envían todos los contactos de la tienda a través del cms, por lo que no sería necesario usar esta variable.
Una vez lo hayamos descomentado guardaremos el archivo y reiniciaremos el servicio de apache con
service httpd restart
En este momento probaremos a ejecutar la prueba de correo desde nuestro cms y ya deberíamos empezar a recibirlos con normalidad.
Si tienes problemas para enviar correos con ISPConfig también desde consola, este otro artículo puede que te ayude.