SMTP: Qué es, cómo funciona y cómo se configura
En este artículo te voy a hablar sobre el protocolo SMTP, que es el que se encarga de gestionar el envío de la mayoría de tus correos electrónicos.
- ¿Qué es SMTP?
- ¿Qué es un servidor SMTP?
- Configuración y puertos para SMTP
- Configurar SMTP en un cliente de correo
- Configurar SMTP en WordPress
- Ventajas del envío por SMTP ante el envío por función "mail()" de PHP
- Posibles errores y cómo solucionarlos
- Usuario o contraseña incorrectos
- Errores del servidor remoto de destino
- Conclusión: SMTP, el protocolo por excelencia para el envío de correo
¿Qué es SMTP?
SMTP es la abreviatura en inglés de “Simple Mail Transfer Protocol” o, lo que es lo mismo, “Protocolo para transferencia simple de correo”. Por tanto, este protocolo de red te permitirá enviar correos electrónicos a través de internet desde un dispositivo a un servidor de correo remoto.
¿Qué es un servidor SMTP?
Un servidor SMTP es un servidor de correo que se encarga de realizar el envío del mensaje de la forma más eficiente posible, empleando el protocolo SMTP. La ventaja del uso de un servidor SMTP para enviar el correo viene dada de las configuraciones avanzadas que suelen tener para mejorar la seguridad, evitar el envío de SPAM, evitar que el correo enviado se marque como SPAM…
Realmente, un servidor SMTP no es necesario como tal para enviar el correo. Desde tu propio ordenador puedes realizar el envío de correo sin pasar por ningún servidor de este tipo. Sin embargo, si no está preparado de forma adecuada es posible que te encuentres con múltiples problemas. Lo primero es que tendrías que tener permitido el envío desde tu IP en el registro SPF de tu dominio, además de que las IPs domésticas no suelen tener una reputación buena y el correo puede ser marcado como SPAM o descartado en el destino.
En este esquema puedes ver, de forma simple, por qué puntos pasa un correo desde que es enviado hasta que es visto por el destinatario. Como puedes ver, el servidor de correo hace que el envío se realice de la forma más eficiente y segura posible.
En la siguiente captura verás, de forma más interna, cómo se realiza una conexión SMTP a uno de los servidores de Raiola. Los pasos principales consisten en iniciar la conexión, autenticarse, indicar destino del mensaje, redactar el contenido y que el servidor lo acepte para enviarse.
Configuración y puertos para SMTP
Para la conexión SMTP entre tu dispositivo y el servidor de correo hay que usar una cierta configuración. Los principales datos para configurar una conexión SMTP son:
- Servidor saliente: Dirección del servidor de correo (en ocasiones sirve mail.tudominio).
- Usuario: El usuario que tengas para tu servidor SMTP (en Raiola, es tu dirección de correo completa).
- Contraseña: La contraseña de tu cuenta de correo electrónico o usuario.
- Puerto: Pueden estar personalizados en cada servidor pero, por lo general, son: 25 (sin SSL), 587 (TLS) y 465 (SSL).
Cabe decir que, en ocasiones, el campo usuario y contraseña es algo opcional, ya que ciertos servidores podrían permitir enviar correo sin loguearse. En Raiola siempre es obligatorio usar usuario y contraseña para el envío por SMTP, ya que es la forma más segura.
Configurar SMTP en un cliente de correo
Para poder enviar correos desde tu gestor (Thunderbird, Outlook, Gmail…) será necesario que configures la conexión SMTP contra tu servidor de correo. Es habitual que lo tengas que hacer en el momento que añades tu cuenta al gestor de correo. Los datos que necesitarás son los que te comenté en el punto anterior.
Si necesitas ayuda para configurar tu correo, en nuestro blog tenemos varias guías de diferentes gestores que te pueden ser de utilidad:
- Cómo configurar tu correo en Outlook
- Cómo configurar tu correo en Thunderbird
- Cómo configurar Gmail como cliente de correo electrónico
Configurar SMTP en WordPress
El envío de correos desde la web es algo casi imprescindible para ciertos casos, bien sea para alertas del administrador o para avisos a tus usuarios o clientes. En esta ocasión, los dos métodos de envío más usados son mediante la función “mail()” de PHP o por el propio protocolo SMTP, el cual incluso te permite realizar los envíos desde un servidor diferente al de la web.
En este caso, voy a centrarme en cómo configurar el envío por SMTP.
Al igual que sucede con la configuración en los gestores de correo, hay 4 datos necesarios para configurar el envío mediante SMTP en cualquier web:
- Servidor saliente: Dirección del servidor de correo (en ocasiones sirve mail.tudominio).
- Usuario: El usuario que tengas para tu servidor SMTP (en Raiola es tu dirección de correo completa).
En el caso de que el servidor de correo SMTP coincida con el propio web, se podría utilizar “localhost” como nombre de servidor. - Contraseña: La contraseña de tu cuenta de correo electrónico o usuario.
- Puerto: Pueden estar personalizados en cada servidor pero, por lo general, son: 25 (Sin SSL), 587 (TLS) y 465 (SSL).
Esta configuración la puedes realizar de dos formas: a través de un plugin o directamente a nivel de todo el WordPress. Si quieres saber más sobre esto te recomiendo que leas alguna de nuestras guías:
- Configurar envío de correos por SMTP en WordPress
- Configurar Mandrill para enviar correos en WordPress
- SendGrid para enviar correos en WordPress
El uso de plugins como Mandrill o SendGrid, que puedes ver en las guías anteriores, permiten que el envío de los correos los realice un servidor de correo distinto al de la web. De este modo, se puedan evitar problemas de límites en caso de newsletters grandes o el que te permita tener diferenciado el servidor de correo del servidor web.
Ventajas del envío por SMTP ante el envío por función "mail()" de PHP
Como te decía antes, el envío de correos desde tu web se puede hacer principalmente mediante SMTP o usando la función mail de PHP.
A estas alturas, el envío mediante SMTP ya lo conoces un poco más, por lo que te voy a explicar brevemente en qué consiste el envío usando la función mail de PHP.
En PHP existe una función llamada “mail()”, la cual realiza el envío directamente sin pasar por ningún servidor de correo SMTP. Este tipo de envío es similar a enviar un correo desde tu equipo sin usar una conexión SMTP a un servidor de correo y sin autenticarse.
En lo primero que habrás caído es en que, si no se hace una conexión SMTP con el servidor de correo, se pierden todas las ventajas del uso de un servidor SMTP preparado. No requiere autenticación, la IP del servidor web puede que no tenga una reputación buena…
No obstante, el mayor problema de la función mail es que es muy vulnerable, quizás por ser un método casi obsoleto. Para que te hagas una idea, en un formulario web que se envía usando la función mail, un atacante podría indicar parámetros válidos en el campo de dirección de correo, permitiéndole añadir más cuentas de correo a las que enviar ese envío y cambiando el “FROM” por otra cuenta de correo falsa, convirtiendo el mensaje del formulario en un envío SPAM. Por no hablar de la posibilidad de personalizar el mensaje simplemente usando un campo del formulario que te permita redactar el mensaje a enviar.
Teniendo esto en cuenta, está claro que el envío usando la función mail no es nada recomendable, incluso la mejor opción es deshabilitarla totalmente para que no pueda ser ejecutada desde ningún acceso malicioso.
En el caso de los envíos por SMTP mediante web, poco hay que explicar, pues funcionan igual que un envío de correo normal que expliqué antes. La web se conecta al servidor de correo SMTP, autenticándose mediante usuario y contraseña (se acabó falsear el “FROM” tan fácilmente) y el envío se realiza desde el servidor de correo directamente. El servidor web ya no tiene que hacer nada más en el proceso de conexión SMTP con el servidor de correo.
Posibles errores y cómo solucionarlos
Es posible que quieras usar SMTP para enviar correos pero te hayas encontrado con algún problema que te dificulta su uso. En este punto, trataré los problemas más frecuentes y buscaré una solución efectiva.
Usuario o contraseña incorrectos
Este error es bastante descriptivo. El problema está claro: la contraseña o el usuario que estás escribiendo son incorrectos, al menos a primera vista. Puede que estés poniendo los datos de forma correcta pero aún así este error siga saliendo. En este caso, es posible que se trate de algún bloqueo de seguridad a nivel del servidor SMTP.
No obstante, lo primero que debes hacer es revisar que la contraseña esté bien. Cámbiala por una nueva y asegúrate de que estás usando el usuario SMTP correcto (recuerda que en Raiola usamos la cuenta de correo completa como usuario SMTP).
Errores del servidor remoto de destino
- No se puede verificar el origen o el servidor SMTP de destino ha rechazado al remitente.
Algunos servidores de destino comprueban que la cuenta de origen de cada correo que reciben sea una cuenta de correo funcional. Esto implica que, al recibir el correo, hacen una simulación de conexión a la cuenta del origen para comprobar que existe (lo que se conoce como “sender_verify”). Si tienes algún error de este tipo al enviar un correo, es posible que el dominio de tu cuenta de correo no tenga unas MX válidas o la cuenta de origen no esté funcionando. También podría darse el caso de que lo hayas enviado con el “FROM” de una cuenta que no existe. En el caso de que te indique que se ha rechazado el remitente, es también posible que se trate de algún filtro personalizado en el servidor de destino que no permite recibir envíos desde esa cuenta de correo. En ese caso, son los administradores del servidor de destino quienes te pueden indicar sus motivos para realizar este bloqueo. - Mi correo va a SPAM.
Lo primero de todo, ¿estás enviando el correo mediante una conexión SMTP a tu servidor de correo? Si la respuesta es negativa, te recomiendo que cambies tu método actual por este. Si por cualquier cosa no puedes o quieres, el problema frecuente en este caso es una mala configuración de tu registro SPF (quizás no hayas permitido el envío de la IP que realiza el envío).
En el caso de que estés usando SMTP, el registro SPF también es importante. Debe incluir la IP de tu servidor de correo. Además, el uso de DKIM te puede ayudar a mejorar la puntuación de tus correos electrónicos. - 550 Requested action not taken: mailbox unavailable.
Este error concreto es devuelto directamente por el servidor de destino y te indica que la cuenta a la que iba dirigido el mensaje no está disponible, bien sea por un error en la cuenta de destino o porque directamente esté mal escrita y no exista. - 550 relay not permitted
Este error te indica que el servidor de destino está intentando hacer relay y no existe una configuración que lo permita. Que un servidor de correo haga relay significa, de forma simple, que el servidor de correo permite realizar envíos sin necesidad de autenticarse, enviando también correos recibidos a su destino usando el remitente original. Es habitual que esto esté causado por tener configurado el enrutamiento de correo como remoto en el servidor de correo de tu dominio. Si usas cPanel, tienes disponible una opción llamada “enrutamiento de correo electrónico” que te permite configurar esto. Si quieres recibir los correos de tu dominio en ese servidor, debes marcar enrutamiento local para que no intente hacer relay y sean entregados en ese mismo servidor.
- El mensaje no se ha podido enviar porque ha caducado la conexión al servidor de salida (smtp)
Este error nos indica que se ha excedido el tiempo de espera máximo con la conexión del servidor de salida. Esto puede suceder por varios motivos, desde que el servidor de correo esté tardando demasiado en realizar un proceso hasta un posible fallo de conexión por problemas de red. No obstante, en la mayoría de las veces se trata de algún tipo de bloqueo. En ese caso, tendrías que contactar con el administrador de tu servidor para que pueda levantar el bloqueo. Es muy común que tras varios accesos incorrectos se bloquee tu conexión por motivos de seguridad.
Conclusión: SMTP, el protocolo por excelencia para el envío de correo
Como habrás visto, las ventajas del uso de SMTP para enviar correo son múltiples. A día de hoy, no existe otro protocolo de envío de correo con más virtudes y tan estandarizado. El envío de correos por SMTP es muy versátil, tanto te sirve para obligar a autenticarse en el servidor de correo como para enviar los correos de tu web usando un servidor externo optimizado para envíos de correo masivos.
En Raiola contamos con planes de hosting específicos para correo. Estos planes vienen configurados por defecto con todas las medidas que he descrito en este artículo, de modo que el envío de correo se realizará de la mejor forma posible.
¿Ya tienes configurada tu web para que envíe mediante SMTP? Si no es así, ¿a qué esperas?
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *