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.
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í:
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í:
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:
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:
ehlo openmailbox.org
Para que nos muestre los comandos disponibles:
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:
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:
AUTH PLAIN código-MD5
Ahora escribimos el mensaje, lo enviaré a mi cuenta:
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‘
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