Práctica
2: Un broker de una lista de distribución
En esta práctica vamos
a implemetar un broker o gestor de correo electrónico de una
lista
de distribución. La idea consiste en disponer de un componente
servidor
que hace las tareas de un broker de correo y que ofrece diferentes
servicios
(operaciones) a sus clientes:
- suscribirse a una lista de
distribución,
- darse de baja,
- mostrar miembros registrados
de la lista,
- comprobar correo en la lista,
y
- enviar mensajes a la lista.
Suponemos que la lista de distribución
será de estilo broadcasting o de difusion total, es decir, el
mensaje
que se envia a la lista será difundido al resto de los miembros
suscritos a la listas cuando estos comprueben su correo. Suponemos que
un usuario puede estar registrado en distintos Brokers de correo.
Desde el lado cliente, debemos
implementar un componente que por ejemplo se llame: BrokerCliente. Como
único argumento de entrada debemos indicar el nombre de la
máquina
que contiene el broker de correo donde deseamos conectarnos. Luego,
debemos
indicar la operacion que desamos realizar (subscribe, unsuscribe,
list, receive, compose)
junto con sus parametros, si procede.
Por ejemplo, imaginemos que
deseamos darnos de alta en el broker de correo activo en la maquina
lab105.
Para ello debemos introducir la orden:
BrokerCliente
lab105
Tras escribir esto, en la
siguiente linea, debera indicar si se ha establecido la conexion. Por
ejemplo,
puede ser que el BrokerServidor este desactivado, o nos hemos
equivocado
al introducir el nombre destino. En tal caso nos deberia permitir
introducir
ahora el nombre de los servicios que acepta el destino.
Registrar un cliente: subscribe.
Un cliente podrá darse
de alta (registrarse) en la lista de distribución de un gestor
de
correo de la siguiente forma:
subscribe
alias
Por ejemplo, supongamos que
deseamos darnos de alta en el Broker de lab105
--para lo cual previamente hemos entrado de la forma anterior-- e
introducimos
ahora:
subscribe
Luis Iribarne
El servidor deberá
recoger estar orden y registar el alias 'Luis
Iribarne'. Esta operación hace
registrar en el BrokerServidor al usuario Luis
Iribarne. Como puede imaginar, esto
supone varias tareas para el componente servirdor, por ejemplo, debemos
comprobar que no existe el usuario, si existe debemos enviar un mensaje
de error al cliente, y si no existe debemos incluirlo en el archivo de
registro de los usuarios.
Dar de baja a un usuario: unsubscribe.
Un cliente podrá darse
de alta (registrarse) en la lista de distribución de un gestor
de
correo de la siguiente forma:
unsubscribe
alias
Esta operacion hace eliminar
el usuario determinado por alias. Antes, el servidor deberá
comprobar
que este existe en el archivo de registro.
Mostrar los usuarios
registrados: list.
Podremos consultar los usuarios
registrados en un BrokerServidor con solo introducir la orden list.
En componente servidor deberá enviar un listado de todos los
usuarios
registrados (piense el metodo a seguir).
Escribir un mensaje
a la lista: compose.
Cada vez que deseemos escribir
un mensaje, debemos iniciarlo con la orden compose,
seguido de un espacio en blanco y seguido del texto que vamos a enviar
(este no debera ser superior a 200 caracteres, por limitaciones de
espacio).
Como se ha indicado, los mensajes serán difundidos a todos los
usuarios
de la lista. Por ejemplo, si el BrokerServidor recibe un mensaje de la
forma:
compose
Hola mundo
este entiende que es un texto
de correo pues comienza con la orden 'compose'.
El resto del mensaje deberá almacenarse en un archivo de tipo
texto
para que despues sea enviado a sus clientes. Para hacer esto, podemos
llevar
un archivo de seguimiento con todos los usuarios que aun no han leido
el
correo (piense una solución para realizar esto). Cada mensaje
enviado
se puede almacenar en un archivo de texto independiente o en un solo
archivo
de texto donde se le asigne un código a cada mensaje (o
cualquier
otra solución que crea mejor).
Comprobar el correo: receive.
Para comprobar si tenemos
correo en la lista lo podremos hacer con la orden receive.
Esto supone distintas tareas desde el lado servidor y está muy
ligado
a la orden anterior. Cada vez que el BrokerServidorrecibe
una orden receive
debe saber qué cliente (usuario registrado) lo ha solicitado
para
comprobar en el archivo de seguimiento si ha leido el/los mensaje/s.
Evidentemente,
el/los mensaje/s será elminado/s cuando haya sido leido por
todos
los usuarios de la lista.
Algunas restricciones
del ejercicio.