Web hosting - Buenas prácticas de envío de correo electrónico

Ver como Markdown

Descubra por qué la función PHP mail() no es recomendable en un alojamiento compartido y cómo configurar un envío SMTP autenticado

Objetivo

Para que sus correos electrónicos lleguen correctamente a sus destinatarios, OVHcloud dispone de una infraestructura dedicada al envío saliente, con filtrado antispam automático y supervisión continua de la reputación de los servidores. Para aprovecharla al máximo, se recomienda enviar sus correos electrónicos mediante SMTP autenticado en lugar de la función PHP mail() nativa. Este enfoque garantiza que cada correo electrónico se emita con una identidad verificable, lo que mejora significativamente la entregabilidad y reduce el riesgo de clasificación como spam.

Esta guía le presenta las buenas prácticas y recomendaciones de OVHcloud para enviar correos electrónicos de forma fiable y segura desde un alojamiento compartido, ya sea que gestione un sitio WordPress, otro CMS o una aplicación PHP.

Requisitos


Acceso al área de cliente de OVHcloud

  • Enlace directo:
  • Ruta de navegación: Web Cloud > Alojamientos > Seleccione su alojamiento web

Procedimiento

1. mail() o SMTP autenticado: ¿qué diferencia hay para usted?

Lo que OVHcloud hace para proteger sus envíos

OVHcloud supervisa de forma permanente la reputación de sus servidores de envío y filtra automáticamente los mensajes sospechosos, para que sus correos electrónicos legítimos no se vean afectados. Pero esta protección tiene un límite: la función PHP mail() no realiza ningún control sobre la identidad del remitente declarado en el correo electrónico (campo From:). Por tanto, un correo electrónico enviado mediante mail() puede parecer que procede de cualquier dirección, lo que basta para activar los filtros de los servidores destinatarios (Gmail, Outlook, etc.) y comprometer la entregabilidad de sus propios envíos.

Correos electrónicos sin firma fiable

La función mail() envía correos electrónicos sin garantizar la identidad del remitente. Sin embargo, los servidores destinatarios (Gmail, Outlook, etc.) verifican que el correo electrónico proceda efectivamente de un servidor autorizado por su dominio, gracias a los registros SPF y DKIM. Con mail(), esta verificación falla a menudo: el mensaje puede entonces acabar en la carpeta de spam o ser rechazado.

El envío mediante SMTP autenticado resuelve este problema: el correo electrónico es emitido por el servidor OVHcloud autorizado para su dominio, con la firma correcta.

Warning

Un uso abusivo de la función mail() puede provocar el bloqueo automático de los envíos de su alojamiento. Si observa que sus correos electrónicos ya no se envían, consulte la guía Gestionar los mensajes de correo automatizados.

Formularios abiertos: un vector de abuso adicional

Un formulario de contacto accesible públicamente, sin mecanismo de protección, es un objetivo preferente para los robots. Estos lo aprovechan para desencadenar el envío de miles de correos electrónicos en pocos minutos a través de su alojamiento, provocando el bloqueo de la IP compartida y perjudicando a todos los clientes del clúster.

Implemente las siguientes protecciones en cualquier formulario que desencadene un envío de correo electrónico:

  • Captcha: integre un sistema de verificación (Google reCAPTCHA v3, hCaptcha o un cálculo aritmético sencillo) para bloquear los envíos automatizados.
  • Limitación de la tasa: limite el número de envíos por dirección IP en el servidor para evitar los abusos en ráfaga.
  • Validación estricta de las entradas: verifique y depure todos los campos del formulario antes de utilizarlos en un correo electrónico; nunca confíe en los datos introducidos por el usuario.
Warning

La ausencia de captcha en un formulario de envío abierto es una de las causas más frecuentes de bloqueo de los alojamientos compartidos por envío de spam. Esta protección es indispensable independientemente del método de envío utilizado.

2. La buena práctica: utilizar una cuenta de correo electrónico OVHcloud con SMTP autenticado

Principio

Envíe sus correos electrónicos mediante una conexión SMTP autenticada al servidor de mensajería de OVHcloud, utilizando una cuenta de correo electrónico asociada a su dominio (por ejemplo, contact@mydomain.ovh).

Este enfoque presenta tres ventajas principales:

  • Autenticación garantizada: el servidor OVHcloud verifica su identidad antes de aceptar el correo electrónico.
  • SPF y DKIM funcionales: el correo electrónico es emitido por un servidor autorizado para su dominio y firmado correctamente.
  • Trazabilidad: cada envío está asociado a una cuenta identificada, lo que permite intervenir rápidamente en caso de abuso.

Por qué el campo From: debe pertenecer a su dominio

El campo From: de su correo electrónico debe obligatoriamente contener una dirección que pertenezca a su dominio (por ejemplo, contact@mydomain.ovh), y esta dirección debe corresponder a la cuenta SMTP utilizada para la autenticación.

Si el campo From: no corresponde al dominio autorizado en el registro SPF, o si la firma DKIM no coincide, los servidores de mensajería destinatarios (Gmail, Outlook, etc.) pueden rechazar o clasificar el correo electrónico como spam.

