Cómo Enviar Correo Correo Electrónico "a mano"?: Parte I

NOTA: Este post fue publicado originalmente en mi anterior blog el
11/08/2007

En una conferencia sobre Troubleshooting que dimos en el GLUE, me llamó la atención que muy pocas personas supieran enviar correos electrónicos usando sólo la línea de comandos (y no a través de un cliente de correo, como Outlook u Outlook Express). Por eso el siguiente artículo.

Muchas veces, como parte de las pruebas que realizamos para resolver problemas de flujo de correo entre servidores, luego de hacer un TroubleShooting de Redes Básico, el siguiente paso es revisar que la comunicación SMTP pueda establecerse exitosamente.

Para esto es necesario conocer un poco de “SMTP-nés”.

Primero, desde una línea de comandos, hay que conectarse al Servidor SMTP usando:

telnet <Servidor_SMTP> 25

El 25 luego del nombre o dirección IP del servidor corresponde al puerto al cual estamos estableciendo la conexión, en este caso el 25 es el estándar para smtp.

Si la conexión se establece exitosamente, el servidor mostrará una respuesta consistente de un código, y un banner con su nombre, el software SMTP que está ejecutando, la versión de éste, la fecha y la hora. Un servidor SMTP MS Exchange 2003 SP2, despliega un banner similar a este:

image 

En este punto es interesante mencionar que como respuesta a nuestros comandos (o verbos), el servidor siempre nos entregará un código numérico con la siguiente nomenclatura:

  • 2XX: operación ha concluido con éxito. 
  • 3XX: operación aceptada, pero se esperan nuevos datos.
  • 4XX: error, servidor queda a la espera que se repita la instrucción.
  • 5XX: error permanente.

Los pasos a seguir son:

1. Saludo al Servidor. Como personas educadas que somos, lo que corresponde es saludar al Servidor, indicando nuestra identificación (nuestro nombre dns). El Servidor, que también es todo un caballero, nos responderá el saludo (con su correspondiente código).

image

Nota: algunos sistemas verifican que nosotros seamos realmente quienes decimos ser realizando consultas de DNS-Reverso o verificando nuestra IP en una Lista Negra, pero esos temas los veremos pronto, en los artículos de Antispam que pronto publicaré 😉 

2. Indicamos el remitente y destinatario(s), usando los comandos MAIL FROM: y RCPT TO:, éste último más de una vez, en caso de querer enviar mail a más de un destinatario.

Nota: Los comandos SMTP no son sensibles a mayúsculas y minúsculas.

image

El servidor nos validó como remitentes válidos y validó al destinatario de nuestro mail (su dirección de correo electrónico) como válida, y está listo para recibir el mensaje.

3. Enviamos el Cuerpo del Mensaje. Para realizar esto le escribimos el comando DATA. Esto le indica al servidor que comenzaremos a enviar el cuerpo del correo (“la Data”).

image

El Servidor nos responde que podemos comenzar a enviar los datos, y que debemos presionar la secuencia Enter -> . -> Enter para indicarle que hemos terminado con el cuerpo del mensaje (Enter, luego un punto y enter nuevamente). 
En el cuerpo del mensaje se incluye una línea con el comando subject: (mail de prueba). Esta línea es importante pues la gran mayoría de los servidores de correo bloquean los mensajes sin “asunto” por considerarlos SPAM.

Luego, el Servidor nos responderá que el mensaje fue recibido correctamente, indicándonos el identificador interno que le dio al correo.

4. Cerrar la Conexión. Finalmente, debemos cerrar la sesión en el servidor con el comando QUIT.

image

En este primer artículo de la serie, vimos como enviar un correo electrónico usando sólo comandos smtp. En el Próximo Artículo veremos cómo enviar correo cuando el servidor SMTP Requiere de Autentificación.

Gonzalo

Etiquetas de Technorati: ,,

3 comentarios en “Cómo Enviar Correo Correo Electrónico "a mano"?: Parte I”

Deja un comentario

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