Configurar envío de correos en Linux+PHP

por David Abad
Envio de correos

Existen herramientas que facilitan la tarea de configurar el envío de correo electrónicos en servidores Linux, permitiendo el envío a través de servidores SMTP. Una vez instaladas y configuradas, estas herramientas también pueden ser utilizadas a nivel de PHP para el envío de correo electrónicos mediante las funciones de mailing que el lenguaje incorpora de forma nativa, sin tener que recurrir a librerías externas.

Instalar y configurar MSMTP

Para configurar el envío de correos electrónicos en un servidor Linux utilizaremos el software MSMTP, que permite configurar un servidor SMTP para estos envíos.

1. Instalar MSMTP:

sudo apt-get update
sudo apt-get install msmtp

2. Crear un fichero de configuración /etc/msmtprc indicando las credenciales del servidor SMTP a utilizar:

defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account default
host xxxxxxxxx
port xxx
from [email protected]
auth on
user [email protected]
password xxxxxxx

3. Ajustar los permisos del fichero de configuración:

sudo chown $USER /etc/msmtprc
chmod 600 /etc/msmtprc

4. Comprobar el correcto funcionamiento del envío de correos:

echo "Test" | msmtp [email protected]

Configurar envío de correos en PHP

Una vez instalado el software MSMTP en nuestro sistema, podemos configurar PHP para que utilice esta herramienta como medio para el envío de correos electrónicos.

Para ello, crearemos un fichero INI de configuración con el siguiente contenido:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"

Este fichero puede tener cualquier nombre (XXX.ini) y debe almacenarse en el directorio que PHP reserva para sus ficheros de configuración. En la mayoría de sistemas Linux (basados en Debian), la ruta es: /etc/php/<VERSION>/XXX/conf.d/XXX.ini

Probando envío de correos en PHP

Una vez instalado el software MSMTP y realizadas las configuraciones necesarias en PHP, podremos realizar envíos de correos electrónicos utilizando las funciones de mailing nativas de PHP.

Para comprobar que todo es correcto, podemos crear un fichero de código PHP con el siguiente contenido:

<?php
$to = '[email protected]';
$subject = 'Test';
$message = 'Test';
$headers = 'From: [email protected]';

mail($to, $subject, $message, $headers);

Tras esto, podemos lanzar nuestro código desde terminal para comprobar si recibimos correctamente el correo electrónico:

php <fichero>.php

Registro SPF: Evita que tus correos lleguen a SPAM

Es importante tener en cuenta que, cuando un servicio de correo electrónico (Outlook, Gmail, etc.) recibe un mail, lleva a cabo una serie de comprobaciones para verificar si el correo es fiable y puede ser mostrado al usuario sin problemas, o si por el contrario, es sospechoso y debe clasificarse como SPAM.

Una de estas comprobaciones es el registro SPF del dominio que envía el correo que, en la mayoría de los casos, debemos configurar para evitar problemas con el envío de correos desde nuestros servidores.

Servidor de correo para desarrollo en localhost

Si estamos buscando una forma de recibir correos en un entorno local, durante el proceso de desarrollo de un proyecto, una opción muy interesante es la herramienta Mailhog.

Mailhog es una herramienta que proporciona un servidor SMTP para entornos de desarrollo locales, de modo que todos los correos salientes se dirigen a una bandeja de entrada virtual accesible a través de una interfaz web. Esto es de gran utilidad para probar los flujos de emails en entornos locales, evitando envíos accidentales a direcciones de email reales.

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos