PDF de programación - Práctica 6: Correo electrónico - ARQUITECTURA DE REDES

Imágen de pdf Práctica 6: Correo electrónico - ARQUITECTURA DE REDES

Práctica 6: Correo electrónico - ARQUITECTURA DE REDESgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 5 de Marzo del 2018)
364 visualizaciones desde el 5 de Marzo del 2018
260,6 KB
10 paginas
Creado hace 3a (20/09/2016)
ARQUITECTURA DE REDES

Laboratorio


Práctica 6:

“Correo electrónico











Grado en Ingeniería Informática
Curso 2016/17

Universidad de Alcalá
Departamento de Automática

1. OBJETIVOS

Laboratorio de Arquitectura de Redes
Grado en Ingeniería Informática

En esta práctica se va a hacer uso de los protocolos de correo electrónico más
habituales. En concreto, se van a utilizar:

- SMTP (Simple Mail Transfer Protocol), que es el que usan los servidores para
transmitirse mensajes entre sí, así como los agentes de usuario para transmitir al
servidor los mensajes que envía el mismo.

- POP3 (Post-Office Protocol), versión 3. Es uno de los protocolos que puede usar
un agente de usuario para obtener los mensajes que un usuario recibe en su
servidor de correo.

- IMAP (Internet Messaging Application Protocol). Otro de los protocolos de

lectura de mensajes recibidos.

Lo que se pretende es que el alumno adquiera soltura con estos protocolos, sea capaz de
distinguir
la distinta filosofía de
funcionamiento.

las posibilidades que ofrece cada uno y

2. ACTIVIDADES

- Creación de cuentas en servicios de correo electrónico accesibles al alumno. Esta

actividad no será necesaria si el alumno ya dispone de ellas.

- Conexión con los servidores por medio de telnet o de openssl.

- Manejo de la utilidad openssl para recodificar texto entre los formatos base64 y

código ASCII normal.

- Envío y recepción de mensajes por medio de SMTP y POP3 e IMAP

respectivamente.

3. INTRODUCCIÓN TEÓRICA

A continuación se realiza una breve exposición de las características más sobresalientes
de los protocolos SMTP, POP3 e IMAP. El alumno ampliará necesariamente esta
información recurriendo (al menos) a los documentos de descripción RFC de cada uno
de los protocolos. El documento RFC para cada protocolo se encuentra indicado en su
apartado.

SMTP

El protocolo SMTP es el protocolo básico que utilizan los servidores de correo para
enviarse mensajes entre sí. Está descrito en el documento RFC 5321 y utiliza mensajes
en formato ASCII de 7 bits. Esto incumbe tanto a los comandos, como a





Curso 2016/17
Página 2

Universidad de Alcalá
Departamento de Automática


Laboratorio de Arquitectura de Redes
Grado en Ingeniería Informática

las cabeceras y al cuerpo de los mensajes. El protocolo SMTP utiliza el puerto 25. La
siguiente tabla lista algunos de los comandos que incluye.



Comando
HELO
EHLO

MAIL FROM
RCPT TO
TURN

ATRN

SIZE

ETRN

PIPELINING

DATA

DSN

RSET
VRFY

HELP
QUIT

Descripción
Identificación del cliente, generalmente con un nombre de dominio.
Permite al servidor declarar su aceptación de comandos ESMTP (Extended
Simple Mail Transfer Protocol).
Emisor del mensaje.
Receptor(es) del mensaje.
Permite al cliente y al servidor invertir los roles y enviarse mensajes en
sentido contrario sin tener que iniciar una nueva conexión.
Authenticated TURN. Tiene como parámetros opcionales uno o más
dominios. Debe ser rechazado si la sesión no ha sido autenticada.
Proporciona un mecanismo por el que el servidor SMTP puede indicar el
máximo tamaño de mensaje admitido. Un cliente no debe enviar mensajes de
mayor tamaño que el indicado por el servidor.
Es una extensión de SMTP. ETRN lo envía un servidor SMTP para solicitar a
otro servidor el envío de los mensajes que tenga.
Permite enviar una sucesión de comandos encadenados sin esperas de
respuesta a cada comando.
Lo envía el cliente para indicar que inicia el envío del contenido del mensaje.

Comando ESMTP que habilita el envío de notificaciones de estado del envío
(Delivery Status Notification).
Anula la transacción completa y reinicializa el buffer.
Verifica que un buzón existe. Por ejemplo, 'VRFY Ted' verifica que el buzón
'Ted' existe en el servidor.
Devuelve una lista de comandos admitidos por el servidor SMTP.
Finaliza la sesión.

Transacción de ejemplo:

HELO pepito.es
>250 servidor.es
MAIL FROM: pepe@pepito.es
>250 2.1.5. OK
RCPT TO: usuario@servidor.es
>250 2.1.5. Ok
DATA
>354 Start mail input; endi with <CRLF>.<CRLF>
subject: Asunto
Este mensaje es de prueba.
Probamos el protocolo SMTP.

>250 2.0.0 OK: queued as 6D126A066
QUIT
>221 2.0.0 Bye





Curso 2016/17
Página 3

Universidad de Alcalá
Departamento de Automática


Las líneas que empiezan por > son las respuestas del servidor. El ejemplo presupone la
conexión telnet con el puerto 25 del servidor SMTP. El comando "sub j ect" va incluido
en el cuerpo del mensaje y especifica el campo 'asunto' del mensaje.