Tip

Para maximizar la entregabilidad, compruebe que los registros SPF, DKIM y DMARC estén correctamente configurados en su zona DNS. Gmail y Yahoo Mail los exigen ahora para los remitentes de gran volumen. Consulte nuestras guías:

Formularios de contacto: campo From: fijo y Reply-To: del usuario

Un error frecuente consiste en colocar la dirección de correo electrónico introducida por el usuario en el formulario directamente en el campo From:. Por ejemplo, un visitante introduce usuario@gmail.com y el script utiliza esta dirección como remitente.

Este comportamiento es incorrecto por dos razones:

  • El registro SPF de su dominio no autoriza a los servidores de Gmail (o de cualquier otro proveedor externo) a enviar en su nombre → fallo del control SPF.
  • Está enviando "en nombre de" una dirección que no le pertenece → alto riesgo de clasificación como spam o de rechazo.

El esquema correcto para un formulario de contacto:

Campo de correo electrónicoValorFunción
From:contact@mydomain.ovh (dirección fija del sitio)Remitente autenticado, nunca cambia
Reply-To:Dirección introducida por el usuario en el formularioPermite responder directamente al usuario
Subject:Asunto del mensaje, con prefijo (por ejemplo, [Contact])Identifica fácilmente los mensajes del formulario

Así, cuando responda al correo electrónico recibido, su cliente de mensajería envía la respuesta a la dirección del usuario a través del campo Reply-To:, sin comprometer la autenticación SPF/DKIM.

A continuación se muestra cómo adaptar el ejemplo de PHPMailer para un formulario de contacto:

// Datos proporcionados por el usuario (validar y depurar antes de usarlos)
$userEmail = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$userName  = htmlspecialchars(strip_tags($_POST['name']));
$message   = htmlspecialchars(strip_tags($_POST['message']));

if (!$userEmail) {
    die('Invalid email address.');
}

// From: siempre fijo — la dirección de su sitio, nunca la del usuario
$mail->setFrom('contact@mydomain.ovh', 'My Website');

// Reply-To: la dirección del usuario, para poder responderle directamente
$mail->addReplyTo($userEmail, $userName);

// Destinatario: usted mismo (recibe el mensaje del formulario)
$mail->addAddress('contact@mydomain.ovh', 'My Website');

$mail->Subject = '[Contact] ' . $userName;
$mail->Body    = "Name: $userName\nEmail: $userEmail\n\nMessage:\n$message";
Tip

Nunca pase directamente los datos de un formulario a PHPMailer sin validación previa. Utilice filter_var() para la dirección de correo electrónico y htmlspecialchars() + strip_tags() para los campos de texto, con el fin de evitar las inyecciones de encabezados de correo electrónico.

Parámetros SMTP de OVHcloud

Utilice los siguientes parámetros para su cuenta de correo electrónico MX Plan (incluida con el alojamiento web):

ParámetroValor
Servidor SMTPsmtp.mail.ovh.net
Puerto (SSL/TLS)465 (recomendado)
Puerto (STARTTLS)587
CifradoSSL/TLS (puerto 465) o STARTTLS (puerto 587)
AutenticaciónObligatoria
Nombre de usuarioDirección de correo electrónico completa (por ejemplo, contact@mydomain.ovh)
ContraseñaContraseña de la cuenta de correo electrónico OVHcloud
Tip

Para las ofertas Email Pro o Exchange, el servidor SMTP es diferente. Consulte la documentación de cada oferta para conocer los parámetros exactos.

Dónde encontrar sus credenciales SMTP

El nombre de usuario SMTP es su dirección de correo electrónico completa (por ejemplo, contact@mydomain.ovh).

La contraseña es la que definió al crear la dirección, o la que modificó desde el área de cliente de OVHcloud. Si la ha olvidado o desea restablecerla, consulte la guía Cambiar la contraseña de una dirección de correo.

Warning

La oferta MX Plan incluida con el alojamiento web está sujeta a cuotas de envío (aproximadamente 200 correos electrónicos por hora y por cuenta). Las soluciones de mensajería no están diseñadas para el envío masivo: para volúmenes importantes, como newsletters o correos electrónicos transaccionales masivos, utilice un servicio de envío transaccional externo, diseñado para este uso.

Ejemplo de código PHP con PHPMailer

PHPMailer es la biblioteca PHP de referencia para el envío de correos electrónicos mediante SMTP. Instálela a través de Composer:

composer require phpmailer/phpmailer

A continuación se muestra un ejemplo completo de envío SMTP autenticado:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Parámetros del servidor SMTP de OVHcloud
    $mail->isSMTP();
    $mail->Host       = 'smtp.mail.ovh.net';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'contact@mydomain.ovh'; // Su dirección de correo electrónico de OVHcloud
    $mail->Password   = 'your_password';         // Contraseña de la cuenta de correo electrónico
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL/TLS
    $mail->Port       = 465;

    // Remitente: debe pertenecer a su dominio
    $mail->setFrom('contact@mydomain.ovh', 'My Website');
    $mail->addReplyTo('contact@mydomain.ovh', 'My Website');

    // Destinatario
    $mail->addAddress('mary.johnson@example.com', 'Recipient Name');

    // Contenido
    $mail->isHTML(true);
    $mail->Subject = 'Your email subject';
    $mail->Body    = 'Email body in <b>HTML</b>';
    $mail->AltBody = 'Email body in plain text (fallback)';

    $mail->send();
    echo 'Email sent successfully.';
} catch (Exception $e) {
    echo "Error while sending: {$mail->ErrorInfo}";
}
Warning

