martes, 10 de enero de 2012

SMTP y ESMTP

Simple Mail Transfer Protocol

Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo, es un protocolo de la capa de aplicación. Protocolo de red basado en textos utilizados para el intercambio de mensajes de correo electrónico entre computadoras u otros dispositivos (PDA's, teléfonos móviles, etc.). Está definido en el RFC 2821 y es un estándar oficial de Internet

Su funcionamiento se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o varios receptores. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas líneas es de 1000 caracteres.

Las respuestas del servidor constan de un código numérico de tres dígitos, seguido de un texto explicativo. En el protocolo SMTP todas las órdenes, réplicas o datos son líneas de texto, delimitadas por el carácter . Todas las réplicas tienen un código numérico al comienzo de la línea.

SMTP va por encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexión.

ESMTP



Significa SMTP extendido o SMTP mejorado y es una definición de extensiones  para el protocolo simple de transferencia de correo estándar. 

ESMTP define medios coherentes y manejables por los cuales los clientes y servidores pueden establecer una conexión.



ESMTP  es identificativo (devuelve un código) y los servidores pueden indicar las extensiones admitidas y soportadas a los clientes conectados.

 -----
El formato de extensión se define en IETF (Ingeniería de Internet Grupo de Trabajo) que establece una estructura general para todas las extensiones existentes y futuros.

Extensiones

La conexión se realiza por medio de un comando EHLO en lugar de HELO que usa SMTP. Un servidor va a responder con codigos que pueden ser éxito, fallo o un error, dependiendo de su configuración. En el caso de que un servidor devuelva éxito (codigo 250) también indicará una lista de palabras clave para indicar las extensiones admitidas. En caso contrario, y no nos devuelva un OK, solo podremos acceder por medio de SMTP estándar.


A partir de este paso y si nos hemos introducido por EHLO, ya podremos utilizar una serie de comandos para interactuar con el servidor como los siguientes, que son los que se incorporan en ESMTP:


 8BITMIME - 8 bits de transmisión de datos
 ATRN - autenticado TURN
 AUTH - autenticado SMTP
 CHUNKING - Fragmentación
 DSN - Entrega de notificación de estado
 ETRN - Versión ampliada de la cola de mensajes a distancia
 HELP - Suministro de información útil
 PIPELINING - Comando de la canalización
 SIZE - Mensaje declaración tamaño
 STARTTLS - Transport Layer Security
 UTF8SMTP - Permitir UTF-8 de codificación de nombres de los buzones y los campos de cabecera


Cada extensión de servicio se define en un formato aprobado en el RFC posterior y registrado en IANA. Algunas de las primeras definiciones fueron SEND, SOML SAML, EXPN, Ayuda y TURN.


Ejemplo:
Iniciamos la conexión
Cliente: EHLO localhost
El servidor nos responde aceptando la conexión
Servidor: 250 servidor.midominio.com

Ahora indicamos la dirección desde donde vamos a realizar la operación
Cliente: MAIL FROM:<juanan@midominio.com>

El servidor nos responde aceptando
Servidor: 250 2.1.0 Ok

Especificamos ahora la dirección receptora del mensaje
Cliente: RCPT TO:<otrousuario@midominio.com>

El servidor nos responde aceptando
Servidor: 250 2.1.5 Ok

Ahora solicitaremos escribir un mensaje por medio del comando DATA
Cliente: DATA

El servidor nos responde que podemos comenzar a escribir el mensaje
Servidor: 354 End data with <CR><LF>.<CR><LF>

Escribimos el mensaje
Cliente: Esto es un mensaje de prueba Cliente: .

El servidor nos responde que se ha enviado correctamente
Servidor:250 2.0.0 Ok: queued as 0450132A054

Por último cerramos la conexión
Cliente: quit



2 comentarios: