Ir al contenido principal

Tu web está enviando correos masivos sin tu conocimiento: spam a través del formulario de contacto

Escrito por Javier Galeote

Síntoma

Empiezas a recibir mensajes de error de envío del propio servidor del tipo:

"Domain tudominio.com has exceeded the max emails per hour (280/250) allowed. Message will be reattempted later"

O ves que tu bandeja de entrada se llena con cientos de rebotes de correos que nunca enviaste, con contenido sospechoso (criptomonedas, USDT, BTC, supuestos servicios financieros, enlaces a wallets, etc.). Suelen estar dirigidos a destinatarios desconocidos.

Por qué ocurre

Los correos se están enviando desde tu propio sitio, generalmente a través del formulario de contacto de tu web (WordPress, PrestaShop, Joomla, etc.). Bots automatizados detectan que el formulario es vulnerable y lo usan para enviar spam masivo, suplantando direcciones y aprovechando que muchos formularios envían correo sin autenticación.

Las dos causas habituales son:

  • Captcha demasiado simple o inexistente: un captcha clásico de "selecciona la casilla" o "haz una suma" lo resuelven los bots sin problema.

  • Envío con la función mail() de PHP sin autenticación SMTP: muchos plugins y módulos de formularios usan por defecto mail(), que envía a través del servidor sin credenciales. Esto facilita que los bots disparen envíos como si fuera el propio servidor quien escribe.

Cómo confirmarlo

Si te llegan rebotes en una cuenta tipo balear@TU_SERVIDOR.tropicalserver.net (o similar), o ves que el remitente real es esa cuenta por defecto del servidor (no una cuenta tuya con autenticación), es la señal más clara: los envíos los está haciendo el servidor en nombre de tu dominio sin pasar por una cuenta de correo real. Eso solo ocurre con la función mail() sin autenticación.

Cómo solucionarlo

  1. Activar reCAPTCHA v3 de Google en el formulario de contacto. A diferencia del v2 (la casilla "no soy un robot") o de captchas hechos a mano, el v3 evalúa el comportamiento del visitante y bloquea bots sin requerir interacción del usuario legítimo. La mayoría de plugins y módulos de formularios lo soportan de forma nativa.

  2. Configurar el formulario para que envíe por SMTP autenticado, en lugar de la función mail() de PHP. En WordPress se hace con plugins como WP Mail SMTP; en PrestaShop, configurando los parámetros SMTP en Parámetros avanzados > Email; en Joomla, en la configuración global de correo. Hay que crear una cuenta de correo en cPanel y usar sus credenciales.

  3. Mientras se aplican las medidas anteriores, crear filtros temporales para descartar los rebotes en tu cuenta y evitar saturación.

  4. Revisar también que no haya plugins/módulos obsoletos que estén abriendo la web a estos abusos. Mantener el CMS y todos sus extras actualizados es parte del cierre del problema.

Por qué es importante actuar rápido

  • El servidor aplica un límite de envíos por hora por dominio. Cuando lo superas, los correos legítimos también empiezan a rebotar ("max emails per hour exceeded"), porque la cuota es global.

  • Si tu dominio se usa para spam, los grandes proveedores (Gmail, Outlook, etc.) pueden marcar tu reputación como sospechosa y todos tus correos legítimos acabarán en SPAM.

  • En casos extremos, el servicio antispam puede bloquear el envío total desde tu dominio hasta que se corrija el origen.

Reforzar la seguridad después

Una vez aplicado el reCAPTCHA v3 y el SMTP autenticado, la salida de spam debe cesar en cuestión de minutos. Si pasadas unas horas siguen llegando rebotes, hay que volver a revisar el formulario (puede haber más de uno en la web) y considerar añadir honeypots ocultos al formulario o herramientas como Akismet/CleanTalk para detectar patrones automáticos.

¿Ha quedado contestada tu pregunta?