Enviando correo «a golpe de protocolo»
Estás en Siberia, sólo tienes acceso a un terminal en modo texto, no tienes ningún cliente de correo y quieres enviar un email. ¿Imposible? Apúntate estos pasos y lo conseguirás. La receta explica cómo enviar correo usando directamente el protocolo que entiende el servidor.
Encontrando un servidor
Para poder enviar un email, es necesario hacerlo a través de un servidor. Todos conocemos multitud de ellos (yahoo, hotmail, latinmail, gmail…). Pero no debemos conectar con el servidor en general, si no con una parte de él llamada Mail Exchanger (MX). Para averiguar el nombre del MX de un servidor, utilizaremos nslookup
.
$ nslookup > set type=mx > wanadoo.es Server: 80.58.61.250 Address: 80.58.61.250#53 Non-authoritative answer: wanadoo.es mail exchanger = 10 inw.wanadoo.es. Authoritative answers can be found from: inw.wanadoo.es internet address = 62.36.20.20 >
Quiero llamar vuestra atención sobre el uso de este comando. Al escribirlo sin argumentos, entramos en modo interactivo, es decir, el programa nos presenta su propio “prompt”, indicándolo con un signo >. Es decir, una vez escribamos nslookup
en la línea de comandos, debemos escribir set type=MX
para que nos filtre sólo los intercambiadores de correo. Después, ponemos el nombre del servidor al que queremos conectarnos.
Enviando correos
Una vez tengamos el nombre del MX, nos conectaremos a él usando telnet
. Abriremos una conexión en el puerto 25 (el del correo) y seguiremos el protocolo SMTP:
$ telnet telnet> <b>open inw.wanadoo.es 25</b> Trying 62.36.20.20... Connected to inw.wanadoo.es. Escape character is '^]'. 220 dam17 ESMTP <b>helo pepe</b> # escribe "helo" y lo que quieras (es para saludar al servidor) 250 dam13.wanadoo.es Hello pepe <b>mail from: vader@deathstar.empire.com</b> # la dirección del remitente 250 Ok <b>rcpt to: yoda@jedicouncil.net</b> # la dirección del destinatario 250 Ok <b>data</b> # indica el comienzo del cuerpo del email <b>Date: 8 Jan 2004 18:45:00 GMT</b> # opcional <b>From: your@address</b> # opcional <b>To: recipient@address</b> # opcional <b>Subject: Let's have a cup of tea.</b> # opcional <b>Hola, esto ya es el cuerpo del mensaje. Cuando hayas terminado el correo, terminalo con una línea que contenga únicamente un punto, como la que viene a continuación. . </b>
Y listo. Para salir de telnet, escribid quit
. La dirección que se pone en mail from
no se comprueba (es decir, puedes poner la que quieras). Y también se puede enviar un correo con fecha del año 3249 ;)
Posibles problemas
Dependiendo de la configuración del servidor, es posible que os dé errores de relay (reenvío). Eso significa que el servidor sólo reenvía los correos que vienen de o van hacia unas direcciones determinadas. A seguir probando…