Laboratorio de Arquitectura de Redes
Grado en Ingeniería Informática

Seguridad

SMTP (y esto es aplicable también a POP3 y a IMAP) es un protocolo sin seguridad.
Dado el riesgo que esto representa, algunos servidores comerciales de SMTP como
hotmail de Microsoft o gmail de Google le añaden una capa de seguridad. Esto lo
pueden hacer de varias maneras. La primera opción consiste en, una vez iniciada una
sesión normal de SMTP por medio de telnet al puerto 25, y antes de cualquier
intercambio de información, activar la encriptación por medio de TLS (Transport Layer
Security). Para ello, el servidor admite el comando STARTTLS. El problema para el
acceso manual (por medio de telnet, sin agente de uausario) es que exige al
usuariollevar a cabo la negociación de la encriptación manualmente, lo que es casi
imposible. Más cómodo, siempre dentro de la primera opción, resulta hacer uso de una
utilidad, 'openssl', que puede encargarse de todo el proceso evitándoselo al usuario. La
utilidad 'openssl' proporciona múltiples servicios de encriptación relacionados con SSL
(Socket Layer Security). Uno de ellos es sustituir al comando telnet en el uso que se le
da en esta práctica, y encargarse de la comunicación con un servidor por medio de un
canal encriptado. openssl es capaz de negociar la encriptación del canal, por lo que el
usuario se limita a intercambiar comandos y respuestas con el servidor de forma
análoga a como lo hacía con telnet. El comando de conexión es:

openssl s client -starttls smtp -crlf -connect servidor.com:25

La segunda opción es iniciar una sesión de SMTP ya encriptada con SSL desde el
principio. En este caso, se trata de usar la utilidad openssl de forma similar a la anterior,
pero indicando que el puerto de conexión es el 465, que es el que se usa para esto. El
comando en este caso es:

openssl s client -crlf -connect servidor.com:465

Con cualquiera de las dos opciones, una vez establecida la conexión, es preciso
autenticarse. Para eso se necesita utilizar el comando AUTH en una de sus múltiples
variantes. Una de ellas es la variante LOGIN, mediante la cual, el servidor solicita, en
dos pasos, el nombre de usuario y la contraseña del cliente. Esta información se envía
recodificada al formato base64, que es una forma de representar un flujo de bits en
bloques de 6 bits. La herramienta openssl es capaz de realizar esta recodificación de la
siguiente manera:

openssl base64

De esta manera la utilidad espera por teclado la cadena a recodificar, y la muestra
recodificada por pantalla. Una vez introducida, (Enter marca el fin de la cadena), la
combinación de teclas <CTRL+D> pone en marcha la recodificación. Este







Curso 2016/17
Página 4

Universidad de Alcalá
Departamento de Automática

procedimiento es muy cómodo para recodificar palabras y contraseñas en un momento.
Si es preciso recodificar textos completos, también admite entrada y salida desde un
archivo. Evidentemente, esta encriptación no se puede hacer con la misma invocación
de openssl con la que se ha creado la conexión. Es preciso ejecutarla en paralelo en otro
terminal.

Laboratorio de Arquitectura de Redes
Grado en Ingeniería Informática

Durante la autenticación, los mensajes del servidor también van recodificados en
base64, por lo que para entender lo que responde es preciso utilizar openssl para
recodificar a texto ASCII. Si la autenticación es correcta, se puede pasar a enviar
comandos al servidor. Estos comandos ya van en texto sin recodificar. La sintaxis es
ligeramente diferente en algunos casos, pero en lo fundamental se mantiene, ya que
sigue siendo el protocolo SMTP. El siguiente es un ejemplo de comunicación en el que
se opta por crear una conexión SMTP SSL desde el principio.

openssl s_client -crlf -connect servidor.com:465

>CONNECTED(00000000003)

...establecimiento de la conexión ssl...

>220 mx.google.com ESMTP i8sm55243855eeo.16

ehlo usuario

>250-mx.servidor.com at your service, [193.146.8.29]

>250-SIZE 35882577

>250-8BITMIME

>250-AUTH LOGIN PLAIN XOAUTH XOAUTH2

>250 ENHANCEDSTATUSCODES

auth login

>334 VXNlcm5hbWU6

usuario recodificado a base64

>334 UGFzc3dvcmQ6

contraseña recodificada a base64

>235 2.7.0 Accepted

mail from:<usuario@servidor.com>

>250 2.1.0 OK i8sm55243855eeo.l6

rcpt to:<destino@otroservidor.com>

>250 2.1.5 OK i8sm55243855eeo.l6

data

>354 Go ahead i8sm55243855eeo.16

subject asunto

Cuerpo del mensaje

>250 2.0.0 OK 1347448708 i8sm55243855eeo.16





Curso 2016/17
Página 5

Universidad de Alcalá
Departamento de Automática


quit

Laboratorio de Arquitectura de Redes
Grado en Ingeniería Informática

>221 2.0.0 closing connection i8sm55243855eeo.16

>read:errno=0

Las respuestas del servidor van marcadas con el carácter '>'. En este caso, se está
usando una extensión de SMTP
llamada ESMTP (Extended SMTP). E
  • Links de descarga
http://lwp-l.com/pdf9223

Comentarios de: Práctica 6: Correo electrónico - ARQUITECTURA DE REDES (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad