Sei sulla pagina 1di 3

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computacin Comunicacin de Datos 6003 Semestre I - 2013

Laboratorio #4 LABORATORIO 4.3 Programacin en Sockets Objetivo Basado en el cliente creado en los laboratorios anteriores, programar un cliente SMTP que permita enviar correos electrnicos a un servidor SMTP. Objetivo especifico Usando los stream socket (TCP), programar un cliente que inicie un conexin al puerto 25 de un servidor SMTP y cumpliendo con el protocolo SMTP enve la informacin necesaria para que el servidor acepte lo enviado como un correo electrnico. Protocolo SMTP (RFC 2821) El protocolo SMTP es un standard IETF destinado a regular el envo de correos electrnicos, funciona bajo el paradigma cliente/servidor adems de ser un protocolo parseado. Los mensajes intercambiados como parte del protocolo pueden leer ledos he interpretados por humanos. Todos los mensajes de respuesta SMTP(servidor -> Cliente) vienen acompaados de un cdigo numrico que permite interpretarlos sin necesidad de interpretarlos. Los cdigos mas importantes son la familia 2XX indicando que la solicitud tuvo xito y 5XX indicando que la solicitud produjo un error. EJ: 200 Comando exitoso genrico o 500 Error de sintaxis, o comando no reconocido. Despus de iniciada la conexin a un servidor SMTP, el dilogo entre cliente y servidor luce as: S: C: S: S: S: S: S: C: S: C: S: C: S: C: C: C: S: 220 foo.com Simple Mail Transfer Service Ready //saludo inicial EHLO bar.com //Saludos del cliente puede ser EHLO o HELO 250-foo.com greets bar.com //Servidor aceptando el nombre 250-8BITMIME //Servicios soportado por el servidor 250-SIZE //Servicios soportado por el servidor 250-DSN //Servicios soportado por el servidor 250 HELP //Servicios soportado por el servidor MAIL FROM:<Smith@bar.com> //origen del cliente 250 OK //Comando aceptado por parte del servidor RCPT TO:<Jones@foo.com> //receptor del correo 250 OK //Comando aceptado por el servidor DATA //Comando de inicio del cuerpo del correo 354 Start mail input; end with <CRLF>.<CRLF> //Comando aceptado Blah blah blah //Cuerpo del correo ...etc. etc. etc. //Cuerpo del correo . // <LFCR>.<LFCR> un punto solo indica el fin del correo 250 OK // Correo aceptado para despacho

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computacin Comunicacin de Datos 6003 Semestre I - 2013

Laboratorio #4 C: QUIT // Comando de fin de la comunicacin S: 221 foo.com Service closing transmission channel //Despedida De este dilogo se desprende que todo comando enviado al servidor debe ser respondido por uno o ms cdigos del tipo 2XX por parte del server. Todos los comandos enviados al servidor deben terminar con <CRLF>. Es necesario saludar al servidor con el comando HELO o EHLO y el nombre del host cliente. El fin del correo lo indica un punto solo. Actividades Se requiere que usted programe solo el cliente SMTP, que se conecte con el servidor en el puerto 25 y enve un flujo de informacin similar el presentado en el ejemplo. La sintaxis del comando/programa en linux ser:
mailto <nombre del host cliente> <ip del server> <correo origen> <correo destino> <cuerpo del correo entre comillas> labmachine> mailto cliente.demo 192.168.5.1 rafael.angulo@tarma.com.ve prueba de correo electronico test@demo

Asuma que el servidor aceptar todos los comandos enviados siempre que la sintaxis sea correcta, el dilogo se limitara a lo mostrado, para comando mostrado en el ejemplo el dialogo equivalente sera: El cliente inicia una conexin va stream socket al servidor SMTP usando la direccin 192.168.5.1 y el puerto 25. S: 220 192.168.5.1 Servidor de correo UCV C: EHLO cliente.demo S: 250-192.168.5.1 greets cliente.demo S: 250-8BITMIME S: 250-SIZE S: 250-DSN S: 250 HELP C: MAIL FROM:<test@demo> S: 250 OK C: RCPT TO:<rafael.angulo@tarma.com.ve> S: 250 OK C: DATA S: 354 Start mail input; end with <CRLF>.<CRLF> C: Prueba correo electrnico C: C: . S: 250 OK C: QUIT S: 221 192.168.5.1 Cerrando servicio

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computacin Comunicacin de Datos 6003 Semestre I - 2013

Laboratorio #4

Siempre que el servidor responda con un mensaje 2XX o 3XX se debe enviar el siguiente comando, no es necesario todos los comandos de respuesta del servidor , si el servidor responde con un mensaje 5XX se debe cancelar el envo enviando el comando QUIT.

Evaluacin Debe entregarse la implementacin en la seccin de laboratorio que le corresponde. La calificacin ser basada en lo siguiente: Cdigos Cliente/Servidor 10 puntos 5pts c/u Archivo de salida 5 puntos Interrogatorio 5 puntos Lenguaje y entregables El programa debe ser escrito en C durante el laboratorio, para probarlo el profesor le pedir el cdigo fuente adems de solicitarle ejecutar el programa. La implementacin de la solucin estar en el formato especificado en clases de laboratorio. La solucin debe compilar y ejecutarse sin errores.

Nota La implementacin se puede realizar en grupo de dos personas de la misma seccin de laboratorio. Si la solucin compila o ejecuta con errores no se revisar y tendr la nota mnima. Las copias sern sancionadas con la nota mnima para quienes estn implicados.