
En el mundo del email, hay muchos aspectos para probar, pero una de las pruebas más básicas que puedes hacer es simplemente telnet en un servidor SMTP dado. Este chequeo de SMTP es útil para determinar si los problemas más básicos existen o no.
En el mundo del correo electrónico, hay muchas facetas para probar, pero una de las pruebas más básicas que puedes hacer es simplemente telnet en un servidor SMTP dado. Esta verificación SMTP es útil para determinar si los problemas más básicos existen o no.
¿Está el servidor activo?
¿Hay un firewall bloqueando la comunicación?
¿Permite el servidor de correo la retransmisión de un dominio/dirección de correo electrónico en particular?
¿Qué comandos SMTP soporta el servidor de correo?
¿Responde el servidor con el nombre de host correcto?
¿Funciona la conexión fuera de cualquier software de terceros o APIs?
Todas estas preguntas y más se pueden responder con una simple prueba de telnet.
Antes de comenzar, asegúrate de abrir nuestra pieza complementaria a este artículo: ¿A dónde se envían los mensajes rebotados? en una nueva pestaña para que puedas leerlo después de terminar con este blog.
Como nota, los comandos utilizados en los siguientes ejemplos (así como comandos adicionales) se cubren en la sección 4.1 de RFC 2821.
¿Cómo envío un Email usando Telnet?
Enviar un correo electrónico a través de telnet puede ayudarle a identificar problemas de entrega dentro de su configuración actual.
Antes de enviar un correo electrónico usando telnet, confirme que telnet esté instalado y habilitado en su computadora. La mayoría de las computadoras vienen preinstaladas con un cliente telnet. Para aquellas versiones de Windows que no lo tienen, se puede instalar abriendo la sección "Programas y características" del panel de control y seleccionando "Activar o desactivar las características de Windows". Con esta ventana abierta, seleccione "cliente telnet" y luego haga clic en Aceptar.
Una vez que se haya verificado que un cliente telnet está instalado en el servidor, abra la ventana de terminal donde ingresará sus comandos de aviso. En Windows, use Windows + R, escriba "cmd" y presione enter. Para los usuarios de Mac, encontrará el ícono de terminal abriendo Finder y buscando "Utilidades" en la página de Aplicaciones, o ingresando "terminal" en la función de búsqueda de Launchpad.
A continuación, necesitamos encontrar un servidor de correo para iniciar sesión. Para esto, necesitamos el registro DNS MX para un dominio dado. Esto se puede encontrar con el siguiente comando (en estos ejemplos se usará port25.com, pero se puede sustituir cualquier dominio):
Windows:
nslookup -type=mx port25.com
Respuesta no autorizada:
port25.com MX preference = 100, mail exchanger = mail.port25.com
Linux:
nslookup -type=mx port25.com
Respuesta no autorizada:
port25.com mail exchanger = 100 mail.port25.com.
SMTP utiliza uno de tres puertos: 25, 465, o 587, que Microsoft Outlook usa comúnmente. Si su retransmisión SMTP utiliza un puerto diferente al 25 como se muestra en el ejemplo, usará el puerto especificado por la respuesta del servidor de intercambio de correo al nslookup. También puede verificar en qué puerto confía su SMTP preguntando a su administrador o iniciando sesión en el servidor de intercambio de correo y revisando los protocolos.
A continuación, necesitamos el DNS PTR para la IP que vamos a usar. Primero necesitamos saber qué dirección IP ve internet que tenemos. Para encontrarla podemos usar un sitio web como:
Con la dirección IP ejecute el siguiente comando, donde A.B.C.D es la dirección IP.
Windows:
nslookup -type=ptr A.B.C.D
Respuesta no autorizada:
D.C.B.A.in-addr.arpa name = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Respuesta no autorizada:
D.C.B.A.in-addr.arpa name = server.example.com
server.example.com es solo un ejemplo, y sus resultados serán diferentes.
Así que ahora que tenemos el registro MX para port25.com y el PTR para la IP que vamos a usar, es hora de iniciar sesión en el servidor SMTP. Para hacerlo, use el siguiente comando:
telnet mail.port25.com 25
Algo similar a lo siguiente debería mostrarse ahora:
Trying 69.63.149.30... Conectado a mail.port25.com (69.63.149.30). Carácter de escape es '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP service ready
Si recibe un mensaje de error como "no se puede conectar" en este punto, o el número de puerto es correcto o el servidor de correo está enfrentando problemas.
El primer comando que necesitamos enviar al servidor de correo para nuestro probador de correo electrónico SMTP es el EHLO o HELO. Este es un saludo básico que inicia la comunicación entre el cliente telnet y el servidor SMTP. También se pasa el DNS PTR para la dirección IP desde la que nos estamos conectando según lo determinado previamente.
EHLO server.example.com
Algo similar a lo siguiente debería ser devuelto:
250-mail.port25.com dice hola 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
Esto muestra los comandos SMTP que acepta el servidor SMTP. No todos los servidores SMTP admiten el mismo conjunto de comandos. Por ejemplo, yahoo solo muestra lo siguiente:
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
Y aol muestra solo uno con:
250 DSN
El siguiente comando que necesitamos enviar es el comando MAIL FROM. Este determina la dirección a la que se envían los rebotes. Esto no es lo mismo que el encabezado from, que es la dirección de correo electrónico que se muestra en un cliente de correo electrónico.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Asegúrese de usar el nombre de dominio correspondiente al dominio de su servidor de correo. Por ejemplo, si el dominio de su correo electrónico es anycompany.com, querrá usar you@anycompany.com en lugar de un correo electrónico externo como you@free-mail-provider.com. Las variaciones en los nombres de dominio pueden causar que aparezca un mensaje de error.
Ahora que se ha enviado el comando MAIL FROM podemos enviar el comando RCPT TO. Este comando le dice al servidor de correo SMTP a quién debe enviarse el mensaje. Este puede ser el mismo o diferente que el encabezado to, que es la dirección de correo electrónico que se muestra en el cliente de correo electrónico.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Verifique doblemente la dirección de su destinatario antes de enviar el comando RCPT TO — un mensaje de error que se muestra aquí puede indicar un destinatario de correo electrónico mal escrito o bloqueado.
El último comando que se ejecuta antes de comenzar el cuerpo del correo es el comando DATA. Este comando le hace saber al servidor de correo SMTP que todo lo demás que está a punto de ser enviado es el cuerpo del mensaje (que también contiene los encabezados).
DATA 354 enviar mensaje
Es importante notar que si un servidor de correo admite PIPELINING, como lo hace mail.port25.com, el servidor de correo SMTP puede esperar hasta que se emita el comando DATA antes de responder a cualquier otro comando después del EHLO/HELO. En este caso, ingrese los comandos MAIL FROM, RCPT TO, y DATA antes de esperar una respuesta.
Ahora que se ha enviado el comando DATA podemos comenzar a enviar el contenido del mensaje. Esto comienza con los diversos encabezados. Como mínimo, un mensaje debe contener un encabezado to, from, subject, y date. Los encabezados ingresados aquí se mostrarán al usuario en su cliente de correo electrónico.
From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Subject: mensaje de prueba enviado desde una sesión manual de telnet Date: Wed, 11 May 2011 16:19:57 -0400
Con los encabezados establecidos, ahora añadimos una línea en blanco con un retorno de carro/alimentación de línea (simplemente presione enter dos veces) y luego comenzamos el cuerpo real del mensaje.
Hello World, Este es un mensaje de prueba enviado desde una sesión manual de telnet. Atentamente, administrador de SMTP
Con el mensaje completo, necesitamos decirle al servidor SMTP que hemos terminado con el mensaje y queremos que el servidor de correo SMTP lo acepte. Esto se hace con un punto en una línea por sí solo. Si durante la redacción de un mensaje se necesita un punto en una línea por sí solo, debe agregar 2 puntos, el primero escapando al segundo.
. 250 2.6.0 mensaje recibido
Si recibe un mensaje de error en lugar de la notificación "recibido", registre los detalles relevantes y contacte a su proveedor de correo electrónico para obtener más ayuda.
Por último, se envía el comando QUIT para cerrar la conexión:
QUIT 221 2.0.0 mail.port25.com dice adiós
Con eso, el servidor de correo ha aceptado el mensaje para su entrega, su prueba de envío de correo electrónico telnet está completa, y debería estar sentado en el inbox de la dirección RCPT TO.
Aquí están todos los comandos sin interrupción:
telnet mail.port25.com 25 Trying 69.63.149.30... Conectado a mail.port25.com (69.63.149.30). Carácter de escape es '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) ESMTP service ready EHLO server.example.com 250-mail.port25.com dice hola 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 enviar mensaje From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Subject: mensaje de prueba enviado desde una sesión manual de telnet Date: Wed, 11 May 2011 16:19:57 -0400 Hello World, Este es un mensaje de prueba enviado desde una sesión manual de telnet. Atentamente, administrador de SMTP . 250 2.6.0 mensaje recibido QUIT 221 2.0.0 mail.port25.com dice adiós
Enviar un correo electrónico usando telnet le permite probar las capacidades de conexión de manera rápida y a menor costo que el equipo o software de diagnóstico robusto.