¿Qué es SMTP? Definición y fundamentos

Si hiciéramos una comparación con el sistema de correo tradicional donde el email es la carta, el SMTP sería el cartero. Sin el protocolo de red estándar del Internet moderno, el envío de documentos, fotos de nuestros viajes y divertidos vídeos de gatos no sería posible. La explicación es más sencilla de lo que parece: cuando envías un correo electrónico, no solo va directamente al destinatario, sino que pasa por un complejo proceso de comunicación con numerosas instancias antes de llegar a su destino.

¿En qué consiste el protocolo SMTP?

SMTP significa Simple Mail Transfer Protocol, que puede traducirse como “protocolo de transferencia simple de correo”. Se trata de un protocolo de conexión de Internet y, como tal, se encuentra en la séptima capa del modelo OSI, la capa de aplicación. Al igual que cualquier otro protocolo de red, contiene reglas para la comunicación correcta entre los ordenadores de una red. SMTP es responsable de procesar y reenviar correos electrónicos de un remitente a un destinatario.

Desde su lanzamiento en 1982 como sucesor del “Mail Box Protocol” en Arpanet, SMTP se ha convertido en el protocolo estándar para el envío de correos electrónicos. Para el usuario medio, el procedimiento que sigue el protocolo SMTP sigue siendo en gran medida invisible, ya que se lleva a cabo en segundo plano mediante el programa de correo electrónico en cuestión. Solo tendremos que configurar el protocolo SMTP si el software, el gestor de correo que tengamos instalado en nuestro ordenador o la aplicación de correo de nuestro móvil no lo determina de forma automática.

Hecho

Sendmail fue uno de los primeros agentes de transferencia de correo (MTA) compatible con el protocolo SMTP.

A continuación, te mostramos una descripción general de las direcciones de los servidores y puertos SMTP de algunos de los proveedores de correo electrónico más populares:

Proveedor de email

Dirección del servidor SMTP

Puerto SMTP

Yahoo

smtp.mail.yahoo.com

587

GMX

mail.gmx.net

587

Gmail

smtp.gmail.com

587 (TLS/STARTTLS), 465 (SSL)

¿Cómo funciona el protocolo SMTP?

Entender el proceso SMTP significa comprender cómo funciona el envío de correos electrónicos. Básicamente, el proceso es el siguiente:

  1. El cliente SMTP, es decir, el remitente, carga el correo electrónico en el servidor SMTP, es decir, en el servidor de correo saliente del proveedor de correo electrónico correspondiente. Esto se hace a través de una aplicación de webmail en el navegador o a través de un programa de correo electrónico (técnicamente llamado "Mail User Agent" (MUA para abreviar) como Windows Live Mail o Mozilla Thunderbird.
     
  2. El servidor SMTP se pone en contacto con el servidor DNS y este servidor busca la dirección IP del servidor SMTP de destino (también llamado "Mail Delivery Agent", MDA para abreviar), que se almacena para la dirección del destinatario del correo electrónico.
     
  3. El servidor SMTP envía el correo electrónico a través de uno o varios “Mail Transfer Agents” (MTA) al servidor SMTP de destino. Cada una de estas operaciones de reenvío se realiza de acuerdo con el protocolo SMTP.
     
  4. El servidor SMTP de destino almacena temporalmente el correo electrónico en el almacén de mensajes.
     
  5. El destinatario MUA descarga el correo electrónico ya sea a través de IMAP o POP3.

¿Cómo funciona una sesión SMTP?

La interacción entre el cliente SMTP y el servidor SMTP mencionado en el primer paso del procedimiento representa la sesión SMTP real. Cada sesión consiste en una secuencia de comandos SMTP del cliente y respuestas en forma de códigos de estado del servidor.

Descripción general de los comandos SMTP

De acuerdo con las especificaciones SMTP aplicables, cada implementación del protocolo de red debe soportar al menos los siguientes ocho comandos, que consisten en caracteres ASCII de 7 bits:

Comando SMTP

Significado

HELO

“Hello.” – El cliente se conecta con el nombre de su ordenador e inicia la sesión con él.

MAIL FROM

El cliente nombra al remitente del correo electrónico.

RCPT TO

“Recipient” – El cliente nombra al destinatario del correo electrónico.

DATA

El cliente inicia la transmisión del correo electrónico.

RSET

El cliente interrumpe la transmisión iniciada, pero mantiene la conexión entre el cliente y el servidor.

VRFY/EXPN

“Verify”/“Expand” – El cliente comprueba si un buzón de correo está disponible para la entrega de mensajes.

NOOP

El cliente solicita una respuesta del servidor para evitar la desconexión por tiempo muerto.

QUIT

El cliente termina la sesión.

Descripción general de los códigos de estado del servidor

El servidor responde a cada uno de estos comandos SMTP del cliente con un código de estado de tres dígitos que incluye un mensaje de texto plano. Para una mejor comprensión hemos traducido estos mensajes a castellano en el siguiente resumen:

Código de estado

Mensaje de texto plano (traducido al español)

 

Códigos de estado que indican que el servidor ha ejecutado correctamente el comando:

200

(Respuesta de éxito no estándar)

211

Solicitud del estado del sistema o de ayuda del sistema

214

Solicitud de ayuda para la ejecución de un comando

220

El servidor está listo para la sesión SMTP.

221

El servidor finaliza la conexión

250

OK - Comando ejecutado

251

OK - No hay usuario local disponible, el correo se reenvía

252

OK - la dirección del destinatario no puede ser verificada, la transmisión todavía se intenta

253

OK - Los mensajes se ajustan a “Pendiente”

 

Códigos de estado que indican que el servidor ha entendido el comando, pero necesita más información para procesarlo:

354

El servidor inicia la recepción de correo

 

Códigos de estado que indican que el servidor ha detectado un error temporal, pero que el comando aún puede ser procesado:

421

El servidor no está disponible, la conexión se interrumpe

450

Comando no ejecutado, buzón de correo no disponible

451

La ejecución del comando finalizó debido a un error local

452

Comando no ejecutado, porque no hay suficiente memoria en el sistema

 

Códigos de estado que indican que el servidor ha detectado un error fatal y que el comando no puede ser procesado:

500

Error de sintaxis, comando desconocido

501

Error de sintaxis en parámetros o argumentos

502

El comando no existe

503

Secuencia de comandos no válida

504

El parámetro de comando no existe

521

El servidor no acepta correos electrónicos

530

Acceso denegado

550

Comando no ejecutado, buzón de correo no disponible

551

No hay ningún usuario local disponible, intente reenviarlo

552

Ejecución de comando abortada, error de asignación de memoria

553

Comando no ejecutado, nombre de buzón no válido

554

Fallo en la transmisión

Sesión de ejemplo de SMTP

Una sesión SMTP entre el cliente y el servidor puede, por ejemplo, ejecutarse como se indica a continuación:

Parte

Comandos y códigos de estado SMTP

Explicación

Servidor:

220 smtp.ejemplo.com ESMTP Postfix

Una vez establecida la conexión, el servidor SMTP responde.

Cliente:

HELO relay.ejemplo.com

El cliente SMTP inicia sesión con tu nombre de host.

Servidor:

250 smtp.ejemplo, Buenos Días

El servidor confirma el registro.

Cliente:

MAIL FROM:<jose@ejemplo.com>

El cliente especifica la dirección del remitente del MUA.

Servidor:

250 OK

El servidor lo confirma.

Cliente:

RCPT TO:<jefe@lugardetrabajo.com>

 

El cliente especifica la dirección del destinatario.

Servidor:

250 OK

El servidor lo confirma.

Cliente:

DATA

El cliente inicia la transmisión del correo electrónico.

Servidor:

354 End data with <CR><LF>.<CR><LF>

El servidor inicia la recepción y especifica que el texto del correo electrónico debe cerrarse con un punto (".").

Cliente:

From: “José Ejemplo” <jose@ejemplo.com>

To: Jefe del Lugar de Trabajo <jefe@lugardetrabajo.com>

Date: Lunes, 12. de marzo de 2018 10:03:42

Subject: Baja por enfermedad

 

Estimado jefe:

Me temo que hoy no podré asistir al trabajo por enfermedad. Enviaré por fax, lo antes posible, el certificado de mi médico a recursos humanos.

Le pido su comprensión,

José Ejemplo

El cliente pasa el texto del correo electrónico, lo resalta con un salto de línea después de "Asunto: baja por enfermedad" y lo termina con el punto deseado.

Servidor:

250 OK: queued as 15432

El servidor confirma la recepción correcta del correo electrónico y lo añade a la cola.

Cliente:

QUIT

El cliente señala el final de la sesión.

Servidor:

221 Adios

El servidor termina la conexión.

¿Cuáles son las desventajas del protocolo SMTP?

SMTP tiene dos inconvenientes inherentes al protocolo de red. La primera es que el envío de un correo electrónico a través de SMTP no devuelve una confirmación de envío útil. Aunque las especificaciones del protocolo prevén tal notificación, su formato no está definido por defecto, de modo que normalmente solo se devuelve un mensaje de error en inglés que incluye el encabezamiento del mensaje no entregado. Esto dificulta la determinación de la causa de la transmisión fallida (por ejemplo, una dirección incorrecta o un buzón de correo sobrecargado al final del destinatario).

La segunda desventaja del SMTP es que los usuarios no se autentican cuando se establece una conexión y, por lo tanto, el remitente de un correo electrónico es poco fiable. Como resultado, los SMTP abiertos se utilizan a menudo para el envío masivo de spam. Los autores utilizan direcciones de remitente falsas y arbitrarias para que no puedan ser rastreadas (mail spoofing). A pesar de esto, hoy en día se utilizan muchas técnicas de seguridad para prevenir el mal uso de los servidores SMTP. Por ejemplo, los correos electrónicos sospechosos son rechazados o puestos en cuarentena (carpeta de spam). El protocolo de identificación de DomainKeys, el Sender Policy Framework (SPF) o las listas grises son responsables de ello. Además, se ha vuelto más o menos estándar recibir correos electrónicos no solo a través del puerto tradicional 25/TCP, sino también a través del puerto 587/TCP, con el fin de garantizar la transmisión exclusivamente a usuarios autentificados.

¿Qué es el ESMTP?

En respuesta al creciente problema de spam en Internet, en 1995 se publicó una extensión a SMTP: Extended SMTP (ESMTP para abreviar). Complementa el protocolo con comandos adicionales en código ASCII de 8 bits, que han permitido a muchas nuevas funciones ahorrar ancho de banda y proteger los servidores. Estos incluyen, por ejemplo:

  • Autenticación del remitente
  • Cifrado SSL de correos electrónicos
  • Posibilidad de adjuntar archivos multimedia a los correos electrónicos
  • Restricciones de tamaño del correo electrónico según los valores predeterminados del servidor
  • Envío simultáneo a varios destinatarios
  • Mensajes de error normalizados en caso de que no se pueda realizar la entrega

Finalmente, te mostramos algunos ejemplos de comandos ESMTP:

Comando ESMTP

Significado

EHLO

El “Hello” alternativo en el registro expandido. El cliente se conecta con el nombre de su ordenador e inicia la sesión con él. Si el servidor es compatible con ESMTP, la sesión se inicia correctamente. De lo contrario, el cliente debe utilizar SMTP.

8BITMIME

El cliente solicita al servidor que permita el juego de caracteres ASCII de 8 bits en el cuerpo del mensaje.

SIZE

El cliente solicita al servidor que especifique el tamaño máximo permitido de correo electrónico en bytes.

STARTTLS

El cliente pregunta si el servidor admite el cifrado TLS.