miércoles, 9 de marzo de 2011

PROTOCOLO SMTP

SMTP ( Simple Mail Transfer Protocol ) o Protocolo Simple de Transferencia de Correo Electrónico es un conjunto de reglas que rigen el formato y la transferéncia de datos en un envío de Correo Electrónico ( e-mail ).

Tabla de contenido

La transferéncia del correo

Cuando enviamos un correo electrónico iniciamos un seguido de pasos que desencadenan diferentes comunicaciones SMTP que detallaremos en el próximo punto, primero vamos a ver que comunicaciones se realizan y porque.
Paso 1
El autor del mensaje utiliza un cliente de correo ( puede ser un programa o una aplicacion web ) para escribir un mensaje a un destinatário, el cliente de correo genera el codigo SMTP del mensaje y lo envía a un servidor SMTP saliente.

Paso 2
El servidor saliente utiliza una consulta DNS para conocer los servidores de correo entrante del dominio del destinatário ( llamados MX primário, MX secundário... ) y envía el correo SMTP al primero de ellos que responde.

Nota:
Para que el receptor reciba el mensaje tiene que tener los MX configurados en su servidor de DNS de manera que apunten a los servidores SMTP entrantes

Paso 3
Este servidor almacena el correo en el buzón de correo en el servidor del destinatário.


Paso 4
Finalmente el destinatário se conecta al servidor de correo entrante usando los protocolos POP3, IMAP4 o similar... y descarga el correo de su almacén.

La comunicación SMTP

La comunicación SMTP se realiza por TCP y normalmente en el puerto 25, es una comunicación tipo orden - respuesta delimitada por CRLF ( Retorno de carro + Salto de línea ) que podemos realizar de manera manual utilizando el comando telnet o con un cliente de correo:
 

000 
telnet smtp.example.com 25

En esta comunicación usaremos las siguientes ordenes SMTP:
HELO - Abre una sesión con el servidor
MAIL FROM - Indica el autor del mensaje
RCPT TO - Indica los destinatarios del mensaje
DATA - Cuerpo del mensaje, finaliza con la órden .
. - Final del cuerpo del mensaje ( orden DATA )
QUIT - Cierra la sesión
Y las respuestas que recibiremos serán, un código y un texto donde el código será:
2XX - Orden realizada correctamente
3XX - Orden correcta recibida pero no requiere acción.
4XX - Repetir orden correctamente
5XX - Error

ArribaEjemplo

Vamos a ver un ejemplo de envío de correo usando telnet:
 

000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015 
telnet smtp.example.com 25
< 220 relay2.programacionweb.com ESMTP Postfix (Debian/GNU) > HELO localhost
< 250 relay2.programacionweb.com > MAIL FROM: eloi@example.com
< 250 Ok > RCPT TO: eloi@programacionweb.com
< 250 Ok > DATA
> Subject: Prueba
>
> Prueba de envío
> .
< 250 Ok: queued as 3BDCD2DE91D > QUIT
< 221 Bye

No hay comentarios:

Publicar un comentario