En el mundo del correo electrónico, hay muchas facetas en la prueba, pero una de las pruebas más básicas que puedes hacer es simplemente telnet a un servidor SMTP determinado. Esta verificación SMTP es útil para determinar si existen o no los problemas más básicos.
¿Está el servidor en funcionamiento?
¿Hay un cortafuegos que bloquee la comunicación?
¿Permite el servidor de correo el reenvío de un dominio/dirección de correo electrónico particular?
¿Qué comandos SMTP admite el servidor de correo?
¿Responde el servidor con el nombre de host correcto?
¿Funciona la conexión fuera de cualquier software o API de terceros?
Todas estas preguntas y más se pueden responder con una simple prueba de telnet.
Antes de empezar, asegúrate de abrir nuestra pieza complementaria a esta publicación: ¿A dónde se envían los mensajes de rebote? 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 correo electrónico usando Telnet?
Enviar correos electrónicos a través de telnet puede ayudarte a identificar problemas de entregabilidad dentro de tu configuración actual.
Antes de enviar un correo electrónico usando telnet, confirma que telnet está instalado y habilitado en tu 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 características de Windows”. Con esta ventana abierta, selecciona “cliente telnet” y luego haz clic en Aceptar.
Una vez que se ha verificado que un cliente telnet está instalado en el servidor, abre la ventana de terminal donde ingresarás tus comandos de aviso. En Windows, usa la combinación de teclas Windows + R, escribe “cmd” y presiona Enter. Para los usuarios de Mac, encontrarás 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, necesitaremos el registro DNS MX para un dominio determinado. Esto se puede encontrar con el siguiente comando (para estos ejemplos se usará port25.com, pero se puede sustituir por cualquier dominio):
Windows:
nslookup -type=mx port25.com
Respuesta no autoritativa:
port25.com preferencia MX = 100, intercambiador de correo = mail.port25.com
Linux:
nslookup -type=mx port25.com
Respuesta no autoritativa:
port25.com intercambiador de correo = 100 mail.port25.com.
SMTP utiliza uno de tres puertos: 25, 465 o 587, que es comúnmente usado por Microsoft Outlook. Si tu rerouteo SMTP utiliza un puerto diferente al 25, como se muestra en el ejemplo, utilizarás el puerto especificado por la respuesta del servidor de intercambio de correo a la búsqueda de nslookup. También puedes verificar el puerto en el que depende tu SMTP preguntando a tu 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 averiguarlo, podemos usar un sitio web como:
Con la dirección IP, ejecuta el siguiente comando, donde A.B.C.D es la dirección IP.
Windows:
nslookup -type=ptr A.B.C.D
Respuesta no autoritativa:
D.C.B.A.in-addr.arpa nombre = server.example.com
Linux:
nslookup -type=ptr A.B.C.D
Respuesta no autoritativa:
D.C.B.A.in-addr.arpa nombre = server.example.com
server.example.com es solo un ejemplo, y tus 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, usa el siguiente comando:
telnet mail.port25.com 25
Debería mostrarse algo similar a lo siguiente:
Intentando 69.63.149.30... Conectado a mail.port25.com (69.63.149.30). El carácter de escape es '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) servicio ESMTP listo
Si recibes un mensaje de error como “no se puede conectar” en este punto, o el número de puerto es incorrecto o el servidor de correo está enfrentando problemas.
El primer comando que necesitamos emitir al servidor de correo para nuestro probador de correo 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 cual nos estamos conectando como se determinó anteriormente.
EHLO server.example.com
Debería recibirse algo similar a lo siguiente:
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 el servidor SMTP acepta. No todos los servidores SMTP admiten los mismos conjuntos 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 emitir es el comando MAIL FROM. Esto determina la dirección a la que se enviarán los rebotes. Esto no es lo mismo que el encabezado de from, que es la dirección de correo electrónico mostrada en un cliente de correo electrónico.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Asegúrate de usar el nombre de dominio que corresponde al dominio de tu servidor de correo. Por ejemplo, si el dominio de tu correo es anycompany.com, querrás 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 indica al servidor de correo SMTP a quién debe enviarse el mensaje. Esto puede ser el mismo o diferente del encabezado to, que es la dirección de correo electrónico mostrada en el cliente de correo electrónico.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Verifica la dirección de tu destinatario antes de enviar el comando RCPT TO — un mensaje de error que se muestre aquí puede indicar un destinatario de correo electrónico mal escrito o bloqueado.
El último comando que se ejecuta antes de comenzar con el cuerpo del mensaje es el comando DATA. Este comando informa al servidor de correo SMTP que todo lo que se va a enviar a continuación es el cuerpo del mensaje (que también contiene los encabezados).
DATA 354 envía mensaje
Es importante tener en cuenta 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, ingresa 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 distintos encabezados. Como mínimo, un mensaje debe contener un encabezado de 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 configurados, ahora agregamos una línea en blanco con un retorno de carro/salida de línea (simplemente presiona enter dos veces) y luego comenzamos el cuerpo real del mensaje.
Hola Mundo, Este es un mensaje de prueba enviado desde una sesión manual de telnet. Atentamente, administrador SMTP
Con el mensaje completo, necesitamos decirle al servidor SMTP que hemos terminado con el mensaje y que queremos que el servidor de correo SMTP lo acepte. Esto se hace con un punto en una línea por sí mismo. Si durante la escritura de un mensaje se necesita un punto en una línea por sí mismo, debes poner 2 puntos, el primero escapando al segundo.
. 250 2.6.0 mensaje recibido
Si recibes un mensaje de error en lugar de la notificación de “recibido”, registra los detalles relevantes y contacta a tu proveedor de correo electrónico para más asistencia.
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 ahora ha aceptado el mensaje para entrega, tu prueba de envío de correo telnet está completa, y debería estar en la bandeja de entrada de la dirección RCPT TO!!!
Aquí están todos los comandos sin interrupción:
telnet mail.port25.com 25 Intentando 69.63.149.30... Conectado a mail.port25.com (69.63.149.30). El carácter de escape es '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) servicio ESMTP listo 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 envía 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 Hola Mundo, Este es un mensaje de prueba enviado desde una sesión manual de telnet. Atentamente, administrador 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 te permite probar capacidades de conexión rápidamente y a menor costo que equipos o software de diagnóstico robustos.
¿Cómo pruebo SMTP usando la autenticación Telnet?
Ahora que sabes cómo verificar una conexión SMTP con telnet, discutiremos los procedimientos de autenticación. La autenticación SMTP ayuda a prevenir grandes cantidades de spam que lleguen a las bandejas de entrada de los lectores, aunque no todos los servidores de intercambio de correo lo requieren.
La diferencia principal en los protocolos de autenticación modernos es la presencia de una codificación base64. Base64 convierte datos binarios en el formato de texto ASCII requerido por los servidores de correo para una transmisión de datos exitosa. Es una forma de representar tus credenciales de inicio de sesión — alguna combinación de texto — en un formato numérico que la computadora puede entender.
Puedes generar tu base64 utilizando software o herramientas en línea gratuitas. Una vez que comuniques la información al servidor de correo, este comparará estos datos con sus registros para determinar la autenticación.
Para probar la autenticación SMTP a través de telnet, completa los siguientes pasos:
Abre la terminal y conéctate con el servidor de correo usando el nombre del servidor telnet y el comando de acceso — mail.port25.com en el ejemplo anterior.
Saluda al servidor con EHLO o HELO, ingresa AUTH LOGIN y espera la respuesta de la computadora.
Ingresa el nombre de usuario codificado en base64 y permite que el servidor responda.
Ingresa la contraseña codificada en base64, y deberías recibir una respuesta como “la autenticación tuvo éxito”.
Procede con MAIL FROM, RCPT TO, DATA y QUIT para enviar tu correo electrónico autenticado.