SERVICIO DE CORREO ELECTRÓNICO
Versión 1.02

Enviando un correo electrónico en seis pasos

Una transacción SMTP es algo relativamente simple (de allí su nombre). El cliente se conecta al servidor remoto, se identifica, le dice a la máquina remota quien está enviando el correo, para quién es y entonces envía el mensaje. Todo esto se encuentra especificado en el RFC821 (si en sus ratos libres, y para pasar el tiempo, decide escribir un cliente de correo no olvide leer con cuidado el RFC821 y todos aquellos RFCs que dependan de él).

Aquí hay un par de detalles que pueden complicar la construcción de su aplicación de correo:

  1. Todas las líneas terminan con CRLF (carriage-return and line-feed).
  2. El RFC821 dice que el canal de SMTP es de 7-bits y el bit de más a la izquierda de todos los bytes debe ser "cleared". Esta restricción se levantó en los RFC posteriores pero ahora se necesita establecer una conversación un poco diferente y más compleja entre el cliente y el servidor.
Las conversaciones entre el cliente y el servidor son bastante directas. El cliente envía un comando con un parámetro adicional seguido de un CRLF. El servidor responde con un código de status de tres dígitos y un mensaje en línea describiendo el status -el primer dígito identifica la clase del mensaje:


El RFC821 coloca algunos límites a la longitud de los comandos y los mensajes.


TAREA
En el RFC821 ¿cuál es el máximo número de caracteres para: el username, el dominio (domain), el path, la línea de comandos (incluyendo el comando y el terminador CRLF), la línea de "reply" (incluyendo el código de status y el terminador CRLF), la línea de texto (incluyendo el terminador CRLF) y el máximo número de destinatarios (recipients)?

Pasos para envíar un correo

  1. Conexión al servidor SMTP remoto
  2. Identificación del cliente
  3. Identificando el remitente
  4. Identificando los destinatarios
  5. Enviando el mensaje
  6. Cerrando la conexión con el SMTP remoto
[Anterior] [Índice] [Siguiente]

Paso 1: conexión al servidor SMTP remoto

De acuerdo al RFC, un servidor SMTP debe escuchar en el puerto 25 sobre el protocolo de transporte TCP, por esta razón un cliente que desee utilizar dicho servicio debe abrir una conexión en ese puerto. Cuando la conexión se realiza exitosamente, el servidor remoto enviará una línea de status con su debido código.

Paso 2: identificación del cliente

Después de conectarse, el siguiente paso es identificarnos. Esto se hace con el comando "HELO" (está bien escrito, es con una sola "L"). El comando completo es:

HELO nombre.de.la.maquina.clienteCRLF

Si el servidor recibe nombres de máquinas falsas puede ser engañado y suplantar a otro cliente de correo (¡¡¡ Un hueco de seguridad !!!). Generalmente los servidores de correo verifican que, por lo menos, el nombre de la máquina esté registrado en el DNS.

Paso 3: identificando el remitente

Ahora el cliente tiene que decir quién (la persona) está enviando el correo. Se hace con el comando "MAIL":

MAIL FROM: <usuario@nombre.algun.servidor.com>CRLF

Lo que está entre los corchetes angulares es un e-mail real (si se coloca vacío <>, no se sabrá dónde debe rebotar el correo en caso de alguna falla).

Paso 4: identificando los destinatarios

Para decir a quién va dirigido el correo se utiliza el comando "RCPT":

RCPT TO: <usuario@nombre.de.otro.servidor.com>CRLF

Aquí la dirección también va entre paréntesis angulares. Ud. puede colocar hasta ? RCPTs por mensaje de E-mail (el número ? debe ser consultado en la tarea).

Paso 5: enviando el mensaje

Como el servidor ya sabe de quién viene el correo y para quién está dirigido (pasos 3 y 4), es hora de enviar su contenido. Para esto se utiliza el comando "DATA". Este comando marca el inicio del mensaje, que termina hasta que se envíe una línea donde el único contenido es un punto (si necesita enviar una línea con un sólo punto(.) como parte del mensaje, debe envíar una línea con doble punto (..) para que el servidor la convierta en un solo punto dentro del mensaje).

DATACRLF
Hola, este es mi mensaje...CRLF
.CRLF

Al terminar, el servidor le enviará un mensaje de respuesta con un código de status.

Paso 6: cerrando la conexión con el SMTP remoto

Para cerrar la conexión abierta en el paso 1, se utiliza el comando "QUIT".

QUITCRLF

Muchas veces los programas envían el comando "QUIT", y terminan la conexión, lo mejor es esperar el código de status del servidor remoto antes de terminar la conexión para salir adecuadamente.

[Anterior] [Índice] [Siguiente]




©Oscar Agudelo.  2000-2001. Todos los derechos reservados.