Deliverability
¿Qué son los comandos SMTP y qué debes saber sobre ellos?
¿Por qué necesitamos los comandos SMTP y para qué sirven? Bueno, utilizamos los comandos SMTP (Simple Mail Transfer Protocol) para comunicarnos con los servidores de email. Estos comandos son esenciales para iniciar y gestionar el proceso de envío de emails. Al emitir comandos como «EHLO» (que inicia la conexión), «MAIL FROM» (que especifica la dirección de email del remitente) y otros, podemos indicar a los servidores de email cómo gestionar los emails que queremos enviar. Sin estos comandos, el servidor de email no sabría cómo procesar ni entregar nuestros mensajes.
¿Qué es SMTP?
Antes de que un email llegue siquiera a la bandeja de entrada, suceden muchas cosas entre bastidores. Todo empieza con el protocolo TLS (Transport Layer Security), que entra en acción para cifrar la conexión y mantener tus datos a salvo de miradas indiscretas. Luego el protocolo SMTP toma el mando y establece las reglas sobre cómo se entrega ese mensaje. Además, cada mensaje lleva un encabezado, básicamente el quién, qué y cuándo de tu email. ¿Quieres ver el proceso en acción? Abre tu línea de comandos. Con unos pocos comandos SMTP, puedes recorrer todo el trayecto desde el remitente hasta el servidor y detectar los problemas de entregabilidad antes de que se conviertan en un problema.
Entonces, ¿qué es el SMTP? El Simple Mail Transfer Protocol (SMTP) es solo un conjunto de reglas que gestiona el envío, la recepción y la retransmisión de emails.
Este es el desglose:
- El método SMTP establece una conexión entre tu cliente de email (el del remitente) y tu servidor SMTP.
- El servidor SMTP realiza una serie de verificaciones.
- El servidor SMTP recurre al SMTP para transportar tu email hasta el proveedor de buzones de email de tu destinatario, como Microsoft Outlook o Gmail.
- A continuación, el SMTP corta la conexión entre tu cliente de email y el servidor SMTP.
Para completar el proceso de envío y recepción de emails, el cliente de email de tu destinatario utiliza IMAP (otro protocolo) para descargar los mensajes del servidor de email IMAP receptor cuando tu suscriptor decide consultar su email. IMAP ayuda a gestionar los emails para que tus destinatarios puedan interactuar con ellos en la interfaz de usuario de su buzón.
¿Qué es el ESMTP?
Ten paciencia, solo queda un acrónimo más antes de adentrarnos en los comandos. El ESMTP (Extended Simple Mail Transfer Protocol) amplía las capacidades del SMTP para permitir el intercambio de archivos multimedia, como imágenes, archivos de audio y vídeos. El ESMTP incluye comandos adicionales que permiten las siguientes funciones:
- Autenticación del remitente
- Cifrado de emails con SSL
- Adjuntar archivos multimedia
- Restricción del tamaño de los emails según las especificaciones del servidor
- Transmisión simultánea a varios destinatarios
A continuación, repasaremos los comandos tanto ESMTP como SMTP.
¿Qué es un comando SMTP?
Un comando SMTP es una instrucción específica enviada desde un cliente de email a un servidor de email que le indica qué acción debe realizar, como enviar un mensaje, especificar un remitente o destinatario, o iniciar una conexión segura.
¿Realmente necesito conocer los comandos SMTP?
Sí: si te dedicas a desarrollar emails, necesitas conocer los comandos SMTP. Pero si simplemente tienes una cuenta de Gmail de usuario estándar, es probable que puedas reservar espacio en tu cerebro para curiosidades de Juego de Tronos.
Los comandos SMTP se utilizan en un orden concreto para facilitar la comunicación entre dos servidores a fin de entregar un email. Estos son algunos de los casos en los que tal vez quieras conocer los comandos SMTP:
- Quieres configurar el SMTP en tu ordenador o red
- Necesitas solucionar problemas de tu servicio de envío de emails
- Necesitas establecer contacto con tu servidor SMTP
- De acuerdo, esto es bastante específico, pero ¿y si quieres acceder al email en medio de una sesión Telnet? Telnet te permite acceder virtualmente a un ordenador e implementar un acceso colaborativo bidireccional en remoto
- También específico: intentas enviar emails desde un shell de Linux
- Quieres realizar una prueba de SMTP
Si alguno de estos casos de uso te resulta familiar, ¡sigue leyendo!
¿Cómo debería ser el flujo de una sesión SMTP?
Imagina una sesión SMTP como un diálogo entre tu cliente y un servidor SMTP. Tú envías comandos con caracteres alfabéticos, y el servidor responde con códigos numéricos.
Te preguntarás, ¿qué es un cliente? Un cliente puede ser tu cliente de email, como Gmail, que emite comandos en tu nombre. O bien puede ser un terminal que utilices para emitir comandos.
Por lo general, las sesiones SMTP siguen una secuencia estándar:
- Handshake: el cliente y el servidor establecen una conexión Transmission Control Protocol (TCP)
- Transferencia del email: el cliente pasa tu mensaje de email al servidor SMTP, y el servidor realiza las verificaciones de autenticación
- Terminación: el cliente y el servidor cierran la conexión TCP
¿Cuáles son algunos de los comandos SMTP esenciales?
Ahora que sabemos cómo es una sesión SMTP, repasemos algunos comandos SMTP y ESMTP esenciales. Los hemos enumerado en el orden en que podrían utilizarse:
- El comando HELO o ELHO
- El comando AUTH
- El comando MAIL FROM
- El comando RCPT TO
- El comando DATA
- El comando BDAT
- El comando VRFY
- El comando RSET
- El comando QUIT
- El comando HELP
1. El comando HELO o EHLO
El primer comando que debes conocer es el comando HELO. HELO inicia la sesión SMTP y permite al cliente saludar al servidor y presentarse. Este comando adopta como argumento el nombre de dominio o la dirección IP del cliente SMTP, como se muestra a continuación.
HELO mailgun.net
El comando HELO se considera en gran medida obsoleto, pero los clientes y mecanismos SMTP deben admitirlo como alternativa para comunicarse con implementaciones más antiguas.
¿Recuerdas que antes mencionamos que el ESMTP era una extensión del SMTP? Como tal, a veces el ESMTP tiene comandos diferentes a los del SMTP. EHLO es la alternativa de ESMTP a HELO en SMTP para los servidores que admiten ESMTP. El servidor SMTP responderá con un código de error SMTP si no admite ESMTP. En este caso, tendrás que iniciar el proceso de handshake de nuevo desde el principio. A continuación puedes ver un ejemplo de comando ESMTP.
EHLO mailgun.net
2. El comando AUTH
El comando AUTH es un comando ESMTP que autentica el cliente SMTP ante el servidor SMTP. Puede admitir diferentes palabras clave según el nivel de seguridad y el método de inicio de sesión: PLAIN, LOGIN y CRAM-MD5. Tu sesión estará autenticada cuando el servidor ofrezca una respuesta positiva. A continuación puedes ver el comando AUTH .
AUTH CRAM-MD5
Obtén más información sobre Palabras clave del comando AUTH .
3. El comando MAIL FROM
Una vez que hayas iniciado el handshake cliente-servidor con el comando HELO o EHLO, puedes utilizar el comando MAIL FROM para iniciar una transferencia de email. En concreto, tú (como remitente) indicas la dirección de email del remitente en el campo “De”. El comando MAIL FROM adopta la dirección de email del campo “De” como argumento, tal y como se muestra en el siguiente código de ejemplo SMTP.
MAIL FROM "test@mailgun.net"
4. El comando RCPT TO
Utiliza el comando RCPT TO para especificar el destinatario como un argumento. Si tienes más de un destinatario, utiliza RCPT TO para especificar cada destinatario por separado. A continuación puedes ver un ejemplo del comando RCPT TO.
RCPT TO "subscriber@recipientsinbox.com"
5. El comando DATA
Con el comando DATA, tu cliente SMTP pide permiso al servidor SMTP para transferir tu mensaje de email (los datos). Una vez que el servidor haya respondido con un código 354 para otorgar el permiso, el cliente entrega el contenido de tu email línea por línea. Utiliza una última línea que contenga un punto (“.”) para dar por finalizada la transferencia de datos.
A continuación puedes ver el ejemplo del comando DATA.
DATA
354 (server response code)
Date: Wed, 30 July 2022 06:04:34
From: test@mailgun.net
Subject: SMTP session tutorial
To: subscriber@recipientsinbox.com
Body text
.
6. El comando BDAT
El comando BDAT es la versión ESMTP del comando DATA que transfiere el contenido del email. BDAT admite dos argumentos:
- La longitud del fragmento de datos (en octetos)
- Un indicador de que el fragmento de datos está finalizando
A continuación puedes ver un ejemplo del comando BDAT.
BDAT 67 LAST
To: subscriber@recipientsinbox.com
From: test@mailgun.net
Subject: SMTP session tutorial
250 Message OK, 67 octets received
BDAT se utiliza en Microsoft Exchange Server.
7. El comando VRFY
Emite el comando VRFY para pedirle al servidor que confirme que un nombre de usuario o buzón concreto existe en el localhost. Ten en cuenta que algunos servidores de email SMTP ignoran el comando VRFY, ya que puede ser una brecha de seguridad de la que se aprovechen los hackers para robar direcciones de email. A continuación puedes ver un ejemplo del comando VRFY.
VRFY user2
250 Jada Jonesjadaj@mailgun.net
8. El comando RSET
¿Lo tienes todo listo para restablecer tu conexión SMTP al estado inicial sin cortarla? Utiliza el comando RSET. Este comando no admite argumentos. A continuación puedes ver el comando de muestra.
RSET
9. El comando QUIT
Bien, digamos que has terminado con tu sesión SMTP. Quieres borrar los datos y finalizar tu sesión. Simplemente utiliza el comando QUIT. Una vez que el servidor responda con un código 221, tu cliente cerrará la conexión. A continuación puedes ver un ejemplo del comando QUIT.
QUIT
10. El comando HELP
Este es probablemente el comando más útil. ¿Necesitas ayuda pero no sabes a dónde recurrir? Prueba primero el comando HELP. Este comando muestra una lista de posibles comandos que admite el servidor SMTP. Puedes proporcionar comandos específicos como un argumento para el comando HELP y así recibir ayuda sobre comandos concretos. A continuación puedes ver el ejemplo del comando HELP.
HELP
¿Cuáles son los códigos de respuesta SMTP?
Si los comandos SMTP son la forma en que te comunicas con un servidor SMTP a través de un cliente de email, ¿cómo se comunica contigo el servidor SMTP? Es muy fácil: a través de códigos de respuesta SMTP.
Los códigos de respuesta SMTP son secuencias numéricas de tres dígitos. Cada dígito indica algo diferente. Pongamos como ejemplo un código de respuesta 250:
- El primer dígito (“2”) indica si tu comando fue bueno, malo o está incompleto
- El segundo dígito (“5”) te indica qué tipo de respuesta se ha enviado
- El tercer dígito (“0”) proporciona información adicional sobre tu comando
Como podrás imaginar, el primer dígito es el más importante porque te da una idea de si tu comando ha funcionado o no. Consulta la siguiente tabla de RFC 5321 (Simple Mail Transfer Protocol) que expone qué significan los distintos primeros dígitos:
| Código de respuesta | Significado |
|---|---|
| 2.y.z | El comando enviado se ha completado correctamente en el servidor remoto. El servidor remoto está listo para el siguiente comando. |
| 3.y.z | El comando ha sido aceptado, pero el servidor remoto necesita más información antes de poder completar la operación. El servidor de envío debe enviar un nuevo comando con la información necesaria. |
| 4.y.z | El servidor remoto no ha aceptado el comando por un motivo que podría ser temporal. El servidor de envío debería intentar conectarse de nuevo más tarde para ver si el servidor remoto puede aceptar el comando correctamente. El servidor de envío seguirá intentando establecer la conexión hasta que se complete correctamente (indicado por un código 2.y.z) o falle de forma permanente (indicado por un código 5.y.z). Un ejemplo de error temporal SMTP es el poco espacio de almacenamiento en el servidor remoto. Una vez que haya más espacio disponible, el servidor remoto debería ser capaz de aceptar el comando correctamente. |
| 5.y.z | El servidor remoto no ha aceptado el comando por un motivo que no se puede subsanar. El servidor de envío no volverá a intentar la conexión y enviará un informe de no entrega al usuario que ha enviado el mensaje. Un ejemplo de error irrecuperable es un mensaje enviado a una dirección de email que no existe. |
En resumen
¡Y ya está! Lo sabemos, es información superligera y sencilla. Ya sea que busques una solución de servidor SMTP para potenciar tu envío de emails, o si buscas información sobre qué puerto SMTP utilizar exactamente (¿25? ¿587? ¿2525?), Mailgun tiene lo que necesitas.
Como siempre, no dudes en ponerte en contacto con nosotros. Déjanos ayudarte a enviar hoy mismo.