Cómo Configurar msmtp con PHP para Enviar Correos en WordPress sin Plugins

Una solución sencilla y ligera para tu VPS

Este blog lo tengo alojado en un VPS con Debian 12, y créeme, el envío de correos me dio más de un dolor de cabeza al principio. Si alguna vez has usado la función mail() de PHP en WordPress, seguro conoces sus fallos: correos que caen en spam, envíos que nunca llegan o la falta de una autenticación SMTP como Dios manda. Y si, como yo, tienes un VPS con recursos justitos, cargar tu WordPress con plugins para manejar eso es como pedirle a un caballo agotado que lleve una maleta extra: más CPU y memoria gastadas cuando no siempre te sobran.

Aquí es donde entra msmtp, una herramienta ligera que reemplaza a Sendmail y te da control total sobre cómo se envían tus correos. Sin plugins, sin complicaciones innecesarias: solo correos que llegan a donde deben, menos carga en tu servidor y la libertad de personalizar todo a tu gusto.

¿Qué es msmtp y por qué deberías probarlo?

msmtp es un cliente SMTP simple y directo que envía correos desde tu servidor usando protocolos seguros. Nada de adornos, solo lo esencial. Comparado con plugins como WP Mail SMTP o Easy WP SMTP, tiene ventajas claras:

  • Bajo consumo: Solo usa recursos cuando envía un correo, sin dejar procesos pesados corriendo todo el tiempo.
  • Flexibilidad total: Puedes configurar varias cuentas SMTP o incluso reglas avanzadas según quién envía o recibe el correo.
  • Independencia: No depende de WordPress ni de sus actualizaciones, así que no te preocupas por compatibilidad.

Es perfecto para VPS pequeños, como el mío, servidores sin interfaz gráfica o proyectos donde necesitas un SMTP a medida sin complicarte la vida.

Lo que necesitas antes de empezar

Armé esta guía pensando en cómo configuré mi propio VPS, así que esto es lo que vas a necesitar:

  • Un VPS con Debian 12 (o alguna distro basada en Ubuntu).
  • Acceso al servidor con permisos de root o al menos con sudo a mano.
  • Una cuenta de correo con SMTP (puede ser Gmail, Outlook o cualquier proveedor que te ofrezca eso).
  • Un mínimo de comodidad con la terminal (si sabes moverte con nano o vim para editar archivos, ya vas bien).

En mi caso, utilizo Nginx como servidor web y PHP-FPM para gestionar PHP. Esta configuración es común en VPS modernos debido a su rendimiento y eficiencia. Si estás usando Apache, no te preocupes; la lógica general de la configuración de msmtp será similar, aunque algunos detalles como la ubicación de archivos de configuración y comandos pueden variar ligeramente.

Si encuentras diferencias en los pasos debido a tu configuración, es posible que necesites investigar un poco sobre cómo adaptarlos a tu sistema. Sin embargo, la mayoría de los pasos te servirán igual.

Si te gustaría una guía más detallada sobre cómo configurar msmtp con Apache y PHP, incluyendo optimizaciones avanzadas, ¡déjame saber en los comentarios! Si hay suficiente interés, exploraremos ese tema en un próximo artículo.

Paso 1: Instalar y configurar msmtp

¿Si te sientes listo? Vamos al grano.

Instalación

Primero, actualiza tu servidor e instala msmtp. Abre la terminal y escribe:


sudo apt update
sudo apt install msmtp

¡Fácil y rápido!

Configurar el SMTP

Ahora toca crear un archivo de configuración. Puedes hacerlo globalmente en /etc/msmtprc (ideal para este caso) o por usuario en ~/.msmtprc. Vamos con la opción global:


sudo nano /etc/msmtprc

Pega esta configuración de ejemplo (ajustada para Gmail):


# Configuración básica
account default
host smtp.gmail.com
port 587
auth on
user [email protected]
password tu_contraseña
tls on
tls_starttls on
logfile ~/.msmtp.log

Sustituye [email protected] y tu_contraseña por los datos de tu cuenta. Ojo: si usas Gmail con verificación en dos pasos, necesitas una contraseña de aplicación (la generas en la configuración de seguridad de tu cuenta de Google). Guarda el archivo con Ctrl+O, presiona Enter y sal con Ctrl+X.

Para que nadie más pueda echarle un ojo tus credenciales, protege el archivo:


sudo chmod 600 /etc/msmtprc

Probar que todo funciona

Envía un correo de prueba para asegurarte de que msmtp está bien configurado:


echo "Correo de prueba desde msmtp" | msmtp --debug --from=default -t [email protected]

Cambia [email protected] por un correo al que tengas acceso. Si algo falla, echa un vistazo al archivo de log en ~/.msmtp.log para ver qué pasa.

Paso 2: Conectar msmtp con PHP

Para que PHP deje de lado su mail() predeterminada y use msmtp, solo necesitas ajustar un par de detalles.

Editar php.ini

Busca el archivo php.ini de tu servidor. Si no sabes dónde está, usa: Primero, encuentra el archivo php.ini que usa tu servidor. Si no tienes idea de dónde está, este comando te lo dice:


php --ini

O puedes buscar en carpetas como /etc/php/8.x/fpm/php.ini (con Nginx, mi caso, suele estar ahí si usas PHP-FPM). Si utilizas Apache, la ruta podría ser similar a /etc/php/8.x/apache2/php.ini. Ábrelo con:


sudo nano /etc/php/8.x/apache2/php.ini

Busca la línea sendmail_path (usa Ctrl+W en nano para encontrarla rápido) y cámbiala por:


sendmail_path = "/usr/bin/msmtp -t"

Guarda los cambios con Ctrl+O, Enter, y sal con Ctrl+X.

Reiniciar PHP-FPM (es mi caso, nada de Apache aquí)

Aplica los cambios reiniciando PHP-FPM:


sudo systemctl restart php8.x-fpm 

(Nota: cambia 8.x por la versión de PHP que tengas instalada, como 8.1 o 8.2. Si no estás seguro, usa php -v para verificarlo).  

Probar con un script PHP

Crea un archivo test.php en la raíz de tu sitio (o donde prefieras):


<?php
mail('[email protected]', 'Asunto de prueba', 'Este es un correo enviado con msmtp y PHP.');
echo "Correo enviado. Revisa tu bandeja (y el spam, por si acaso).";
?>

Actualiza [email protected] con tu email, luego abre el archivo en tu navegador (por ejemplo, tudominio.com/test.php) o ejecuta php test.php desde la terminal. Revisa si el correo llega a tu bandeja de entrada de tu cuenta de correo.

Paso 3: Probarlo en WordPress

Con msmtp y PHP listos, toca ver cómo funciona en WordPress:

  • Restablecer contraseña: Ve a la página de login, pide un enlace de recuperación y verifica que te llegue el correo.
  • Notificaciones: Publica un comentario (si las tienes activadas) y comprueba si recibes la notificación.
  • Formularios: Si usas uno (aunque no sea el foco), envía un mensaje de prueba.

¿Algo no funciona?

  • Permisos: Asegúrate de que /etc/msmtprc tenga chmod 600.
  • Prueba la entrega: Usa herramientas como Mail Tester para checar la calidad de tus envíos.
  • Protege las credenciales: En lugar de dejarlas en el archivo, considera variables de entorno o herramientas como pass.
  • Controla el volumen: Si envías muchos correos, ajusta límites para no parecer spam.

Trucos para optimizar y segurizar

  • SPF, DKIM y DMARC: Configura estos registros en tu dominio para que los servidores confíen en tus correos.
  • Prueba la entrega: Usa herramientas como Mail Tester para chequear la calidad de tus envíos.
  • Protege las credenciales: En lugar de dejarlas en el archivo, considera variables de entorno o herramientas como pass.
  • Controla el volumen: Si envías muchos correos, ajusta límites para no parecer spam.

¿Por qué msmtp y no un plugin?

  • Rendimiento: Sin plugins, tu WordPress no carga procesos extras.
  • Control: Tú decides cómo funciona todo, sin intermediarios.
  • Estabilidad: Menos riesgos de fallos por actualizaciones.
  • Seguridad: Al manejarlo en el servidor, reduces vulnerabilidades.

Para finalizar

Configurar msmtp con PHP es una forma práctica de enviar correos desde WordPress sin plugins, ideal para VPS ligeros. Con pocos comandos, tendrás un sistema fiable, seguro y que no depende de terceros. ¿Te animas a probarlo y hacer tu WordPress más ágil?

Si tienes dudas o algo se atora en el camino, ¡deja un comentario abajo y te echo una mano!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.