El protocolo SMTP (Simple Mail Transfer Protocol) es uno de los protocolos más importantes del correo electrónico. Todos los proveedores de correo electrónico disponen de datos de conexión de POP3/IMAP para el correo electrónico entrante, pero también proporcionan datos sobre el protocolo SMTP, el protocolo encargado de enviar los correos electrónicos desde un cliente de correo como Thunderbird o Outlook para Windows.
Hoy en RedesZone os vamos a explicar el funcionamiento del protocolo SMTP para el correo electrónico saliente (para enviar emails), y cómo puedes configurarlo con cualquier cliente de email. Un mensajero virtual que ayuda a que todos nuestros correos se entreguen de manera simple y estandarizada.
¿Qué es el protocolo SMTP y para qué sirve?
El protocolo SMTP (Simple Mail Transfer Protocol) o también conocido como «Protocolo de Transferencia simple de correo» es el protocolo utilizado cuando vamos a enviar un correo electrónico a través de un servidor de correo.
Este protocolo se utiliza por los clientes locales de email para enviar los mensajes de email al servidor de correo remoto, por tanto, actúa únicamente en sentido salida, a diferencia del protocolo POP3 que sirve para recibir los emails, este SMTP sirve para enviarlos.
El objetivo principal de este protocolo es la de conseguir autenticación de los participantes en una comunicación, con el fin de asegurar tanto la integridad como la confidencialidad de los datos que se intercambien. Por ello, usa capas de sockets seguros, es decir, (SSL, Secure Sockets Layer) o también TLS (una seguridad de la capa de transporte, Transport Layer Security) con el fin de asegurar una conexión segura y garantizar estos puntos en la transmisión, en este caso, del correo electrónico.
Qué puertos utiliza
Este protocolo pertenece al nivel de aplicación del modelo TCP/IP, utiliza el protocolo de la capa de transporte TCP, y hace uso de diferentes puertos dependiendo de si el tráfico va cifrado o no va cifrado:
- Puerto 25 TCP para tráfico sin cifrar
Este puerto se introdujo de primeras en 1982. Hay que tener en cuenta que este no está protegido de manera predeterminada, por lo que los mensajes que se envían a través de este puerto están en texto sin formato. Por ello, una gran parte de operadores bloquean este puerto por motivos obvios de seguridad. Aun así, puede darse el caso de que funcione con TLS, siempre y cuando un servidor MTA lo admita.
- Puerto 465 TCP para tráfico cifrado SSL (SMTPS)
Otro de los puertos que se asignaron por parte de IANA fue el 465. En este caso, hay que tener en cuenta que este puerto SSL SMTP cifra todo el contenido de los mensajes desde un principio cuando se da la conexión entre los servidores de correo. Sin embargo, con la aparición del puerto 587, esta opción se quedó anticuada, aunque es cierto que diferentes servidoras todavía hacen uso de este ya que hace falta una conexión TLS/SSL de manera implícita.
- Puerto 587 TCP como puerto alternativo para SMTPS con TLS
En este caso estamos ante un protocolo que permite el envío de un mensaje encriptado si el servidor de correo lo admite. En caso de no ser compatible con TLS, entonces el mensaje se llegará a enviar en texto pero sin formato. Hay que tener en cuenta que Start TLS funciona con TSL y SSL.
Actualmente la gran mayoría de proveedores de servicios de correo electrónicos disponen de soporte para SSL/TLS, con la finalidad de cifrar y proteger todos los datos que se envían en el correo electrónico, por tanto, casi siempre vamos a hacer uso de los puertos 465 y 587, dependiendo de cómo esté configurado el servidor de correo. Por ejemplo, en el caso de Gmail no se permite utilizar el puerto 25 TCP porque no tiene ningún tipo de cifrado, sin embargo, soporta tanto el puerto 465 para conexiones SSL como el puerto 587 para conexiones TLS.
Hoy en día el protocolo STARTTLS es ampliamente utilizado para proporcionar confidencialidad en la autenticación con el servidor de correo. Además, al utilizar este protocolo los puertos TCP involucrados en la comunicación son diferentes. Por ejemplo, SMTP usa el puerto 25 TCP, pero si usamos SMTPS (con STARTTLS) el puerto es el 465 por defecto.
El protocolo SMTP está orientado específicamente al envío de correos electrónicos, en dirección «subida» o saliente, desde el cliente de correo local hasta el servidor de correo, para posteriormente enviarlo a su destinatario final. Por supuesto, el cliente de correo local almacenará estos emails en la sección de emails enviados, independientemente de que estemos usando Thunderbird o Outlook de Windows.
SMTP permite realizar la autenticación con usuario/contraseña en texto claro a partir del puerto 25, pero actualmente, pocos servicios soportan este protocolo sin utilizar ningún tipo de cifrado, con el objetivo de proporcionarnos confidencialidad a la autenticación y también al correo electrónico enviado. Con las últimas versiones de SMTPS podremos usar los puertos 465 o 587 para tener cifrado de datos, autenticidad y comprobación de la integridad de los mensajes enviados.
Funcionamiento e intercambio de mensajes
El funcionamiento del protocolo SMTP es bastante sencillo, lo primero que debemos tener en cuenta es que SMTP es un protocolo orientado a conexión basado en texto, por tanto, es un protocolo fiable al utilizar el protocolo de la capa de transporte TCP. El cliente de correo se comunica con el servidor a través de una serie de secuencias de comandos para realizar la autenticación, el envío de los mensajes y para cerrar la conexión, por supuesto, el servidor de correo también le responderá con una serie de secuencias de comandos a modo de contestación. En la misma sesión de SMTP se pueden incluir cero o más transacción, en cada una de estas transacciones tendremos un total de tres secuencias de comandos/respuesta que son:
- MAIL: establece la dirección de retorno.
- RCPT: establece un destinatario del mensaje, puede emitirse varias veces dependiendo del número de destinatarios.
- DATA: es el mensaje de texto del correo electrónico, es decir, el contenido del propio correo electrónico. Se compone de la cabecera y también del cuerpo del mensaje.
Una vez que configuramos el cliente de correo correctamente, el email se redacta directamente en el propio cliente de correo, cuando se le da al botón de «Enviar» es cuando empieza todo el proceso:
- El cliente establecerá la conexión con el servidor SMTP esperando contestación de HELO para recibir la identificación del servidor.
- El cliente empieza la comunicación con la orden MAIL FROM con la dirección de email, a continuación, el servidor comprobará que el origen es válido.
- El cliente le enviará un mensaje RCPT TO incorporando el email de destino del correo electrónico, dependiendo de los destinatarios tendremos un mensaje RCPT TO o varios. A continuación, se envía una orden DATA para indicar que viene el cuerpo del mensaje línea a línea.
- El cliente si no va a enviar más emails, enviará una orden QUIT para terminar la sesión SMTP.
- En el caso de enviar posteriormente un email, empezaría todo el proceso nuevamente.
Una vez que ya conocemos qué es SMTP y cómo funciona, os vamos a enseñar cómo configurarlo fácilmente para enviar emails a través de un cliente de correo como Thunderbird o cualquier otro.
Beneficios de SMTP
Este protocolo cuenta con una serie de ventajas que pueden hacer de él, una mejora importante dentro del sistema de cualquier empresa u organización. Algunos de estos beneficios son:
- Confiable: Se trata de una de las mejores formas para realizar el envío de correos electrónicos actualmente. Esto se debe a que se ha utilizado durante muchos años, por lo cual se ha probado y mejorado de forma constante. Por lo cual, es prácticamente un sistema que nos garantiza que todo va a funcionar de la forma correcta siempre.
- Sencillez: Es un protocolo muy sencillo de utilizar y de realizar la configuración. Muchos de los programas de correo que nos podemos encontrar, utilizan este protocolo, tanto para envíos como para recibir correos. Este también es utilizado por la gran mayoría de los proveedores se correo en internet, los cuales nos ofrecen soluciones claras y muy sencillas para poder realizar la configuración de forma cómoda y eficaz.
- Compatibilidad: Este es compatible con los sistemas operativos más famosos, así como con plataformas y dispositivos diferentes. Por lo cual es una muy buena opción para establecer en el correo electrónico en cualquier lugar y momento.
- Flexible: Es altamente personalizable, por lo cual lo podemos adaptar a nuestras necesidades en muchos aspectos diferentes. Esto da mucho margen a los administradores, los cuales pueden configurarlo para necesidades concretas, así como los usuarios. Esto también puede hacer que la seguridad mejore de forma considerable. Ya que se pueden aplicar complementos que agregan nuevas capas de seguridad.
- Seguridad: Este protocolo protege todos los correos que se envían, pero lo cierto es que inherentemente no es seguro. En todo caso, hay muchas medidas de seguridad que se han desarrollado con el paso del tiempo, las cuales pueden garantizar la seguridad. Entre otros, utiliza el cifrado TLS, para proteger la transmisión de datos entre el servidor y el cliente de correo.
Configuración de SMTP
El protocolo SMTP se puede configurar tanto en clientes de correo electrónico para enviar y recibir emails a través de este cliente, o directamente para usarlo en servidores y que nos envíe avisos por correo electrónico de algún evento o problema. Para configurar el servidor SMTP de nuestro proveedor de correo electrónico generalmente no tenemos que hacer nada, porque ya se encuentra habilitado. Sin embargo, si vas a usar SMTP en un cliente de correo deberás habilitar POP3/IMAP para poder recibir el correo correctamente.
Imaginemos que queremos configurar un servidor o un NAS para que nos envíe notificaciones por email de diferentes eventos, lo único que tendremos que conocer del servidor de correo son los siguientes datos:
- Servidor de correo entrante (dominio o dirección IP), en el caso de Gmail es «smtp.gmail.com»
- Requiere o no SSL, en el cliente deberemos pinchar en esta opción. Gmail requiere SSL obligatoriamente.
- Puerto: 465
- Nombre de usuario: la dirección de correo electrónico completa, por ejemplo: sergio@gmail.com
- Contraseña: la contraseña que hayamos puesto en Gmail.
Una vez que sepamos toda esta información que la tenemos disponible en la web oficial de Gmail, procedemos a rellenar los diferentes campos. A continuación, podéis ver la configuración de SMTP en un pfSense para que nos realice envíos por email de los diferentes eventos. Tendremos que habilitar el «Secure SMTP Connection» y elegir el puerto correcto.
Un detalle muy importante es que, si tienes autenticación en dos pasos, deberás activar la «contraseña de aplicación» y usar esta clave para poder acceder al SMTP, de lo contrario, no te funcionará.
La configuración del protocolo SMTP en cualquier cliente de correo es muy sencilla, porque generalmente disponen de una base de datos interna con todos los datos predefinidos, por tanto, no tendremos que conocerlos de antemano. En el caso de que uses Thunderbird o Outlook de Windows para gestionar tu correo, es necesario que actives el POP3 o IMAP para recibir el correo, a no ser que solamente quieras enviar y nada más.
Lo primero que vamos a necesitar es activar el soporte de POP3 y/o IMAP por parte de Gmail, de forma predeterminada esta función se encuentra deshabilitada.
Os recomendamos que utilicéis IMAP porque permite sincronización, POP3 es un protocolo bastante antiguo que no permite muchas características para gestionar tu correo correctamente desde múltiples clientes.
En clientes de correo como Thunderbird tan solo tendremos que poner nuestro nombre completo, cuenta de email y la clave, y posteriormente elegir si queremos IMAP o POP3 como correo entrante, el correo saliente siempre será SMTP. Gracias a la base de datos interna, el programa detectará los datos de conexión de Gmail y no tendremos que introducir nada. Si os fijáis en la siguiente captura, se está utilizando SMTP con SSL/TLS y en el puerto predefinido por Gmail.
Una vez hecho esto, tendremos que autenticarnos en Google para acceder correctamente a nuestra cuenta de correo electrónico.
Finalmente nos indicará que se ha creado correctamente, y podemos empezar a enviar los correos electrónicos sin problemas.
Lo primero que hará el cliente es recibir todos los emails de la bandeja de correo, y podremos enviarlos vía SMTP sin ningún problema.
Tal y como habéis visto, configurar el protocolo SMTP en cualquier equipo es realmente sencillo, no solamente en los clientes de correo como Thunderbird o Outlook, sino también en sistemas como pfSense, XigmaNAS para recibir correos electrónicos con diferentes avisos y alertas, así como en servidores NAS de QNAP y otros fabricantes. Lo único que tendremos que conocer son los datos de conexión del servidor SMTP de nuestro servidor de correo.
Protocolos de seguridad para proteger SMTP
Un problema muy importante que tenemos con SMTP, es que los e-mails se pueden enviar en texto plano debido a que el cifrado es opcional, sin embargo, han aparecido dos protocolos que nos permitirán añadir una capa de seguridad para tener una mayor privacidad.
MTA-STS
Para mejorar la situación se creó un nuevo mecanismo llamado Mail Transfer Agent-Strict Transport Security cuyas siglas son MTA-STS. Este estándar, bastante reciente, permite a los proveedores de servicios de correo hacer cumplir la seguridad de la capa de transporte con un cifrado TLS para proteger las conexiones SMTP. Además, también permite especificar si los servidores SMTP de envío deben denegar la entrega de los mensajes a los hosts MX que no ofrezcan TLS con un certificado de servidor de confianza. El beneficio que se obtiene, es que se ha demostrado que mitiga con éxito los ataques de degradación de TLS y los ataques Man-in-the-Middle (MitM).
En el momento que implementamos MTA-STS, las direcciones MX se obtienen a través de DNS y se comparan con las que se encuentran en el archivo de política MTA-STS, que se envía a través de una conexión segura HTTPS, lo cual va a mitigar los ataques de suplantación de DNS. Por lo tanto, si no enviamos nuestros e-mails a través de una conexión segura, corren el riesgo de ser interceptados o manipulados. Para solucionar este problema, tenemos MTA-STS que mitiga con éxito los ataques criptográficos y mejora la seguridad de nuestra información mediante la utilización del cifrado TLS.
En resumen MTA-STS nos ofrece:
- Transferencia de e-mail cifrada a través de TLS.
- Si no se puede establecer una conexión cifrada, el correo electrónico no se entrega. Así no se envía texto sin cifrar.
- Las políticas MTA-STS sirven de forma segura las direcciones MX dificultando el ataque de suplantación de DNS.
Además, MTA-STS nos ofrece protección contra ataques de degradación, de suplantación de DNS y de MitM, resuelve varios problemas de seguridad de SMTP como el de los certificados TLS caducados.
TLS-RPT
Otro elemento que ayuda a mejorar la seguridad es el estándar SMTP TLS Reporting (TLS-RPT) y está documentado en el RFC 8460 que se publicó en septiembre de 2018. Gracias a él, nos va a permitir reportar problemas de conectividad TLS experimentados por aplicaciones que envían correo electrónico. Así, nos va permitir el aviso cuando haya problemas de entrega de un correo electrónico debido a que éste no esté cifrado con TLS.
Gracias a TLS-RPT los propietarios de dominios pueden obtener informes de diagnóstico en formato de archivo JSON sobre los correos electrónicos dirigidos a su dominio. Así, pueden conocer si se enfrentan problemas de entrega relacionados con un ataque de degradación u de otro tipo. Si habilitamos TLS-RPT obtenemos estos beneficios:
- Se notificará si no llega un correo electrónico a su dominio debido a algún problema en la entrega.
- Proporciona informes de diagnóstico detallados que nos permiten identificar el problema de entrega del e-mail para solucionarlo lo antes posible.
Gracias a estos protocolos, añadimos una capa de seguridad importante al protocolo SMTP habitual. Los principales proveedores de servicios de correo como Microsoft y Google ya lo admiten. Google fue de los primeros en adoptar este protocolo. La adopción de MTA-STS por parte de Google y otras grandes empresas indican el interés que tienen por tener unos protocolos seguros para cifrar el correo electrónico en tránsito. Por lo tanto, la mejor forma de garantizar la seguridad de nuestros correos electrónicos, hoy en día, es utilizar el protocolo MTA-STS junto a TLS-RPT para que nos reporte cuando se está produciendo algún fallo.
SPF
Otro de los protocolos utilizados para la seguridad de SMTP es el SPF (Sender Policy Frameworks). Una herramienta muy importante contra la suplantación de identidad y el correo no deseado. Su objetivo principal es dar una forma de verificar que los correos vienen de una fuente legítima. SPF permite a los propietarios de dominios, especificar cuáles son los servidores autorizados para enviar correos en nombre de su dominio mediante un filtrado de DNS que detallan en una lista los servidores permitidos y los no autorizados.
El funcionamiento del protocolo SPF comienza con la configuración por parte del propietario del dominio. Debe agregar un registro SPF con información sobre los servidores de correo electrónico autorizados para enviar correos en nombre del dominio. Una vez detallada la lista de registro, cuando un servidor de correo electrónico recibe un mensaje, verifica el SPF del dominio remitente consultando el registro DNS que le corresponde. Una vez verificado, si el servidor de correo está en la lista de servidores autorizados, el correo se considerará auténtico y se entregará con normalidad. Pero si no está en la lista, el servidor receptor marcará el correo como no auténtico o incluso podría rechazarlo.
Al especificar qué servidores están autorizados, SPF ayuda a prevenir que los spammers falsifiquen direcciones de remitentes legítimos, ayudando de este modo a prevenir la suplantación de identidad. Además, al autenticar los correos, el protocolo puede mejorar la tasa de entrega al evitar que los mensajes auténticos sean marcados como SPAM. Y no solo eso, sino que también es una capa de seguridad adicional contra ataques de phishing al asegurar que los correos estén vinculados a servidores auténticos.
Por qué necesitamos enviar emails cifrados
El objetivo es simple: queremos que nuestro correo electrónico llegue a sus destinatarios sin que nadie lo haya leído o manipulado. Así, la razón principal es mejorar la seguridad a nivel de transporte durante la comunicación SMTP, con la finalidad de garantizar la privacidad del tráfico de correo electrónico. En este sentido, el cifrado de los mensajes entrantes dirigidos a nosotros, también mejora la seguridad de la información, ya que se utiliza la criptografía para salvaguardar la información electrónica. Por ese motivo, tanto el emisor como el receptor se están beneficiando de esta mejora de seguridad. Otra cuestión importante, es que los ataques Man-in-the-Middle (MitM), como SMTP Downgrade y ataques de suplantación de DNS cada vez son más frecuentes.
Un ataque Man-in-the-Middle attack o MitM es aquel en el que el atacante adquiere la capacidad de leer, insertar y modificar a voluntad las comunicaciones. De esta forma, su trabajo va a consistir en ser capaz de observar e interceptar mensajes entre los dos usuarios, y luego procurar que ninguna de las dos víctimas conozca que el enlace ha sido vulnerado.
Como ya hemos comentado anteriormente, para implementar el cifrado en el protocolo SMTP debemos utilizar el comando STARTTLS. El atacante MITM se puede aprovechar de esta situación realizando un ataque de degradación SMTP en la conexión SMTP. Lo que hace el ciberdelincuente es alterar el comando, reemplazarlo o eliminarlo. Entonces, lo que sucede, es que obliga al cliente a volver a mandar ese correo electrónico en texto sin formato.
Otra forma en la que podrían atacar, es mediante un ataque de suplantación de DNS. Un detalle muy importante que debéis saber, es que DNS es un sistema no cifrado. De esta forma, un ciberdelincuente actuaría reemplazando los registros MX en la respuesta a la consulta de DNS con un servidor de correo al que tiene acceso y está bajo su control. Luego, desviaría fácilmente el tráfico de DNS que fluye a través de la red.
Lo que sucedería a continuación, es que nuestro proveedor de correo entregaría nuestro e-mail al servidor del atacante. En ese momento, el ciberdelincuente puede tener acceso y manipular ese mensaje. Después, ese correo electrónico se reenviará posteriormente al servidor del destinatario previsto, sin que haya sido detectado.