8. Servicios de Correo. IES Gonzalo Nazareno. Instalación y Mantenimiento de Servicios de Internet. María Jesús Gragera Fernández. 8.1. ¿Qué es el servicio de correo electrónico? El correo electrónico (e-mail) se trata sin duda de una de las aplicaciones más utilizadas en Internet. Se basa en la creación y transmisión de mensajes entre usuarios de la red sin necesidad de que estén conectados simultáneamente. La idea es transferir un mensaje entre un usuario A de la máquina X y otro usuario B de la máquina Y. El correo electrónico: No garantiza que los mensajes lleguen a su destino. No asegura que el remitente sea quien dice ser. No mantiene compromiso de avisar de cualquier anomalía en el transcurso del envío o recepción del mensaje. El envío de mensajes permite incluir (adjuntar) archivos de texto, de vídeo, de audio, de imágenes, etcétera. Para que dos usuarios puedan intercambiar mensajes de correo electrónico ambos deben tener una cuenta de correo en una máquina llamada servidor de correo electrónico. En general se puede hablar de enviar mensajes entre dominios, es decir, el mensaje se envía al dominio al cual pertenece el usuario utilizando una máquina como representante de correo de ese dominio. En un principio, el correo electrónico sólo podía enviar mensajes de texto. Hoy día es posible enviar imágenes, sonido, etc, mediante la utilización de los tipos UUEncode/UUDecode antes y, ahora los tipos MIME, que deben ser soportados por los servidores de correo. Los tipos MIME (Multipurpose Internet Mail Extensions, Extensiones de Correo Internet Multipropósito) son una serie de especificaciones que permiten el intercambio, a través de Internet, de todo tipo de archivos (texto plano, html, audio, vídeo, etc.) de forma transparente para el usuario MIME fue definido en 1992 por la Internet Engineering Task Force (IETF, http://www.ietf.org). Existen tipos MIME predefinidos, como GIF, JPEG, o Postscript, pero es posible definir tipos MIME propios, y existe una nueva versión llamada S/MIME que soporta mensajes encriptados. UUEncode es un programa que convierte un archivo binario en un archivo ASCII de texto, para que así pueda ser enviado como documento adjunto en el correo electrónico. Una vez recibido el mensaje, UUDecode devuelve el archivo a su formato original. 8.2. Características del correo electrónico. Es un sistema de mensajería interpersonal: un remitente y uno o varios destinatarios, entre ellos el propio remitente. No es interactivo, es decir, no se espera una contestación inmediata del mensaje. No es intrusivo, es decir, se lee cuando se quiere. Permite al usuario elaborar su contenido. Sigue el modelo cliente-servidor. El equipo servidor es donde están definidas las cuentas de correo de los usuarios y sus buzones correspondientes y los clientes de correo son los encargados de gestionar la descarga de los correos, así como su elaboración. 8.3. Un poco de historia. El uso inicial del correo electrónico está muy ligado a los primeros años de Internet, comienza en 1971, con Ray Tomlinson (BBN Technologies, http://www.bbn.com) quien desarrolló un programa para que sus compañeros pudiesen intercambiar mensajes desde y hacia máquinas conectadas a la red ARPANET. Fue este ingeniero de sistemas quien decidió utilizar la arroba ‘@’ como carácter separador. En aquella época Internet era utilizado principalmente por organismos como universidades y centros de investigación, que habitualmente poseían uno o varios servidores (normalmente bajo alguna variedad de UNIX) a los que se conectaban sus usuarios a través de terminales. Los servidores de estos organismos funcionaban de forma ininterrumpida por lo que se diseñó un protocolo de intercambio de mensajes para esta situación. En 1980, Suzanne Sluizery Jon Postel crearon el embrión del protocolo SMTP (Simple Mail Transfer Protocol),diseñado para el intercambio de mensajes entre servidores que siempre permanecían conectados a Internet. Fue en el año 1982 cuando se establece el protocolo SMTP (Simple Mail Transfer Protocol) a través de la RFC 821 1 2. Según la wikipedia: Acrónimo inglés de Request For Comments. Conjunto de archivos de carácter técnico donde se describen los estándares o recomendaciones de cualquier cosa. Entre otros los de la propia Internet. Los RFC están disponibles en http://www.faqs.org/rfcs/ En 1984 con los ordenadores personales que se conectan a Internet ocasionalmente, surgió la necesidad de que dichos mensajes llegasen a estos usuarios finales. Apareció así el protocolo POP (Post Office Protocol), o protocolo de oficina de correo. El protocolo POP inicial sólo permitía funciones básicas de descarga o borrado de mensajes. Más tarde aparecieron POP2 y POP3 que mejoraban la gestión de los mensajes de correo. Los protocolos SMTP y POP solucionan el problema del transporte del correo a través de Internet, pero sólo transportan mensajes en formato ASCII. La solución es usar programas de codificación y decodificación, como UUEncode y UUDecode, hasta la aparición de los tipos MIME. 8.4. Elementos del servicio de correo electrónico. Desde que un mensaje de correo electrónico se escribe hasta que es leído por el destinatario, son varios los elementos que intervienen. MTA (Mail Transfer Agent): agente encargado de la transferencia de los mensajes de correo entre máquinas mediante el protocolo SMTP. En su “viaje”desde el origen hasta su destino un mensaje puede pasar por varios MTA de forma transparente para el usuario. Funciones: Efectúa el encaminamiento del correo entre los diferentes sistemas. Se conoce como servidor de correo, también llamado estafeta o agente de distribución de correo. Gestiona la distribución del correo saliente y está pendiente de la llegada del correo entrante desde Internet. Ejemplos: sendmail, postfix, qmail, exim. Si el único elemento que interviniese en la recepción y envío de correo fuesen servidores SMTP, el correo electrónico sólo podría ser utilizado por usuarios reales de cada máquina que accediesen mediante una shell. MDA : (Mail Delivery Agent, Agente de entrega de correo). Funciones: Copiar los mensajes del agente de transferencia de correo (MTA) o servidor de correo al buzón de correo del usuario. El agente MDA no transporta mensajes entre sistemas ni es un interfaz de trabajo para el usuario. Los clientes de correo POP e IMAP se pueden considerar como agentes MDA. MUA (Mail User Agent, Agente de usuario de correo): es el programa que ejecuta el usuario para leer el correo entrante o para enviar mensajes. Sus principales características son: Constituye el interfaz de usuario que le permite editar, componer y enviar correo local. Son los llamados clientes de correo. Ejemplos: elm, pine, Outlook Express, Thunderbird. MAA? (Mail Access Agent o agente de acceso de correo): No existe unanimidad en la denominación de este tipo de programas, de ahí el interrogante en el encabezado. Se trataría de programas necesarios para obtener el correo de los buzones cuando éste no está en ficheros locales accesibles por el MUA. Los protocolos más utilizados para realizar esta acción son pop3 e imap. Gráficamente los elementos del servicio de correo electrónico. Buzón calle MUA Oficina Correos Sevilla Oficina Correos Madrid MTA MTA Cartero MDA Buzón casa MUA 8.5. Funcionamiento. Transferencia: 1.El remitente escribe un mensaje mediante el cliente de correo (MUA). 2.El MUA se conecta con el MTA que tiene configurado como “servidor de correo saliente” y le entrega el mensaje. El MTA puede estar en una máquina distinta a la del MUA. 3.El MTA se encarga de enrutar el mensaje, hacia una máquina si tiene la IP y si lo que tiene es un dominio buscará los registros MX en el DNS de dicho dominio para conocer que máquina gestiona el correo. 4.Una vez el mensaje está enrutado, el MTA del remitente se conecta al MTA del destinatario y le transfiere el mensaje (la transferencia se puede realizar utilizando más de un camino y por tanto más de un MTA) mediante SMTP. 5.Una vez aceptado el correo, para lo cual la máquina debe de estar encendida y el usuario tiene que existir, el MTA del destinatario se conecta al MDA y le entrega el mensaje( el MTA y MDA pueden ser el mismo programa). 6.El MDA guarda el mensaje en el buzón o mailbox correspondiente y el usuario será el encargado de recogerlo. Este fichero buzón suele ser /var/spool/mail/ <usuario>, aunque en ocasiones utiliza una base de datos cuando el volumen de correo es muy elevado o para que no sean usuarios reales de la máquina. Lectura: Una vez que el MDA ha entregado el correo (lo ha echado en el buzón) el destinatario se encargará de acceder al buzón para leerlo. a) El usuario se encuentra en la misma máquina que el buzón: en ese caso el MUA se encargará de acceder al fichero que guarda el mensaje. b) El usuario se encuentra en una máquina remota: en este caso el MUA tendrá que acceder a través de la red a la máquina del buzón y conectarse mediante POP3 o IMAP al MAA. El MAA trabaja igual que el MUA pero mediante control remoto, es decir, controlado por el MUA de la máquina remota. 8.6. Protocolos. SMTP (Protocolo Simple de Transmisión de Correo): es el estándar de Internet para el intercambio de correo electrónico, y su función es realizar el transporte del correo saliente desde la máquina del usuario remitente hasta los servidores donde se almacenan los mensajes de los usuarios destinatarios. El documento RFC 821 define el protocolo SMTP, que es de tipo cliente/servidor. El protocolo fue ampliado en 1993 (RFC 1425), dando lugar al protocolo ESMTP (Extended Simple Mail Transfer Protocol) que incorpora nuevos comandos y opciones de entrega. SMTP utiliza el puerto 25 del servidor para comunicarse, y el protocolo consiste en un conjunto de comandos y respuestas entre el emisor y el receptor. Los comandos (por ejemplo, HELO) constan de 4 letras, admiten argumentos y finalizan con el carácter CR. Las respuestas constan de líneas de texto precedidas por algún código que identifica el tipo de respuesta. Para que dos sistemas intercambien correo mediante SMTP no es necesaria una conexión permanente e interactiva entre ellos: el protocolo SMTP es capaz de almacenar los correos y llevar a cabo el reenvío a sus destinos de forma diferida. SMTP no requiere autenticación. Esto supone un gran problema, ya que favorece el envío y recepción de mucho correo basura o spam. Y además, un usuario no local puede también utilizar el sistema de otro usuario para enviar sus correos utilizando los recursos y ancho de banda del sistema. Las nuevas extensiones de SMTP incorporan ya comandos de autenticación (AUTH, descrito en el RFC-2554). El funcionamiento de SMTP puede resumirse en la siguiente secuencia de pasos: El emisor abre una conexión TCP con el destino. El receptor contesta “220 service ESMTP“. El emisor se identifica: envía el mensaje “HELO“. El receptor acepta: envía el mensaje“250 OK“. El comando EHLO permite que el servidor conectado pueda identificarse a sí mismo como un servidor compatible con las extensiones SMTP (las líneas 250 que aparecen en el ejemplo). Sino está disponible contesta: “421 Service Not Available“. Ejemplo: Veamos los principales comandos del protocolo SMTP mediante un ejemplo. En la página http://www.septeto.com/documentos/ smtp.html encontramos una guía sobre los principales comandos smtp. Nos conectamos mediante telnet con el servidor de correo saliente: # telnet mailhost.terra.es 25 Especificamos el nombre del servidor al que nos conectamos y el puerto de escucha. Ahora podemos comenzar a escribir el mensaje: >>EHLO: iagbxx.terra.es -> nombre del cliente Si el servidor soporta autentificación habrá que hacerlo con los métodos que nos indique. Utilizamos EHLO para saber si el servidor soporta autentificación en caso afirmativo nos contestará los métodos que soporta. Elegimos uno de ellos por ejemplo login. >>AUTH LOGIN (CR) El servidor nos contestará con 334 VXNlcm5hbWU6 El texto está codificado en Base64. Lo que realmente pone es "Username:". Ahora nosotros tenemos que escribir nuestro nombre de usuario TAMBIÉN codificado en Base64. Debemos escribir el texto tal cual le aparezca codificado a la ventana de Telnet, teniendo en cuenta que se distinguen mayúsculas y minúsculas (no es lo mismo "A" que "a") y pulsar CR. El servidor nos responderá con lo siguiente: 334 UGFzc3dvcmQ6 que significa "Password:". Codificamos la contraseña en Base64 y la escribimos codificada en el cliente Telnet. Si la autentificación ha sido llevada a cabo nos contestará 235 Authentication succeeded Una vez hecha la autentificación seguimos con el envío del mensaje. >>MAIL FROM: [email protected] -> dirección del remitente >>RCPT TO: [email protected] -> dirección del destinatario >> DATA indica que lo que viene ahora son los datos del mensaje >>FROM: [email protected] ->para que aparezca en el mensaje el destinatario >> SUBJECT: saludo >> CC: [email protected] >> DATE: 09-01-07 >> Esta línea en blanco (CR) >> Aquí escribimos el mensaje ........................................... >>CR . CR -> Para indicar “fin de mensaje” la última línea debe de contener un punto. >> QUIT: -> para salir. Se pueden enviar tantos mensajes como queramos dentro de una sesión. Basta con volver a especificar MAIL FROM, RCPT TO y DATA. En la siguiente imagen podemos ver un ejemplo de envío de mensajes a través del servidor de correo mediante el protocolo SMTP. El protocolo POP3 (Protocolo de oficina de correo): permite la gestión, acceso y transferencia de mensajes de correo electrónico entre el servidor remoto y la máquina cliente. Este protocolo está descrito en el documento oficial RFC 1725. El usuario se conecta a su servidor de correo de forma temporal y, mediante un programa cliente de correo se descarga sus mensajes y luego desconecta del servidor. Esto obliga al servidor a mantener almacenado en un buzón el correo de sus usuarios, y sólo transferirlo a los clientes de correo cuando ellos lo soliciten. El protocolo POP va por la tercera versión, POP3. La descripción del protocolo POP3 viene detallada en el documento RFC-1939. El protocolo POP3 utiliza el buzón del usuario, ubicado en el servidor de correo, como mecanismo de intercomunicación con él. Para que el cliente de correo se conecte al servidor, es necesario que el usuario tenga una cuenta de correo en dicha máquina (lo que le permite tener un buzón). A continuación se produce la autenticación del usuario. Una vez conectado, el cliente POP3 puede comunicarse con el servidor para saber si existen mensajes en el buzón, y solicitar la descarga de alguno de ellos. SMTP se utiliza para el envío de correo. POP se utiliza para la recepción o descarga de correo. El cliente POP3 se conecta con el servidor a través del puerto TCP 110. Protocolo POP: Fases de la comunicación. Fase de conexión: el servidor está a la escucha en el puerto 110, esperando la conexión de un cliente de correo. Por ejemplo, al hacer un telnet al puerto 110 del servidor. Fase de autenticación: el servidor espera un nombre y clave de una cuenta. Puede ser en texto plano o encriptado. No es posible pasar a la fase siguiente si la validación del usuario no ha sido correcta. Los comandos son USER y PASS. Fase de transacción: transacción al validarse el usuario su buzón se bloquea (para evitar inconsistencias) y está disponible para consultas. Los comandos LIST, RETR y DELE permiten mostrar, descargar y eliminar mensajes del servidor, respectivamente. El comando QUIT permite pasar a la siguiente fase. Fase de actualización: el usuario se desconecta y el servidor actualiza el buzón, elimina los mensajes que se han marcado para borrar y desbloquea el buzón (ya pueden entrar nuevos correos). Vamos a comprobar si tenemos correo en nuestra cuenta de terra. Primero nos conectamos con el servidor de correo entrante. # telnet pop3.terra.es 110 Lo primero que aparece es <<+ok pop3 Las órdenes que podemos utilizar son: >>USER iagb.terra.es -> nombre del usuario cuyo correo queremos comprobar. >>PASS iagbiagb -> contraseña del usuario >> STAT ->muestra el nº de mensajes y total de bytes que ocupan. >>LIST ->muestra el nº de cada mensaje y lo que ocupa. >>RETR <nº> -> muestra el mensaje <nº> >>DELE <nº> -> borra el mensaje <nº> >>TOP <nº> <l> -> muestra las l primeras líneas del mensaje <n>. Si queremos ver las cabeceras, l=0 8.7. Tipos de clientes de correo electrónico. Los clientes de correo varían en función del acceso al correo. Cliente instalado en el ordenador: aplicación que se ejecuta directamente desde el ordenador. Permiten la descarga del correo al equipo local desde el servidor. Cliente vía web: desde el navegador web se puede acceder a la página correspondiente al servidor y mediante una conexión, segura o no, se accede a los mensajes recibidos, y se envían nuevos mensajes. Cliente en el servidor: para leer el correo, en primer lugar hay que conectarse al servidor mediante una conexión segura como ssh. Una vez abierta la conexión con el servidor, se ejecuta alguno de los clientes de correo instalados en él, como pine. Lo suelen utilizar administradores y usuarios avanzados, ya que funciona en modo texto. 5.8. Configuración del cliente de correo. Configuramos el MUA de nuestra máquina para poder escribir y leer los mensajes de correo. En nuestro caso vamos a configurar KMAIL. Menú -> Internet -> Correo-> Kmail -> Preferencias-> Configurar kmail> Creamos una nueva identidad y pulsamos sobre Identidades Pulsamos sobre el botón Añadir Nueva identidad “mi correo” Configuramos el correo saliente. Cuentas-> Enviando y rellenamos los datos referentes al servidor de correo saliente smtp Como el servidor requiere autentificación le damos los datos de nuestro usuario y password. Configuramos el servidor de correo entrante POP3. Cuentas -> Recibiendo y rellenamos los campos con los datos necesarios. Aceptamos la configuración ya estamos en condiciones de enviar y leer mensajes desde nuestro cliente. Si en lugar de recibir el correo entrante por el servidor POP3 queremos recibirlo en el buzón local, es decir, en el archivo /var/spool/mail/<usuario> tendremos que configurar Kmail de la siguiente forma: Configuración de Kmail->Cuentas-> Recibiendo->Buzón local El servidor de correo entrante POP3 y el buzón local no son incompatibles. Prácticas Crea una cuenta de correo en terra del tipo [email protected]. 1. 2. Con los datos de la nueva cuenta de terra, configura el servidor de correo saliente SMTP y el entrante POP3. Envía mensajes desde KMail con la cuenta de terra y léelos. 3. 3. Configura en KMail el buzón local para esiX. (tienes que crear ese usuario) Envía mensajes a esiX desde una interfaz de comandos como usuario root. Comprobar que los mensajes se pueden leer en Kmail y también en /var/spool/mail/esiX. Haz una lista de los clientes de correo más utilizados tanto en entornos linux como windows. Configura otro distinto a kmail para la cuenta de terra y si tienes una de gmail para gmail. (Busca los datos en internet.) Manda un mensaje con este nuevo cliente 4. Detalla todos los pasos que has ido haciendo. 1. 2.