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. apt-get -y update
  2. 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. openssl s_client -starttls smtp -connect smtp.openmailbox.com:465
  2. 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. 250 DSN
  2. ehlo openmailbox.org
  3. 250-mail2.openmailbox.org
  4. 250-PIPELINING
  5. 250-SIZE 4194304000
  6. 250-VRFY
  7. 250-ETRN
  8. 250-AUTH PLAIN LOGIN
  9. 250-AUTH=PLAIN LOGIN
  10. 250-ENHANCEDSTATUSCODES
  11. 250-8BITMIME
  12. 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. MAIL FROM:<ochobitstest@openmailbox.org>
    
  2. 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