Correo electrónico desde WordPress
Módulo 9: Correo electrónico, posicionamiento (SEO), RGPD, mantenimiento y migración · Tiempo de lectura: 9 minutos
Objetivo de aprendizaje: Después de esta lección podrá asegurarse de que el correo que sale de WordPress (formularios, pedidos, enlaces de contraseña) llegue de forma fiable.
Conceptos clave: wp_mail, PHP mail(), remitente (From), Reply-To, SMTP, plugin SMTP, buzón autenticado, servicio de correo transaccional, SPF, DKIM, DMARC, alineación, MX en otro proveedor, correo de prueba
WordPress envía más correo del que piensa
Su sitio envía correo en los siguientes casos: un formulario de contacto rellenado, un pedido (al cliente y a usted), un nuevo usuario, una contraseña olvidada, un nuevo comentario, una actualización automática, un error crítico (lección 5.4). Si ese correo no llega, a menudo solo se da cuenta cuando un cliente llama: «he rellenado el formulario tres veces».
Cómo envía correo WordPress por defecto
WordPress envía todo a través de la función wp_mail. Por defecto, esta entrega el correo a la función de PHP mail(), que lo pasa al programa de correo del servidor web. Esto funciona, pero tiene tres puntos débiles:
- El remitente. Sin configuración, WordPress envía como
wordpress@example.com. Si esa dirección no existe, o si el remitente es distinto de su propio dominio, los destinatarios desconfían. - SPF, DKIM y DMARC. Los servidores de correo receptores comprueban si el servidor que entrega el correo tiene permiso para enviar en nombre de su dominio (SPF), si el correo tiene una firma digital válida de su dominio (DKIM), y cuál es la política de su dominio si algo no cuadra (DMARC). En el curso de DNS (lecciones 4.3 a 4.5) puede leer cómo funciona esto. El correo enviado a través del servidor web solo pasa esas comprobaciones si su DNS y el servidor están configurados en consecuencia.
- Correo en otro proveedor. Si su correo electrónico no está alojado en su proveedor de hosting sino, por ejemplo, en Microsoft 365 o Google Workspace (sus registros MX apuntan allí), el correo enviado a través del servidor web a menudo no coincide con su SPF y DKIM. Además, algunos servidores web intentan entregar localmente el correo dirigido a su propio dominio en lugar de hacerlo a través del MX, de modo que nunca llega a su buzón real.
Configurar bien el remitente y Reply-To
Un error frecuente en los formularios de contacto: usar como remitente (From) la dirección del visitante. Parece lógico («así puedo pulsar responder»), pero su servidor no tiene permiso para enviar correo en nombre de @gmail.com o @hotmail.com. Esos dominios tienen una política DMARC estricta, por lo que el destinatario rechaza el correo o lo marca como spam.
Lo correcto es:
From: Website <website@example.com> (una dirección de su propio dominio)
Reply-To: bezoeker@example.net (la dirección que indicó el visitante)
To: info@example.comCon Reply-To, su respuesta llega igualmente al visitante. Prácticamente todos los plugins de formularios tienen esos dos campos por separado.
SMTP: enviar a través de un buzón real
La solución más fiable es hacer que WordPress envíe correo mediante SMTP: la misma forma en que su programa de correo envía mensajes, con un nombre de usuario y una contraseña de un buzón real. Esto se hace con un plugin SMTP (por ejemplo WP Mail SMTP, FluentSMTP o Post SMTP; hay más). El plugin intercepta wp_mail y envía el correo a través del servidor que usted indique:
| Opción | Para quién |
|---|---|
El buzón de su propio proveedor de hosting (por ejemplo website@example.com en el servidor de correo de su paquete de hosting) | La mayoría de sitios pequeños con el correo en el mismo proveedor |
| Su correo en Microsoft 365 o Google Workspace | Si su correo está ahí; a menudo mediante una conexión especial en el plugin (OAuth) en lugar de una contraseña, porque esos servicios limitan cada vez más el inicio de sesión SMTP normal |
| Un servicio de correo transaccional (un servicio especializado en el envío de correo desde sitios web y aplicaciones) | Tiendas online y sitios que envían mucho correo |
Ventajas: el correo pasa por un servidor que ya está configurado con SPF y DKIM para su dominio, el remitente es una dirección existente y muchos plugins mantienen un registro (log), de modo que puede ver qué se envió y qué falló.
Tenga en cuenta algunos aspectos:
- Use una dirección de correo independiente para el sitio (por ejemplo
website@), no su propio buzón. Si el sitio es hackeado y la contraseña se filtra, esa dirección puede sustituirse sin consecuencias. - La contraseña SMTP se guarda en la base de datos o en wp-config.php. Use, siempre que sea posible, una contraseña de aplicación o una conexión sin contraseña.
- Un registro de correo contiene datos personales (quién envió qué). No deje que crezca indefinidamente (lección 9.3).
SPF, DKIM y DMARC para su sitio
Sea cual sea el servidor que envía el correo, su DNS debe estar en consonancia:
- SPF: el registro SPF de su dominio debe mencionar el servidor que entrega el correo. Si envía a través del servidor de correo de su proveedor de hosting, normalmente ya figura ahí. Si envía a través de un servicio transaccional, añada su
include:en el mismo registro SPF (nunca un segundo registro SPF, curso de DNS, lección 4.3). - DKIM: el servidor que envía debe firmar el correo con una clave que figura en su DNS (
<selector>._domainkey.example.com). Tanto en su proveedor de hosting como en los servicios transaccionales se activa esto; el servicio le proporciona los registros. - DMARC: un registro en
_dmarc.example.com. Empiece conp=noney endurézcalo cuando todo funcione correctamente (curso de DNS, lección 4.5).
Para DMARC, el dominio del From debe estar alineado con el dominio que supera SPF o DKIM. Por eso es tan importante que el From use su propio dominio.
Probar
- Muchos plugins SMTP tienen un botón de Enviar correo de prueba. Envíe uno a una dirección de otro proveedor (una dirección de Gmail u Outlook.com) y compruebe si llega a la bandeja de entrada.
- Observe en ese correo las cabeceras («Mostrar original» o «Mostrar origen»). Busque
spf=pass,dkim=passydmarc=pass. - Rellene su propio formulario de contacto y compruebe si el correo llega, con el Reply-To correcto.
- Pruebe también un enlace de contraseña y, en una tienda, un pedido de prueba.
Herramientas en línea como mail-tester.com le dan una puntuación y una explicación; con la Verificación de correo electrónico de su proveedor de hosting (en WebOké se llama así) o con internet.nl comprueba la parte del DNS.
En la práctica: así se ve en un panel
Como ejemplo usamos DirectAdmin y un plugin SMTP. En otros proveedores y plugins los campos se llaman de forma parecida.
- Cree en DirectAdmin, en Cuentas de correo electrónico, un buzón
website@example.comcon una contraseña segura. - Busque en su proveedor de hosting la configuración de correo saliente (nombre del servidor, puerto 465 o 587, cifrado).
- Introduzca esos datos en el plugin SMTP, con
website@example.comcomo remitente. Active «forzar remitente», para que otros plugins también usen esta dirección. - Compruebe en Gestión de DNS que existen los registros SPF, DKIM y DMARC de su dominio.
- Envíe un correo de prueba y lea las cabeceras.
Resumen
- WordPress envía a través de wp_mail y, por defecto, mediante PHP mail(); el remitente y el DNS determinan si llega.
- Configure el remitente (From) con una dirección de su propio dominio y la dirección del visitante en Reply-To.
- Un plugin SMTP con un buzón independiente o un servicio transaccional es lo más fiable, con un registro.
- El SPF debe mencionar el servidor que envía (en un único registro), el DKIM debe estar activado, el DMARC debe empezar con p=none.
- Haga la prueba con una dirección de otro proveedor y lea spf, dkim y dmarc en las cabeceras.
Cuestionario
Ejercicio
Ejercicio A9.1: ¿Está su dominio listo para enviar correo desde su sitio? Introduzca su dominio, la dirección que su sitio usa como remitente y el servidor a través del cual su sitio envía correo (el nombre del servidor SMTP, o «servidor web» si no ha configurado nada). Introduzca también el selector DKIM si lo conoce. El programa comprueba: que la dirección del remitente pertenece a su dominio, que existe exactamente un registro SPF y que permite al servidor indicado, que existe un registro DKIM en el selector (o indica que sin selector no puede comprobarlo), y que existe un registro DMARC válido.
Ejercicio D9.1: Leer un correo de prueba. Envíe un correo de prueba desde su sitio (el botón de prueba de su plugin SMTP, o un enlace de contraseña a una cuenta de prueba) a una dirección de otro proveedor. Abra las cabeceras de ese correo y anote los resultados de spf, dkim y dmarc, y qué dominio aparece en cada uno. Después rellene su propio formulario de contacto y compruebe: ¿llega el correo y «responder» va a la dirección que indicó en el formulario?
Ejercicio D9.1: Leer un correo de prueba
Este ejercicio lo hace usted mismo; nadie lo revisa. Marque lo que haya hecho y señale el ejercicio como realizado.
Tres resultados (pass, fail o none) con un dominio, por ejemplo "spf=pass smtp.mailfrom=sudominio.es". Si hay un fail, indique el siguiente paso (completar el SPF, activar DKIM, plugin SMTP).
Sus marcas y notas se quedan solo en este navegador; no las enviamos a ningún sitio. Si ha iniciado sesión, en Mis cursos solo guardamos que ha realizado el ejercicio.
Para saber más
Estos artículos describen los pasos en los paneles de WebOké; en otros paneles funcionan de forma parecida.
- No se puede enviar correo desde PHP: los registros MX apuntan a otro lugar
- ¿Cómo consigo el remitente correcto con mail() en PHP? SMTP
- Un formulario de contacto en su sitio web: cómo hacer que los campos se envíen por correo electrónico y evitar el spam
- Cómo funciona el envío de correos (SMTP)
- Manual de DirectAdmin 18.10: No puedo enviar correo electrónico
- Curso gratuito de DNS 4.3: SPF: ¿quién puede enviar correo en nombre de su dominio?
- Curso gratuito de DNS 4.4: DKIM: la firma de su correo
- Curso gratuito de DNS 4.5: DMARC: qué deben hacer los destinatarios con el correo falso
