Capítulo 11. Correo electrónico

El nacimiento del correo electrónico (email) ocurrió a principios de los años 60. El buzón era un archivo en el directorio principal de un usuario al cual sólo el mismo podía acceder. Las aplicaciones de correo primitivas anexaban nuevos mensajes de texto a la parte inferior de un archivo, y el usuario tenía que buscar a lo largo del archivo en constante crecimiento para encontrar un mensaje particular. Este sistema sólo era capaz de enviar mensajes a usuarios en el mismo sistema.

La primera transferencia verdadera de correo electrónico en la red se llevó a cabo en 1971 cuando un ingeniero de computación llamado Ray Tomlinson envió un mensaje de prueba entre dos máquinas a través de ARPANET — el precursor de Internet. La comunicación a través de correo electrónico rápidamente se volvió muy popular, pasando a formar el 75 por ciento del tráfico de ARPANET en menos de dos años.

Hoy día, los sistemas de correo electrónico basados en protocolos de red estandarizados han evolucionado para convertirse en uno de los servicios más usados de la Internet. Red Hat Enterprise Linux ofrece muchas aplicaciones avanzadas para servir y acceder al correo electrónico.

En este capítulo se analizan los protocolos de correo electrónico modernos conocidos actualmente, así como algunos programas diseñados para recibir y enviar correo electrónico.

11.1. Protocolos de correo electrónico

Hoy día, el correo electrónico es entregado usando una arquitectura cliente/servidor. Un mensaje de correo electrónico es creado usando un programa de correo cliente. Este programa luego envía el mensaje a un servidor. El servidor luego lo redirige al servidor de correo del recipiente y allí se le suministra al cliente de correo del recipiente.

Para permitir todo este proceso, existe una variedad de protocolos de red estándar que permiten que diferentes máquinas, a menudo ejecutando sistemas operativos diferentes y usando diferentes programas de correo, envíen y reciban correo electrónico o email.

Los protocolos que se indican a continuación son los que más se utilizan para transferir correo electrónico.

11.1.1. Protocolos de transporte de correo

La entrega de correo desde una aplicación cliente a un servidor, y desde un servidor origen al servidor destino es manejada por el Protocolo simple de transferencia de correo (Simple Mail Transfer Protocol o SMTP).

11.1.1.1. SMTP

El objetivo principal del protocolo simple de transferencia de correo, SMTP, es transmitir correo entre servidores de correo. Sin embargo, es crítico para los clientes de correo también. Para poder enviar correo, el cliente envia el mensaje a un servidor de correo saliente, el cual luego contacta al servidor de correo de destino para la entrega. Por esta razón, es necesario especificar un servidor SMTP cuando se esté configurando un cliente de correo.

En Red Hat Enterprise Linux, un usuario puede configurar un servidor SMTP en la máquina local para manejar la entrega de correo. Sin embargo, también es posible configurar servidores remotos SMTP para el correo saliente.

Un punto importante sobre el protocolo SMTP es que no requiere autenticación. Esto permite que cualquiera en la Internet puede enviar correo a cualquiera otra persona o a grandes grupos de personas. Esta característica de SMTP es lo que hace posible el correo basura o spam. Los servidores SMTP modernos intentan minimizar este comportamiento permitiendo que sólo los hosts conocidos accedan al servidor SMTP. Los servidores que no ponen tales restricciones son llamados servidores open relay.

Red Hat Enterprise Linux utiliza Sendmail (/usr/sbin/sendmail) como su programa SMTP por defecto. Sin embargo, también está disponible una aplicación más simple de servidor de correo llamada Postfix (/usr/sbin/postfix).

11.1.2. Protocolos de acceso a correo

Hay dos protocolos principales usados por las aplicaciones de correo cliente para recuperar correo desde los servidores de correo: el Post Office Protocol (POP) y el Internet Message Access Protocol (IMAP).

A diferencia de SMTP, estos protocolos requieren autenticación de los clientes usando un nombre de usuario y una contraseña. Por defecto, las contraseñas para ambos protocolos son pasadas a través de la red sin encriptar.

11.1.2.1. POP

El servidor por defecto POP bajo Red Hat Enterprise Linux es /usr/sbin/ipop3d y es proporcionado por el paquete imap. Cuando se utiliza POP, los mensajes de correo son descargados a través de las aplicaciones de correo cliente. Por defecto, la mayoría de los clientes de correo POP son configurados para borrar automáticamente el mensaje en el servidor de correo después que éste ha sido transferido exitósamente, sin embargo esta configuración se puede cambiar.

POP es completamente compatible con estándares importantes de mensajería de Internet, tales como Multipurpose Internet Mail Extensions (MIME), el cual permite los anexos de correo.

POP funciona mejor para usuarios que tienen un sistema en el cual leer correo. También funciona bien para usuarios que no tienen una conexión permanente a la Internet o a la red que contiene el servidor de correo. Desafortunadamente para aquellos con conexiones lentas, POP requiere que luego de la autenticación los programas cliente descarguen el contenido completo de cada mensaje. Esto puede tomar un buen tiempo si algún mensaje tiene anexos grandes.

La versión más reciente del protocolo estándar POP es POP3.

Sin embargo, también existen una variedad de variantes del protocolo POP que no son tan populares:

  • APOP — POP3 con autenticación MDS. En este protocolo, el cliente de correo envía un hash codificado de la contraseña al servidor en lugar de enviar una contraseña encriptada.

  • KPOP — POP3 con autenticación Kerberos. Consulte el Capítulo 19 para más información.

  • RPOP — POP3 con autenticación RPOP, que utiliza un identificador de usuario similar a una contraseña para autenticar las peticiones POP. No obstante, este ID no esta encriptado por tanto RPOP no es más seguro que el estándar POP.

Para añadir seguridad, es posible utilizar la encriptación Secure Socket Layer (SSL) para la autenticación del cliente y las sesiones de transferencias de datos. Esto se puede activar usando el servicio ipop3s o mediante el uso del programa /usr/sbin/stunnel. Refiérase a la Sección 11.5.1 para más información.

11.1.2.2. IMAP

El servidor por defecto IMAP bajo Red Hat Enterprise Linux es /usr/sbin/imapd y es proporcionado por el paquete imap. Cuando utilice un servidor de correo IMAP, los mensajes de correo se mantienen en el servidor donde los usuarios pueden leerlos o borrarlos. IMAP también permite a las aplicaciones cliente crear, renombrar o borrar directorios en el servidor para organizar y almacenar correo.

IMAP lo utilizan principalmente los usuarios que acceden a su correo desde varias máquinas. El protocolo es conveniente también para usuarios que se estén conectando al servidor de correo a través de una conexión lenta, porque sólo la información de la cabecera del correo es descargada para los mensajes, hasta que son abiertos, ahorrando de esta forma ancho de banda. El usuario también tiene la habilidad de eliminar mensajes sin verlos o descargarlos.

Por conveniencia, las aplicaciones cliente IMAP son capaces de hacer caché de los mensajes localmente, para que el usuario pueda hojear los mensajes previamente leídos cuando no se esté conectado directamente al servidor IMAP.

IMAP, como POP, es completamente compatible con estándares de mensajería de Internet, tales como MIME, que permite los anexos de correo.

Para seguridad adicional, es posible utilizar la encriptación SSL para la autenticación de clientes y para las sesiones de transferencia de datos. Esto se puede activar usando el servicio imaps, o mediante el uso del programa /usr/sbin/stunnel. Refiérase a la Sección 11.5.1 para más información.

También están disponibles otros clientes y servidores de correo IMAP gratuítos así como también comerciales, muchos de los cuales extienden el protocolo IMAP y proporcionan funcionalidades adicionales. Una lista completa sobre esto se puede encontrar en http://www.imap.org/products/longlist.htm.