Envío de correos con telnet y openssl en GNU Linux

Telnet es un protocolo de red, que aunque parece que éste en desuso, todavía nos puede servir para realizar muchas tareas a nivel de servidores. En el artículo veremos diferentes maneras de utilizarlo para enviar correos.

postal

Sobre Telnet

Se trata de un protocolo de red, que generalmente utiliza el puerto 23, que nos permite conectarnos a otra máquina y acceder a ella mediante una consola de comandos. Actualmente está en desuso, ya que otros protocolos como ssh, lo han dejado obsoleto. Añadido que tiene graves problemas de seguridad, ya que las credenciales de conexión viajan en texto plano. Aun así es muy útil para probar sistemas de correo, sin tener que utilizar ningún cliente para ello. Más adelante veremos cómo garantizar la seguridad de las comunicaciones con los sistemas de correo, combinando telnet con openssl.

Instalación y funcionamiento básico

En GNU Linux viene por defecto en la mayoría de distribuciones, si no es así lo podemos instalar fácilmente, en sistemas Debian y derivados, tipo Ubuntu o Linux Mint, sería así:

1
2
apt-get -y update
apt-get -y install telnet openssl

También instalamos openssl, que utilizaremos más adelante.

Su uso básico es:

telnet [servidor] [puerto]

Esto es, si tenemos un servidor de correo ficticio, por ejemplo smtp.ochobitscorreo.com, y utilizamos por defecto el puerto 587, sería así:

1
telnet smtp.ochobitscorreo.com 587

En muchas guías en Internet utilizan el puerto 25, pero hemos de recordar que está en desuso ya que es muy inseguro, y no se debería utilizar.

Si queremos utilizarlo igualmente, al igual que con los puertos 465 (SSL / TLS) y 587 (STARTTLS), debemos utilizar openssl. Para la ocasión he creado una cuenta de correo de test en openmailbox.org, plataforma de correo de la que ya hablé en su día y os la recomiendo.

La forma de conexión sería:

1
2
openssl s_client -starttls smtp -connect smtp.openmailbox.com:465
openssl s_client -starttls smtp -connect smtp.openmailbox.com:587

Al conectar veremos que utiliza y visualiza la llave pública del servidor al que nos conectamos. Una vez dentro escribimos:

1
ehlo openmailbox.org

Para que nos muestre los comandos disponibles:

1
2
3
4
5
6
7
8
9
10
11
12
250 DSN
ehlo openmailbox.org
250-mail2.openmailbox.org
250-PIPELINING
250-SIZE 4194304000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

El problema reside, que para poder utilizar nuestra cuenta, necesitamos tener nuestras credenciales de manera cifrada, utilizando base64 Para solucionarlo, previamente saldremos de la consola telnet con “quit“, y escribimos:

1
echo -ne '\0ochobitstest@openmailbox.org\0nuestra-contraseña' | base64

Guardamos el código que nos muestra y accedemos otra vez,  ésta vez, justo despues de la parte de ‘ehlo smtp.openmailbox.org’ , escribimos:

1
AUTH PLAIN código-MD5

Ahora escribimos el mensaje, lo enviaré a mi cuenta:

1
2
MAIL FROM:<ochobitstest@openmailbox.org>
RCPT TO:<davidochobits@openmailbox.org>

A continuación escribimos el contenido del mensaje, escribiendo la orden “DATA“, cuando finalicemos tecleamos: “.” + INTRO , para salir escribimos ‘quit

telnet-openssl-01

De manera adicional, justo despues de “DATA“, podemos añadir el asunto, escribiendo: “SUBJECT:[asunto]” Y con esto ya lo tenemos listo. Para el artículo he tenido que mirar bastante documentación, ya que la mayoría de la información por la red es erronea.

Los derechos de la imagen | Flickr

You may also like...

9 Responses

  1. Iván Barra dice:

    Excelente, de mis años con Nagios que no veía correo por telnet!! (más de 5 años)

    • davidochobits dice:

      Hola Iván,

      Lo cierto es que me he tenido que buscar la vida por necesidad, ya que llevo un tiempo instalando y configurando relays de correo, y utilizando telnet+openssl puedo probar las configuraciones.

      Gracias por pasarte!

  2. cnc dice:

    Porque no usar un simple:

    echo “HTML Message goes here” | mail -s “$(echo -e “This is the subject\nContent-Type: text/html”)” usuario@dominio.com

    La instalación con apt-get es minima en Ubuntu.

    • davidochobits dice:

      Hola cnc,

      Primero de todo, una de las grandes ventajas de GNU Linux es que puedes hacer las mismas cosas de diferentes maneras. Lo segundo, si has leído el artículo verás que utilizamos una conexión y certificado TLS. De la manera que tú lo has hecho iría el correo directo a la basura en el mejor de los casos, o directamente sería rechazado por el servidor.

      Gracias por pasarte y comentar.

  3. cnc dice:

    La verdad es que lo puse, porque hace poco necesitaba mandarme mensajes de unos servidores con Ubuntu con logs y errores,etc a mi correo en mi PC, y era una cosa que no hay probado nunca, (es una cosa común y una chorrada, pero nunca hasta ahora tuve esa necesidad), y simplemente envié con esto los datos, y me llega perfectamente a una cuenta en Outlook.

    Entiendo que lo del certificado y demás esta bien para otras cosas, pero para otras muchas cosas, con esto simplemente lo solucionas.

    Gracias por el blog, esta interesante!!!

  4. jose dice:

    Porque el \0 (barra invertida y cero) ?

  5. Uhmmm me va a resultar útil para un proyecto que tengo, es una biblioteca de utilidades de red en C++ y ya puestos estaría bien que fuera capaz de enviar correos…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR