Comprender Smtp: El Protocolo Detrás Del Envio de Correos Electrónicos

On mayo 31, 2023
11min read
Diana Lepilkina Content Specialist @Mailtrap
This is a cover image for an article that explains SMTP Protocol in detail

SMTP es un protocolo fundamental utilizado en la comunicación por correo electrónico. Lo más probable es que esté detrás de los correos electrónicos que enviamos y recibimos cada día. Aunque es un protocolo simple, todavía involucra múltiples componentes y muchos detalles. 

En esta publicación, echaremos un vistazo más de cerca a SMTP y exploraremos sus características y funcionalidades principales.

¿Qué es SMTP? 

SMTP o Simple Mail Transfer Protocol es un ‘application layer protocol’ que permite transferir correos electrónicos entre diferentes servidores y redes informáticas. Lo hace definiendo las reglas de la comunicación.

El modelo original fue introducido en 1982. De acuerdo con el RFC 821, el usuario crea la solicitud de conexión. En respuesta, el emisor-SMTP inicia una conexión bidireccional con el receptor-SMTP. En términos modernos, estos son cliente SMTP y servidor SMTP, respectivamente. El cliente SMTP y el servidor SMTP se comunican con comandos y respuestas (más sobre eso abajo), similar a las conversaciones de la vida real.

El RFC 821 también define el modelo para el uso de SMTP. Puedes ver el esquema en la ilustración a continuación.

Fuente: RFC 821

Una vez establecida la conexión, el cliente SMTP transferirá los encabezados, los destinatarios, el cuerpo de los mensajes (incluidos los archivos adjuntos) y todos los datos al servidor SMTP paso a paso. Cuando se complete la transmisión, la conexión se cerrará. 

Por definición, la forma completa de SMTP es cuando los clientes SMTP admiten la retransmisión, las colas de correo electrónico y las funciones de direcciones alternativas. Esto se llama un SMTP totalmente funcional. Si estas funciones no son compatibles, el SMTP no es totalmente funcional. En ese caso, los RFC relevantes recomiendan usar el protocolo de envío de mensajes en su lugar. 

Tenga en cuenta que SMTP solo puede enviar mensajes simples, es decir, texto sin formato sin archivos adjuntos. Usamos un protocolo separado, Multipurpose Internet Mail Extensions, MIME (RFC 2045), para enviar archivos adjuntos, cuerpos de mensajes que exceden los límites de caracteres impuestos por SMTP, mensajes en idiomas distintos del inglés y formatos HTML/CSS.

MIME es un protocolo de extensión: mejora las capacidades de SMTP, pero no funciona por separado. La mayoría de los servicios de correo electrónico modernos admiten MIME.

¿Qué es el ESMTP?

ESMTP o Extended Simple Mail Transfer Protocol fue introducido por primera vez en 1995 en el RFC 1869. El propósito era crear una estructura unificada para todas las extensiones futuras. Las extensiones tienen como objetivo añadir funcionalidades de las que  SMTP carece. RFC 5321 Los documentos anteriores consolidados y obsoletos.

ESMTP utiliza un nuevo comando EHLO para iniciar la conexión. También permite el uso de parámetros adicionales en el MAIL⁠FROM de SMTP y comandos RCPT TO. Como resultado, ESMTP elimina el límite de 512 caracteres para parámetros adicionales y lo deja solo para casos en los que no se definen parámetros adicionales. 

Tanto ESMTP como SMTP son ampliamente utilizados hoy en día. Si el comando EHLO no es compatible, la conexión debe volver al SMTP y su comando HELO. 

Hablando de extensiones, también debemos mencionar la extensión SMTP-AUTH, que añade un paso de autenticación al proceso. Esto significa que el cliente de correo debe iniciar sesión en el servidor de correo utilizando su nombre de usuario y contraseña. Si bien la autenticación SMTP no puede proteger contra la suplantación de identidad, es una medida de seguridad importante.

¿Qué es SMTPS? 

SMTPS o Simple Mail Transfer Protocol Secure es un método que protege SMTP con la ayuda de los protocolos de seguridad de la capa de transporte (TLS) o Secure Sockets Layer (SSL). Estas capas de seguridad cifran los mensajes para evitar que los spammers o spoofers vean el contenido de los correos electrónicos.

Aunque SSL todavía se usa ampliamente, TLS (más precisamente, en su versión 1.3) se considera el protocolo más seguro para el cifrado de correo electrónico. Para obtener más información sobre la seguridad SMTP, lea nuestro blog post al respecto.

Tipos de SMTP

RFC 5321 diferencia entre cuatro tipos de sistemas SMTP:

  • El SMTP original es el primer sistema que interactúa con Internet con la introducción del correo; 
  • Delivery SMTP es el sistema que recibe correos electrónicos de Internet y los entrega a los destinatarios; 
  • Relay SMTP distribuye correos electrónicos entre servidores SMTP o MTA (más sobre el significado del agente de transferencia a continuación) sin modificar el mensaje de ninguna manera;
  • Gateway SMTP o puerta de enlace SMTP también transfiere correos electrónicos entre diferentes servidores, pero, a diferencia de SMTP relay, se le permite transformar el mensaje si es necesario. Las puertas de enlace SMTP suelen ser firewalls que reescriben direcciones o servidores SMTP intermedios.

Infraestructura SMTP 

Como vimos anteriormente, los componentes principales del modelo SMTP son User, Sender-SMTP (cliente SMTP) y Receiver-SMTP (servidor SMTP). Sin embargo, los agentes de correo también participan en el proceso de envío y recepción de correos electrónicos. Además, el modelo SMTP incluye SMTP relay en escenarios específicos. Veamos qué significa cada uno de ellos y qué función tienen.

Servidor SMTP

El servidor SMTP es una aplicación para enviar correos electrónicos. Recibe mensajes electrónicos de clientes de correo electrónico (Gmail, Yahoo! Apple Mail, AOL, etc.) y los transfiere a otros servidores. Estos pueden ser otros servidores SMTP o un servidor de correo entrante. 

El servidor de correo electrónico SMTP puede ser local o basado en la nube. Un servidor SMTP local es una buena opción para aquellos que no quieren depender de servidores de terceros. Por otro lado, un servidor SMTP alojado en la nube requiere menos esfuerzo y puede ser más seguro en la mayoría de los casos.

Agentes de correo 

Hay cuatro agentes principales: 

  • MUA (Mail User Agent) es el cliente de correo electrónico que mencionamos anteriormente. Es una aplicación o un sitio web que utilizas para enviar y recibir mensajes de correo electrónico.
  • MSA (Mail Submission Agent) recibe correos electrónicos del cliente de correo electrónico, comprueba sus encabezados y verifica que las direcciones estén indicadas correctamente.
  • MTA (Mail Transfer Agent) es un programa de sendmail que procesa y transfiere correos electrónicos. Recibe mensajes de la MSA. La mayoría de los MTA modernos asumen las responsabilidades de MSA. En ese caso, la transferencia de mensajes no incluirá MSA. Los MTA más populares son Sendmail, Postfix y Exim.
  • MDA (Mail Delivery Agent) es el agente final antes de que sus correos electrónicos se entreguen al servidor SMTP del destinatario y luego se recuperen a través de servidores de correo electrónico entrantes (IMAP o POP3).

Tenga en cuenta que, muchas veces, los limites entre las responsabilidades de los agentes pueden ser borrosas, sin embargo, siguen siendo útiles para fines ilustrativos. En el mundo real, los servidores MUA, MTA y SMTP son los componentes más esenciales de la entrega de correo electrónico. 

SMTP Relay

SMTP relay es el proceso de transmisión de correos electrónicos entre servidores SMTP alojados en diferentes dominios (de @gmail.com a @yahoo.com, por ejemplo). 

Los MTA comprueban si los nombres de dominio son los mismos. Si lo son, el SMTP relay no sucederá. Pero si los dominios no son los mismos, las MTA consultarán los registros del Sistema de nombres de dominio (DNS) para encontrar la dirección IP del dominio del destinatario. Una vez que se localiza la IP, enrutarán el mensaje entre uno o varios MTA (SMTP relay) hasta que finalmente se entregue al servidor SMTP del destinatario.

¿Cómo funciona SMTP?

Una sesión SMTP comienza cuando el cliente abre una conexión de Protocolo de Control de Transmisión (conexión TCP, a veces llamada TCP/IP) al servidor SMTP. El servidor responde con un mensaje de apertura, expresado con el código 250. Este proceso a menudo se nombra como un apretón de manos SMTP. 

A continuación, el cliente envía un comando HELO (EHLO para ESMTP) y se identifica a sí mismo. A menudo sigue el comando con el nombre de dominio o la dirección IP. En palabras no técnicas, el cliente dice: “Hola, mi nombre es John El Cliente, estoy enviando un correo electrónico desde gmail.com, y mi IP es 192.0.2.0”. El servidor responderá de nuevo con el código 250.

Después de eso, comenzará la etapa de transferencia de correo electrónico. El contenido del correo electrónico se transferirá paso a paso con MAIL⁠FROM (john@gmail.com), RCPT TO (oliver@gmail.com) y DATA (‘Oye, ¿cómo has estado?’) . Si el servidor acepta la transacción, el cliente transferirá los encabezados de correo electrónico. Es necesario utilizar un indicador de fin de línea (punto ‘.’) una vez que todo ha sido transmitido.

El servidor responderá con el código 250 si la transacción tiene éxito. El cliente iniciará la terminación de la conexión SMTP con el commando QUIT, y el servidor cerrará el canal de transmisión con el código 221. Este es, por supuesto, un ejemplo simplificado sin un SMTP relay, reenvío, puertas de enlace o códigos de error. Para obtener más información sobre estos, consulte RFC 5321.

¿Qué pasa con la queue del SMTP? 

La cola de SMTP es un conjunto de correos electrónicos que están a la espera de ser entregados. Los correos electrónicos generalmente se ponen en la cola cuando el servidor SMTP receptor no está listo para aceptar correos electrónicos, o está enviando grandes volúmenes a la vez. Cuando el servidor responda, los correos electrónicos se entregarán uno por uno. La cola SMTP es una especie de búfer entre vos y el servidor receptor.

Comandos y respuestas SMTP

Mencionamos algunos de los comandos y respuestas SMTP en el ejemplo anterior. Pero, al enviar correos electrónicos con SMTP, es posible que encuentre otros comandos y respuestas. 

En general, los comandos son cadenas de caracteres alfabéticos que terminan con<CRLF>. Si se siguen parámetros adicionales, los caracteres serán terminados por<SP>.

Las respuestas (o comentários) son códigos de finalización numéricos que pueden ser positivos o negativos. Por lo general, son seguidos por una cadena de texto. 

Los comandos y las respuestas se componen de un conjunto de caracteres ASCII.

Comandos

  • HELO/EHLO – arranca el inicio de la sesión SMTP.

    Sintaxis: "EHLO" SP ( Domain / address-literal ) <CRLF> o "HELO" SP Domain <CRLF>
  • MAIL FROM – inicia la transacción de correo e incluye la ruta inversa y, a veces, parámetros opcionales.

    Sintaxis: MAIL⁠FROM:<reverse-path> [SP<mail-parameters>] <CRLF>
  • RCPT TO – indica el (los) destinatario(s) e incluye su dirección de correo electrónico (también conocida como ruta de reenvío) como argumento.

    Sintaxis: RCPT TO:<forward-path> [ SP<rcpt-parameters>] <CRLF>
  • DATA: solicita el permiso del servidor para transferir datos y lo hace una vez que recibe una respuesta positiva.

    Sintaxis:  "DATA" <CRLF>
  • VRFY – pide al servidor que verifique si el buzón en el argumento existe en el host local.

    Sintaxis: "VRFY" SP String <CRLF>
  • EXPN: hace lo mismo que VRFY, pero para la lista de correo.

    Sintaxis: "EXPN" SP String <CRLF>
  • NOOP – comprueba la capacidad del servidor para responder.

    Sintaxis: "NOOP" [ SP String ] <CRLF>
  • QUIT – inicia la terminación de la conexión.

    Sintaxis: "QUIT" <CRLF>
  • HELP: pide al servidor que verifique qué comandos admite. Puede incluir un comando específico como argumento.

    Sintaxis: "HELP" [ SP String ] <CRLF>
  • RSET – restablece la conexión SMTP y borra todos los buffers y tablas de status. La conexión SMTP se invertirá al estado inicial.

    Sintaxis: "RSET" <CRLF>

El protocolo SMTP también puede admitir algunos comandos ESMTP, como STARTTLS, AUTH y otros. 

Respuestas

Respuestas positivas comunes 

  • 250 – la acción solicitada está bien o completada 
  • 211 – estado del sistema o respuesta a HELP
  • 220 –  <domain> el servicio está listo
  • 221 – <domain> cierre del canal de transmisión
  • 354 – Iniciar entrada de correo (generalmente responde al comando DATA) 

Respuestas negativas o códigos de error

  • 500 – error de sintaxis o comando no se pudo reconocer 
  • 503 – secuencia incorrecta de comandos
  • 252 – el servidor no puede verificar al usuario. Seguirá aceptando el mensaje e intentará la entrega (responde al comando VRFY)
  • 450 – buzón no disponible 
  • 510 – Dirección de correo electrónico no válida

Puertos SMTP

Los puertos SMTP son puntos finales de comunicación que ayudan a identificar la ubicación exacta de las direcciones de Internet. Los puertos más comunes utilizados con SMTP son 25, 465, 587 y 2525. 

  • 25 es el puerto SMTP más antiguo, pero usarlo para enviar correos electrónicos ya no es común. Como no tiene mecanismos de seguridad, los spammers abusan de el en gran medida. Por esa razón, los proveedores de servicios de Internet (ISP) generalmente bloquean el puerto número 25. Se recomienda usarlo solo como puerto de relay. 
  • 465 es más seguro en comparación con 25, pero no es un puerto SMTP oficial y ahora está en desuso. Soporta encriptación SSL. Sin embargo, se recomienda evitar su uso siempre que sea posible. 
  • 587 es el puerto SMTP predeterminado recomendado con STARTTLS. Casi todos los proveedores de servicios de correo electrónico lo admiten. 
  • 2525 es una alternativa a 587. Se puede usar cuando 587 está bloqueado o no está disponible. 2525 nunca ha sido reconocido como un puerto SMTP oficial. Sea como sea, la mayoría de los ISP permiten transacciones a través de este puerto. 

Comparación de SMTP, IMAP y POP3

Aparte de SMTP, los protocolos de correo electrónico más comunes son IMAP y POP3. SMTP es un servidor de correo electrónico de salida utilizado para enviar y entregar correos electrónicos. IMAP y POP3 son protocolos de acceso a mensajes utilizados para recuperar mensajes entrantes del servidor de correo electrónico. 

IMAP es un protocolo de acceso a mensajes de Internet que se conecta al servidor y descarga mensajes bajo pedido. Los mensajes no se eliminarán una vez que se finalice la conexión. Con IMAP, los usuarios pueden acceder a sus correos electrónicos desde cualquier ordenador o dispositivo. 

POP3 o Post Office Protocol 3 también se conecta al servidor, pero descarga todos los mensajes recibidos. Una vez que se haya completado, eliminará todos los correos electrónicos del servidor. A diferencia de IMAP, POP3 depende del dispositivo. Más información sobre las diferencias entre estos protocolos está disponible aquí.

Cómo enviar correos electrónicos con SMTP 

Uno de los principales beneficios de SMTP es que facilita el envío de correos electrónicos desde diferentes aplicaciones o dispositivos. La mayoría de los lenguajes de programación permiten a los usuarios enrutar correos electrónicos salientes a través de SMTP de forma nativa o con la ayuda de diferentes bibliotecas. A diferencia de la API web (o Email API), la integración SMTP no requiere habilidades avanzadas de codificación. Vas a necesitar trabajar con credenciales SMTP (como host, puerto, nombre de usuario, contraseña y cifrado) y el lenguaje de programación relevante para completar esa tarea. Podes consultar nuestra publicación más reciente en el blog para obtener más detalles sobre eso.

SMTP como servicio: prueba y envío

SMTP (o, más precisamente, el servidor SMTP) se proporciona a los usuarios como un servicio para dos propósitos principales: pruebas y envío. 

En términos de pruebas, el servicio SMTP implica un servidor SMTP falso que captura el correo saliente. De esa manera, los correos electrónicos no llegan a las bandejas de entrada reales, creando un entorno seguro para las pruebas. 

Cuando se trata de envío de correo electrónico, el servicio SMTP es sinónimo de servicio de retransmisión SMTP. Los proveedores de correo electrónico tienen sus propios servidores SMTP que permiten a los usuarios enviar correos electrónicos de marketing o transaccionales. 

Idealmente, estos dos servicios SMTP se pueden combinar en una herramienta robusta como Mailtrap.

Mailtrap es una plataforma de entrega de correo electrónico que combina pruebas de correo electrónico y envío de correo electrónico. Es una infraestructura de correo electrónico completa que permite a los usuarios probar el servidor SMTP, enviar correos electrónicos con él y monitorear su rendimiento con análisis procesables.

Email Testing es un Sandbox que captura todo el tráfico SMTP en una bandeja de entrada virtual y elimina las posibilidades de spam de los usuarios. Puede inspeccionar y depurar fácilmente sus correos electrónicos en staging con HTML/CSS o verificaciones de spam, ver información técnica o usar funciones de reenvío manual/automático. Las pruebas de correo electrónico proporcionan múltiples bandejas de entrada para diferentes proyectos y etapas del producto. 

Email Sending es una infraestructura con altas tasas de entrega de correo electrónico por si mismo. Con su API de correo electrónico y servicio SMTP, la integración es fluida y sin esfuerzo. Todo lo que necesitas hacer es verificar su dominio y elegir el método preferido de integración. Una vez hecho esto, puedes llegar a las bandejas de entrada de los destinatarios en cuestión de segundos. 

El envío de correo electrónico también tiene análisis en profundidad procesables con informes detallados y paneles de vista en helicóptero que lo mantienen al tanto de sus métricas de entregabilidad.

Article by Diana Lepilkina Content Specialist @Mailtrap