Nunca almacene la contraseña de su cuenta de correo electrónico en texto plano en un archivo PHP versionado. Utilice un archivo de configuración excluido de su repositorio Git (.gitignore).

Info

Con esta configuración, cada correo electrónico enviado desde su sitio es:

  • autenticado ante el servidor OVHcloud,
  • firmado con los registros SPF y DKIM de su dominio,
  • trazable en caso de abuso o de problema de entregabilidad.

3. WordPress y otros CMS: utilizar un plugin SMTP

3.1 El problema con WordPress por defecto

La función wp_mail() de WordPress utiliza en segundo plano la función PHP mail(). Por tanto, hereda todos los problemas descritos en la sección anterior: ausencia de autenticación, From: no controlado, riesgo de spam.

La solución consiste en instalar un plugin SMTP que sustituya wp_mail() por una conexión SMTP autenticada a su servidor de mensajería OVHcloud.

3.2 Configurar WP Mail SMTP

WP Mail SMTP es el plugin más utilizado para esta configuración.

Instalación:

  1. En su administración de WordPress, acceda a Plugins > Añadir nuevo plugin.
  2. Busque WP Mail SMTP y haga clic en Instalar ahora y, a continuación, en Activar.

Configuración:

  1. Acceda a WP Mail SMTP > Ajustes en el menú de administración.
  2. En la sección Remitente, rellene los siguientes campos:
CampoValor
Correo electrónico del remitentecontact@mydomain.ovh (dirección que pertenece a su dominio)
Nombre del remitenteNombre mostrado para su sitio (por ejemplo, Mi sitio web)
  1. En la sección Mailer, seleccione Otro SMTP.
  2. Rellene los parámetros SMTP:
CampoValor
Host SMTPsmtp.mail.ovh.net
CifradoSSL/TLS
Puerto SMTP465
AutenticaciónActivada
Nombre de usuario SMTPcontact@mydomain.ovh
Contraseña SMTPContraseña de su cuenta de correo electrónico OVHcloud
  1. Haga clic en Guardar ajustes.
  2. En la pestaña Herramientas, utilice Prueba de envío de correo electrónico para verificar la configuración.
Tip

Active la opción Forzar el correo electrónico del remitente para que todos los correos electrónicos salientes utilicen la dirección configurada, incluso si un plugin externo intenta usar otra.

3.3 Alternativa: FluentSMTP

FluentSMTP es una alternativa ligera y gratuita, sin limitación en el volumen de envío.

Instalación:

  1. En su administración de WordPress, acceda a Plugins > Añadir nuevo plugin.
  2. Busque FluentSMTP y haga clic en Instalar ahora y, a continuación, en Activar.

Configuración:

  1. Acceda a FluentSMTP > Ajustes.
  2. Haga clic en Añadir conexión y seleccione Otro SMTP.
  3. Rellene los mismos parámetros que para WP Mail SMTP:
CampoValor
Hostsmtp.mail.ovh.net
Puerto465
CifradoSSL/TLS
Autenticación
Nombre de usuariocontact@mydomain.ovh
ContraseñaContraseña de su cuenta de correo electrónico OVHcloud
Correo electrónico del remitentecontact@mydomain.ovh
  1. Haga clic en Guardar conexión y, a continuación, envíe un correo electrónico de prueba.

3.4 Otros CMS (Drupal, Joomla, PrestaShop)

El principio es idéntico para cualquier CMS o framework: sustituir la función de envío nativa por un módulo o una configuración SMTP autenticada.

CMSMódulo recomendado
DrupalSMTP Authentication Support
JoomlaConfiguración nativa: Sistema > Configuración global > pestaña Servidor > sección Ajustes de correo
PrestaShopParámetros avanzados > Correo electrónico — seleccionar Utilizar mis propios parámetros SMTP

En todos los casos, los parámetros SMTP que se deben utilizar son idénticos: servidor smtp.mail.ovh.net, puerto 465 (SSL/TLS) o 587 (STARTTLS), con autenticación mediante la dirección de correo electrónico completa y su contraseña.

Más información

Gestionar los mensajes de correo automatizados

Mejorar la seguridad del correo electrónico mediante el registro SPF

Mejorar la seguridad del correo electrónico mediante un registro DKIM

Mejorar la seguridad del correo electrónico mediante el registro DMARC

Para prestaciones especializadas (posicionamiento, desarrollo, etc.), contacte con los partners de OVHcloud.

Si desea asistencia para el uso y configuración de sus soluciones OVHcloud, le proponemos que consulte nuestras diferentes ofertas de soporte.

Interactúe con nuestra comunidad de usuarios.

¿Le ha resultado útil esta página?