1. SERVIDOR DE CORREO EN FEDORA 9
Por
Jesús Maria Taborda.
Yeison Herrera Balbín.
Hugo Alberto Alvarez.
Victor Hugo Narvaez.
Sergio Alexis Cano.
Jorge Jiménez.
Stiven Marin.
David Echeverry
Grupo #2
Centro de Servicios y Gestión Empresarial.
Sena
Medellín
2008
2. INTRODUCCION
El motivo de la elaboración del trabajo que se describe a continuación es realizar un
manual completo y organizado acerca de la instalación de un sistema de correo
seguro sobre el sistema operativo “Fedora 9”, para así ayudar a los futuros
administradores de red a documentarse y llevar a cabo mas fácilmente su trabajo.
Para dicho propósito se tuvieron en cuenta multiples manuales, los cuales nos
sirvieron de guía para la elaboración del presente manual.
El lector(a) encontrara en este documento una base para configurar un MTA (agente
de transferencia de mensajes) en un ordenador con GNU/Linux instalado para que los
mensajes de correo generados por la propia máquina lleguen a su destino y lo hagan
sin generar problemas en los servidores de correo que deben manejar ese tráfico de
mensajes.
El MTA elegido para esta tarea es Postfix. Este software es ligero (consume pocos
recursos y da buenas medidas de rendimiento). Existen paquetes para todas las
distribuciones y por tanto es fácil de instalar; en algunas distribuciones es el MTA
instalado por defecto.
En conclusión se pretende servir de ayuda para quienes deseen montar su propio
servidor de correo.
OBJETIVOS
3. Diseñar, implementar y gestionar un sistema de correo que cumpla con lo siguiente:
1. Cifre el tráfico entre usuario y servidor.
2. Valide los usuarios contra un sistema de directorios.
3. Almacene los correos de los usuarios en un sistema de directorios o en una base
de datos.
4. Permita configurar usuarios y dominios virtuales.
5. Soporte un sistema de antivirus, antispam y antimalware en general.
6. Soporte administración grafica (fácil de administrar para el usuario).
7. Soporte acceso POP, IMAP y WebMail (hacerlo de forma segura -SSL).
8. Bonus (hacer algo adicional para diferenciar el proyecto de otros similares).
PLATAFORMA DE CORREO SEGURA SOBRE FEDORA 9
4. Antes de empezar a configurar debemos estar enterados un poco acerca de unos cuantos
términos:
¿Qué es un servidor de correo?
Aplicación informática que nos permite enviar y recibir correos entre varios usuarios, no
importando que clase de red estén utilizando. El E-mail es una aplicación TCP/IP.
¿Qué es un correo electrónico?
Servicio que permite enviar y recibir mensajes, normalmente mediante un programa o
aplicación.
¿Cómo funciona?
En cuanto al funcionamiento, es un poco complejo ya que hay que tener en cuenta varios
conceptos que para los “novatos” en este campo se les seria un poco complejo el entenderlo
pero trataremos de brindárselo muy detalladamente para evitar confusiones.
Por eso antes de explicar su respectivo funcionamiento aclararemos términos:
MTA: (Mail Transport Agent/Agente de transferencia de correo) Es el programa encargado del
transporte del correo de una computadora a otra, un MTA es el muy conocido protocolo SMTP
(Simple Mail Tranfer Protocol), el MTA trabaja en segundo plano lo que quiere decir que el
usuario no interactúa directamente con el MTA.
MUA: (Mail User Agent/Cliente de correo electrónico) Es el programa de ordenador utilizado
para leer y enviar los correos. Es el utilizado por los usuarios para enviar y recibir sus correos, los
e-mails enviados son entregados al MTA y ya luego èl se encarga de transportarlos hasta su
destino.
MDA: (Mail Delivery Agent) Es un software que se encarga de recibir el correo entrante y de
distribuirlo alo buzones de los destinatarios (si el destino esta en la maquina local), o se
convierte en un MTA para reenviarlo hacia otro servidor SMTP.
Todo empiza cuando el emisor de un correo electrónico manda los mensajes a un servidor y
este, a su vez, se encarga de enviarselos al servidor del receptor. Para poder ver el correo-
electronico es necesario que el receptor se conecte con su servidor, y que a su vez este
5. utilizando el pop3 o el imap, que son protocolos que permitirán al usuario acceder a sus
respectivos correos, visualizarlos, descargarlos……etc.
Este procedimiento se logra gracias al protocolo SMTP que es el encargado de hacer que un
mensaje se transporte de un MTA a otro MTA.
El mensaje se genera en el cliente a través de una aplicación llamada MUA (agente de usuario de
mail), este a su vez se lo envía a su MTA (Agente de transporte de mail) local, este busca el
destinatario en sus registros, si existe inmediatamente le envía el mensaje a su MDA (Agente de
entrega de mail), el cual almacenara el correo hasta que el usuario a quien fue dirigido el correo
acceda a el por medio del pop3 o imap.
¿ y si no existiera el usuario a quien va dirigido el mensaje localmente que se hace?
Bueno, si el MTA no encuentra el usuario en sus registros, este procede a comunicarse con otro
MTA, para enviarle el mensaje, esto se logra a travez del protocolo SMTP, que establece la
comunicación y permite que entre varios MTA se envíen los mensajes, este procedimiento se
repite cuantas veces sea necesario, hasta que el mensaje logre llegar a su destino. Este proceso
se le conoce con el nombre de Relay. Cuando el mensaje llega al MTA destino, este procede a
enviárselo a su MDA para que posteriormente el usuario acceda al mensaje a través de MUA.
¿ Que pasaria si un mensaje no puede ser enviado por x o y motivo a su destino?
Si ocurriera algún error por parte de los MTA, y que no se puedan enviar los mensajes a su
destino, estos crearan una lista de cola, en donde estarán los mensajes temporalmente para
volverlos a enviar, si después de un tiempo limitado estos no se han podido enviar a su destino,
se perderá el mensaje.
¿Qué protocolos utiliza?
Basicamente un servidor de correo funciona a partir de 3 protocolos basicos que son:
6. SMTP: (Simple Mail Transfer Protocol) :
Es un protocolo de red utilizado para el envió de correo de una maquina a otra. Fue diseñado en
el año 1982 para intercambiar correos para ARPANET (“Advanced Research Projects Agency
Network” Proyectos de investigación avanzada para la red), definido en los RFC 821 y RFC 822.
La primera de ellas define este protocolo y la segunda el formato del mensaje que este protocolo
debia transportarlo.
Smtp se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o varios
receptores, la comunicación entre el cliente y el servidor consiste enteramente en líneas de
texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas líneas es de
1000 caracteres. En el conjunto de protocolos TCP/IP, el SMTP va por encima del TCP, usando
normalmente el puerto 25 en el servidor para establecer la conexión.
Asi funcionaria el SMTP:
El emisor establece una comunicación con smtp
El emisor envía un comando MAIL para indicar el remitente del correo
Si el receptor SMTP puede aceptar el correo responde con una respuesta OK+
El emisor envia un comando RCPT identificando a quien va dirigido el correo.
Si SMTP puede aceptar correos para ese destinatario responde con un OK si no responde
con un error
Cuando se a terminado de negociar entre el servidor y el emisor se envian los mensajes,
si todo se concluye satisfactoriamente el servidor responde con un OK
La sintaxis que se utilisaria en dicha comunicación seria:
Los comandos y respuestas se componen de caracteres ASC II (estandar para el intercambio de
información)
HELO: Para abrir una sesion con el servidor.
MAIL FROM: Para indicar quien envia el mensaje
RCPT TO: Para indicar el destinatario del mensaje
DATA: Para indicar el comienzo del mensaje, este finalizara cuando haya una linea
unicamente con un punto.
QUIT: para cerrar la sesion.
RSET: Aborta la transacción en curso y borra todos los registros.
SEND: Inicia una transacción en la cual el mensaje se entrega a una Terminal.
SOML: El mensaje se entrega a un Terminal o a un buzon.
SAML: El mensaje se entrega a un Terminal y a un buzon.
VRFY: Solicita al servidor la confirmacion del argumento.
EXPN: Solicita al servidor uinformacion sobre un comando.
7. HELP: Permite solicitar información sobre un comando.
NOOP: Se emplea para reiniciar los temporizadores
TURN: Solicita al servidor que intercambien los paquetes.
Las respuestas del servidor se hace de forma numerica la cuales son:
2XX: La operación solicitada mediante el comando anterior a concluido con éxito.
3XX: La orden ha sido aceptada, pero el servidor esta pendiente de que el cliente le
envie nuevos datos para terminar la operación.
4XX: Para una respuesta de error, pero se espera a que se repita la instrucción.
5XX: Para indicar una condicion de error permanente, por lo que no debe repetirse la
orden.
Un ejemplo seria:
S: 220 Servidor ESMTP C:
HELO S: 250
Hello, please meet you C: MAIL
FROM: yo@midominio.com S: 250 Ok
C: RCPT TO: hackerhigueyano@hotmail.com S:
250 Ok C:
DATA S:
354 End data with <CR><LF>.<CR><LF> C:
Subject: Campo de asunto C:
From: yo@midominio.com C: To:
destinatario@sudominio.com C:
C: Hola, C:
Esto es una prueba. C:
Adios. C: .
S: 250 Ok: queued as 12345
C: quit S:
221 Bye
Aquí no termina la amplia gama de comandos de SMTP a continuación exponemos otros que les
serán muy utiles:
VRFY: Se utilize para verificar un nombre de usuario.
EXPN: Se utiliza para ampliar una lista de correo.
8. SP: Comando enviar, los mensajes deberán entregarse en la terminal del
usuario, si el usuario no esta cativo.
SOML: Comando de enviar, los mensajes deberán entregarse en la terminal de
usuario o buzon de correo, si el usuario esta activo.
SAML: Comando de enviar, exige que el mensaje sea entregado a la terminal
del usuario si la terminalesta activa, en cualquier caso el correo se introduce en
el buzon del usuario.
Eje:
C: VRFY Smith
S: 250 Fred Smith <Smith@USC-ISIF.ARPA>
C: VRFY Smith
S: 251 Usuario no local; remitirá a <Smith@USC-ISIQ.ARPA>
C: VRFY Jone
S: Cadena 550 no coincide con nada.
C: VRFY Jones
S: 551 Usuario no local, por favor intente <Jones@USC-ISIQ.ARPA>
C: VRFY Gourzenkyinplatz
S: 553 Usuario ambigua.
Smith es el nombre de usuario, la respuesta del servidor puede incluir el nombre
completo del usuario, y debe incluir el buzon de correo del usuario.
En el caso de ampliación de correo se requiere una respuesta multilinea
Eje:
C: EXPN Ejemplo: Personas
S: 250-Jon Postel <Postel@USC-ISIF.ARPA>
S: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>
S: 250-Sam P. Smith <SQSmith@USC-ISIQ.ARPA>
S: 250-Quincy Smith <@ USC-ISIF.ARPA: Q-Smith@ISI-VAXA.ARPA>
S: 250 - <joe@foo-unix.ARPA>
S: 250 <xyz@bar-unix.ARPA>
C: EXPN Ejecutivo-Baño-Lista
S: 550 Acceso denegado a Usted.
IMAP: (Internet Message Access Protocol/Protocolo de acceso a mensajes de Internet).
Protocolo de red de acceso a mensajes electrónicos almacenados en un servidor,
Mediante el imap se puede tener acceso al correo electrónico desde cualquier equipo
que tenga acceso a internet, permite visualizar los correos de forma remota, lo que
9. implica no descargar los correos para visualizarlos, a diferencia del pop que si se
necesita descargarlo.
En conclusión, es un servicio que nos permite recoger correo de un servidor remoto (servidor
IMAP), apareció como una alternativa mejorada de POP, ya que ofrece mayores ventajas.
IMAP permite administrar diversos accesos de manera simultánea.
IMAP permite administrar diversas bandejas de entrada.
IMAP brinda más criterios que pueden utilizarse para ordenar los correos electrónicos
(e-mail). El protocolo IMAP utiliza el puerto por defecto 143.
POP: (Post Office Protocol/Protocolo de oficina de correo) Es un servicio que permite recoger
el correo de un servidor remoto (servidor POP), a diferencia del protocolo IMAP, este protocolo
requiere que los correos sean descargados ala maquina local del usuario antes de poder
visualizarlos. Existen dos versiones principales de este protocolo, pop2 y pop3, a los que se les
asignan los puertos 109 y 110 respectivamente, ambos funcionan utilizando comandos de texto
pero totalmente diferentes el uno del otro.
LDAP: (Lightweight Directory Access Protocolo/Protocolo Ligero de Acceso a Directorios) Es un
protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y
distribuido para buscar diversa información en un entorno de red. LDAP también es considerado
una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden
realizarse consultas.
Existen diversas implementaciones y aplicaciones reales del protocolo LDAP, como son:
1. Active Directory.
2. Fedora Directory Server (FDS).
10. 3. Mandriva Directory Server (MDS).
4. Apache Directory Server.
Para la instalación de nuestro Ldap implementaremos el FDS (Fedora Directory Server), ya que
como estamos trabajando sobre Fedora 9 lo más conveniente y sencillo seria implementarlo a él.
FDS: (Fedora Directory Server/Servidor de Directorio Fedora) Es un servicio de directorios de
código abierto diseñado para la gestión de grandes directorios de usuarios y recursos. Fue
desarrollado Red Hat. Fedora Directory Server es idéntico a la versión de Red Hat Directory
Server, solo renombrados.
Se destacan su capacidad de replicación Multimaster (MMR), compatibilidad con Active
Directory, Soporte SNMP, Integridad Referencial, Grupos estáticos y dinámicos, Roles, Clases de
Servicios, vistas, Editor Gráfico de Esquema y todo un conjunto de herramientas para un control
operacional más granulado. En la actualidad esta trabajando en una amplia variedad de
empresas e instituciones a nivel mundial, principalmente por su alto rendimiento y fácil
administración.
BASES DE DATOS: Es un conjunto de datos pertenecientes a un mismo contexto y
almacenados para su posterior uso. En la actualidad, y debido al desarrollo tecnológico de
campos como la informática y la electrónica, la mayoría de las bases de datos están en formato
digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.
SISTEMA DE DIRECTORIOS: Un directorio es una base de datos que está optimizada para
lecturas, dónde se van a producir pocas escrituras. Un directorio es, por ejemplo, el DNS, dónde
el número de consultas es mucho mayor que el de adiciones o modificaciones. Los típicos usos
que se le dan incluyen el almacenamiento de la información del usuario, claves, direcciones de
correo, etc.
DNS: (Domain Name System/Sistema de nombres de dominio) Es una base de datos distribuida
y jerárquica que almacena información asociada a nombres de dominio como Internet, aunque
11. tiene la capacidad de almacenar diferentes tipos de información para cada nombre,
principalmente solo se utiliza para asociar una dirección IP con un nombre de dominio en
especifico y la localización de direcciones de correo electrónico de cada dominio. Ejemplo, si el
servidor WEB www.midominio.com tiene la dirección IP “200.15.33.21”, la mayoría de la gente
llega a este sitio utilizando el nombre de dominio mas no utilizando la dirección IP, ya que es
mas difícil de recordar que el nombre.
Tipos de registro en el DNS que son necesarios para nuestro servidor de correo:
REGISTRO “A”: (Address/Dirección) Este tipo de registro se utiliza para traducir nombres a
direcciones de Internet.
REGISTRO “MX”: (Mail Exchange/Registro de Intercambio de Correo) Este registro asocia un
nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. Los
registros MX apuntan a los servidores a los cuales enviar un correo electrónico, y a cual de ellos
debería ser enviado en primer lugar según su numero de prioridad.
El mecanismo MX permite usar múltiples servidores de correo para un solo dominio y establece
el orden en el cual deberían ser interrogados, aumentando la probabilidad que el correo pueda
ser entregado y proporcionando la capacidad de distribuir el procesamiento del correo entrante
a través de múltiples servidores físicos.
VIRUS: Es un programa capaz de instalarse y ejecutarse por sí mismo (quot;reproducirsequot;) en un
equipo, y usualmente causar daños a archivos y programas. Algunos virus pueden enviarse por
correo electrónico, e instalarse (quot;infectar y propagarsequot;) en otros equipos remotos. Ejemplos de
virus recientes que se extienden por SMTP son NetSky, Mydoom, etc.
SPAM: Son mensajes de correo enviados por robots (programas automáticos) que en el pasado
usaban las vulnerabilidades de los MTA para ser enviados por servidores de correo.
Generalmente envían publicidad, cadenas, y otras clases de basura. Los mensajes son
inofensivos y sólo son fuente de distracción para los usuarios y almacenamiento inútil de espacio
en disco.
MALWARE: (Malicious software, también llamado badware, software malicioso o software
malintencionado) Es un software que tiene como objetivo infiltrarse en o dañar un ordenador sin
12. el conocimiento de su dueño y con finalidades muy diversas, como es bloquear el ordenador,
destruir software y archivos, entre otros.
ANTIVIRUS: Es un programa con la capacidad de detectar y eliminar virus informáticos y otros
maliciosos (malware). Básicamente, un antivirus compara el código de cada archivo con una base
de datos de los códigos (también conocidos como firmas o vacunas) de los virus conocidos, por
lo que es importante actualizarla periódicamente a fin de evitar que un virus nuevo no sea
detectado.
ANTISPAM: Es un programa o aplicación encargado de filtrar todos los mensajes de correo
electrónico remitido a las direcciones de correo electrónico de su dominio en busca de SPAM y
de correo electrónico no deseado, aplicando una serie de reglas internas.
SSL: (Secure Socket Layer/Protocolo de capa de conexión segura) Es un protocolo criptográfico
que proporciona una conexión segura a través de una red, comúnmente Internet. Su sucesor TLS
(Transport Layer Security) contiene pequeñas diferencias frente a SSL pero el protocolo
permanece sustancialmente igual.
TLS: (Transport Layer Security) Es un nivel (Layer) que garantiza seguridad (conexión segura) y
privada a la interacción de un protocolo ya que provee mecanismos de encriptación a la
comunicación. Su antecesor es SSL (Security Socket Layer). Los protocolos en nivel TLS cambian
su nomenclatura y el puerto de comunicaciones que utilizan. Así “http” (puerto 80) sobre TLS
cambia a “https” (puerto 443). Los protocolos mencionados arriba cambian a: “Smtps” puerto
465, “Pop3s” puerto 995, “Imaps” puerto 993.
DOMNINIOS VIRTUALES: Son aquellos dominios que realmente no existen, es decir nuestro
servidor tiene un nombre de dominio en especifico, pero puede recibir correos destinados hacia
dominios con los que el nombre de nuestra maquina no tiene nada que ver. Ejemplo, nuestro
servidor posee el nombre <mail.midominio.com>, pero si en la variable
“virtual_mailbox_domain” especificamos un dominio como dominiodos.com, nuestro servidor
podrá procesar los correos que vallan dirigidos hacia dicho dominio.
13. SERVICIOS A UTILIZAR:
Existen varios servidores de correo, los cuales nos ofrecen múltiples características en
su configuración, en este manual como ya lo habíamos mencionado antes,
utilizaremos el postfix.
Conozcamos un poco acerca de lo que es postfix, sus funciones y características.
POSTFIX:
Postfix es un MTA (Mail Transport Agent ) rápido, fácil de administrar y seguro,
es totalmente compatible con sendmail, manteniendo externamente las formas
14. de este. Postfix es una combinación de diversos programas que realizan su
función determinada dentro del conjunto.
Postfix, originalmente desarrollado en IBM por el experto de seguridad y
programador Wietse Venema, es un MTA compatible con Sendmail diseñado
para ser seguro, rápido y fácil de configurar.
Postfix utiliza un diseño modular para mejorar la seguridad, en el que los
procesos pequeños con privilegios limitados son lanzados por un demonio
master. Los procesos más pequeños, con menos privilegios, realizan tareas
muy específicas relacionadas con las diferentes etapas de la entrega de
correos y se ejecutan en un ambiente de cambio de root para limitar los efectos
de ataques.
Los archivos de configuración de Postfix son legibles y aceptan hasta 250
directrices. A diferencia de Sendmail, no se requiere procesar ninguna macro
para que los cambios tomen efecto y la mayoría de las opciones usadas
frecuentemente se describen en archivos muy bien comentados.
Postfix almacena sus archivos de configuración en el directorio /etc/postfix/. A
continuación se muestra una lista de los archivos usados más a menudo:
access — Utilizado para el control de acceso, este archivo especifica los
sistemas que pueden conectarse a Postfix.
aliases — Una lista configurable que el protocolo de correo requiere.
main.cf — El archivo global de configuración de Postfix. La mayoría de las
opciones de configuración se especifican en este archivo.
master.cf — Específica la forma en que Postfix interactúa con diferentes
procesos para lograr la entrega de correo.
transport — Hace las correspondencias entre direcciones de correo electrónico
y los hosts de transmisiones.
Otros servicios a implementar son:
CYRUS-IMAPD
Cyrus IMAP (Internet Message Access Protocol) es desarrollado y mantenido por
Andrew Systems Group. A diferencia de otros gestores de correo IMAP, cyrus
almacena cada correo en un fichero independiente. Las ventajas son obvias:
*Mayor fiabilidad de almacenamiento.
*Rapidez de acceso inusitada.
*Los índices de cada mensaje y su estado se guardan en una base de datos a parte.
15. *Los mensajes se indexan para una mayor rapidez en el acceso de la búsqueda.
*No es necesario una cuenta de sistema Linux para cada uno de los usuarios de
correo.
Es un cliente de correo electrónico (MUA), es decir con este paquete instalaríamos los
servicios POP e IMAP para poder enviar y recibir el correo, hemos decidido utilizar
Cyrus-imapd porque nos permite un formato para los buzones de correo que mejora el
rendimiento y escalabilidad de Maildir. Este formato almacena los datos por partes del
sistema de archivos y que solo pueden ser accedidos por el servicio de Cyrus-imapd.
Igualmente si estas trabajando en fedora 9 y lo instalas desde los .rpm, te podrá
solicitar las siguientes dependencias:
1. cyrus-imapd-perl-xxxxx.rpm
2. cyrus-imapd-utils-xxxxx.rpm
3. db4-utils-xxxxx.rpm
FEDORA-DS
Con este paquete instalaremos el servidor Fedora Directory Server para la validación de los
usuarios contra este sistema de directorios, también si lo instalas desde los .rpm, podría pedirte
las siguientes dependencias:
1. libtermcap-xxxxx.rpm
2. termcap-xxxxx.rpm
Terminada la conceptualización ahora si procederemos a la respectiva instalación y
configuración de nuestro servidor.