1
ACTIVIDAD 11 - SOLUCIÓN DE CORREO
GERSON ZAPATA AGUDELO
JULIÁN CASTAÑEDA
BRAHIAN ZAPATA MUÑOZ
Ficha
455596
Tecnología en gestión de redes de datos
Instructor
Andres Mauricio Ortiz
SERVICIO NACIONAL DE APRENDIZAJE
CENTRO DE SERVICIOS Y GESTIÓN EMPRESARIAL
MEDELLÍN
2014
2
Contenido INTRODUCCIÓN .......................................................................................................... 3
CONFIGURACIÓN DE OPENLDAP ............................................................................. 4
CONFIGURACIÓN DE SERVIDOR POSTFIX (MTA) USANDO LDAP COMO
BACKEND. ................................................................................................................. 13
INSTALACIÓN Y CONFIGURACIÓN DE DOVECOT (MAA) ...................................... 16
OPENSSL Y CERTIFICADOS DIGITALES AUTOFIRMADOS ................................... 21
SMTP CON TLS Y SASL MEDIANTE EL DOVECOT ............................................. 22
IMAP Y POP3 CON TLS ......................................................................................... 25
SOLUCIÓN WEBMAIL CON TLS ............................................................................ 28
LISTAS DE DISTRIBUCIÓN ....................................................................................... 35
CUOTAS DE ALMACENAMIENTO Y ENVÍO ............................................................. 40
WEBGRAFÍA .............................................................................................................. 44
3
INTRODUCCIÓN
Una solución de correo consiste en toda la infraestructura tecnológica dentro de
una empresa, en donde usuarios ya sean de una entidad en la web u
organización obtienen servicios que le permiten intercambiar mensajes
electrónicos con otros usuarios de la organización o dominio, o con usuarios de
otras organizaciones o dominios en Internet. Sin embargo una solución de
correo es mucho más que un simple servicio, es en realidad un entramado de
servicios y tecnologías que interactúan entre sí para permitir, como mínimo, a
los clientes finales (los usuarios del correo electrónico) intercambiar mensajes.
Adicionalmente, debido a la tendencia de convergencia de servicios, una
solución de correo electrónico también puede proveer funciones
complementarias a sus clientes, como por ejemplo: Agenda Electrónica,
Mensajería unificada y Almacenamiento remoto. Pero esto no es todo, la ya
irrefutable necesidad de añadir seguridad en las transacciones de los diferentes
entes que intervienen en una comunicación en los servicios de la solución de
correo, y la necesidad de implantar métodos de autenticación y validación en
las cuentas del correo electrónico aumentan el grado de complejidad de las
soluciones de correo.
4
CONFIGURACIÓN DE OPENLDAP
En la actividad anterior se elaboró la configuración del Directorio LDAP, no
obstante debemos agregar un esquema para definir clases y atributos a los
usuarios para que puedan usar su cuenta de correo como lo son: mailenable,
mailbox, maildrop, etc.
Para agregar el esquema lo primero que debemos hacer es crearlo.
5
6
Ahora vamos a convertir el mail.schema a mail.ldif, ya que estamos usando la
versión 2.4 del openLDAP y éste trabaja directamente con archivos de
extensión LDIF y no con SCHEMA.
Para visualizar los esquemas actuales usamos el comando tree, como se
puede ver no hay ningún esquema que se refiera a mail o correo electrónico.
7
Creamos el fichero myschemas.conf y dentro de éste agregamos las siguientes
líneas que lo que hacen es incluir los esquemas actuales y adiciona el
mail.schema.
Creamos el directorio para la creación de los esquemas en formato LDIF.
8
Con slapest convertimos a LDIF.
Verificamos con el comando tree y podemos ver mail.ldif.
Copiamos el archivo cn={11}mail.ldif y la editamos para que queden las primeras tres
líneas idénticas como se muestra en la imagen.
Borramos las siguientes líneas.
9
Agregamos una nueva entrada al Directorio mediante Apache Directory Studio.
10
Click en Next.
Seleccionamos la clase de objeto mailAccount, y las demás que se necesiten.
11
Copiamos el uid del usuario.
Añadimos los atributos mailbox y mailenable.
12
NOTA: El atributo mail será usado para indicarle al servidor de correo el e-mail
del usuario.
NOTA: El atributo mailbox será usado para indicarle al servidor de correo cual
será la ruta (path) del buzón del usuario. Por ejemplo si se almacenan los
correos en /var/mail , el buzón de pedroq estará en la ruta
/var/mail/pedroq/Maildir/.
NOTA: El atributo mailenable será usado para indicarle al servidor de correo
que la cuenta se encuentra activa o inactiva.
13
CONFIGURACIÓN DE SERVIDOR POSTFIX (MTA)
USANDO LDAP COMO BACKEND.
Instalamos el postfix, en éste caso en la distribución de Red Hat ya viene
instalado por defecto. Los ficheros principales de configuración son el main.cf y
el master.cf.
En el fichero main.cf va la configuración general del postfix y en el master.cf va
la configuración o la integración de otros servicios con el postfix como ejemplo
el dovecot.
Editamos las lineas del main.cf como muestran las imágenes.
myhostname: Define dirección IP del servidor o FQDN que va a estar
escuchando las peticiones SMTP.
mydomain: Define el dominio al que pertenece el servidor.
myorigin: Es el nombre del dominio con el que se enviarán los correos
salientes.
inet_interfaces: Las interfaces que estarán escuchando las peticiones de
clientes de correo.
mynetworks: Las subredes a las que el servidor va a permitir el uso del correo.
home_mailbox: Define el formato en que serán entregados los correos.
mydestination: Especifica que dominios entregar localmente, en vez de
enviarlo a otras máquinas.
En este segmento va la configuración de los usuarios virtuales o los usuarios
del directorio.
virtual_mailbox_domains: Hace que Postfix reconozca el dominio de correo
virtual. Si se incluye $mydomain en virtual_mailbox_domains no puede incluirse
en mydestination.
virtual_mailbox_base: Especifica un prefijo para todas las rutas de acceso de
buzón virtual. En este directorio se crearán varios subdirectorios, uno por cada
14
usuario del LDAP que sea también usuario de correo electrónico. Por ejemplo,
para el usuario uid=brahianm,dc=abc,dc=org , postfix creará los directorios
/var/vmail/brahianm y /var/vmail/brahianm/Maildir.
Creamos el usuario vmail y le asignamos como home el directorio “/var/vmail/”.
virtual_mailbox_maps: Especifica la tabla de búsqueda de los buzones. Este
parámetro lo pasaremos usando LDAP, a través del atributo mailbox. Por
ejemplo: cuando postfix recibe un correo electrónico para el usuario
[email protected] necesita saber dónde almacenarlo, entonces realiza una
consulta al servidor LDAP del atributo mailbox, del usuario brahianm. El
servidor LDAP responderá que el atributo mailbox será brahianm/Maildir/.
Creamos el fichero “ldap-accounts.cf”, en éste va descrita la forma en como se
filtrará la búsqueda del usuario, si contiene el atributo mailbox y además si
está habilitada la cuenta de correo.
Reiniciamos el servicio.
Verificamos con postmap que el usuario se mapee correctamente.
Enviamos un correo mediante una consola.
La imagen muestra que el directorio del usuario se creó correctamente y que
hay un correo dentro del INBOX.
15
Con el comando cat observamos que el mensaje fue recibido exitosamente.
16
INSTALACIÓN Y CONFIGURACIÓN DE DOVECOT (MAA)
Dovecot es un servidor de IMAP y POP3 Open Source para sistemas
GNU/Linux o Unix en general Dovecot puede trabajar con el estándar MBOX y
MAILDIR y es completamente compatible con clientes MUA que accedan
directamente a los buzones de correo.
Dovecot también incluye un Agente de Entrega de Correo llamado Local
Delivery Agent (agente de entrega local o LDA). Por el momento, el agente de
entrega de correo es virtual, a través de postfix, pero más adelante tendremos
que configurar dovecot como MDA. Esto con el fin de que se impida la entrega
de correos cuando los usuarios hayan excedido la cuota.
Instalamos el dovecot.
Con chkconfig habilitamos el arranque del servicio apenas inicie el servidor.
Es recomendable conocer qué versión estamos usando del dovecot para
buscar fácilmente la documentación de la página oficial.
Editamos el fichero dovecot.conf el cual define los protocolos que se van a
usar, e incluye todos los ficheros de configuración dentro del directorio
/etc/dovecot/conf.d/.
El 10-mail.conf es el fichero que permite que cada vez que un usuario quiera
acceder al correo, se mapee a la ruta indicada en la directiva de mail_location,
su funcionamiento consiste en que el %n se reemplaza por el nombre de
usuario haciendo que el maildir del usuario [email protected] sea
/var/vmail/brahianm/Maildir y las directivas mail_uid/mail_gid permiten el
ingreso al directorio /var/vmail, ya que tienen los permisos correspondientes.
17
Antes de que un usuario pueda acceder a su buzón desde el MUA, debe pasar
por un proceso de autenticación con el servidor POP/IMAP. Este archivo
permite configurar configurar qué tipo de backends se usarán para usuarios y
contraseñas. En nuestro caso usamos LDAP.
Comentamos la línea auth-system.conf.ext que usa los usuarios locales como
autenticación, y descomentamos la línea auth-ldap.conf.ext que utiliza la
autenticación mediante usuarios ldap.
El fichero auth-ldap.conf.ext que se hace referencia debemos copiarlo ya que
no está por defecto en el directorio /etc/dovecot/.
Editamos el fichero.
18
hosts: El servidor LDAP está en la misma máquina del servidor de correo
(127.0.0.1).
sasl_bind / tls: No se usará SASL ni TLS para la conexión con el LDAP.
scope subtree: indica que la búsqueda de usuarios se realizará a partir la
base
dentro de todos los contenedores y sub-contenedores.
auth_bind: Las búsquedas son anónimas, no se requerirá la autenticación con
el servidor LDAP.
base: Indica la base de búsqueda para los usuarios, en este caso será
dc=abc,dc=com.
user_filter y pass_filter: Son las directivas que permiten filtrar las búsquedas
de usuarios y passwords, respectivamente. En otras palabras, los usuarios
para DOVECOT serán aquellas entradas del directorio que sean instancias de
la clase mailAccount, que el correo esté habilitado (mailenable=OK) y cuyo uid
sea la parte de username del correo electrónico (%n).
pass_attrs: especifica cuáles serán las credenciales para autenticarse en el
servidor POP/IMAP. En este caso se usará el atributo uid como el login y el
atributo userPassword como contraseña.
19
Reiniciamos el servicio.
Nos logueamos con el comando telnet al puerto 110 que es el puerto por
defecto del pop3 y al puerto 143 que es el puerto por defecto del imap.
POP3.
20
IMAP.
21
OPENSSL Y CERTIFICADOS DIGITALES
AUTOFIRMADOS
SSL (Secure Sockets Layer) y TLS (Transport Layer Security) son protocolos
que se encargan de asegurar la transferencia de datos mediante diferentes
protocolos de la capa de transporte.
El certificado SSL es un certificado digital comúnmente usado para el cifrado de
la información.
Lo primero que debemos hacer es generar nuestra llave privada, luego de tener
creado el certificado SSL dependerá de ésta llave para su funcionamiento en
cualquier servicio que requiera una conexión segura.
En este caso generamos una llave de 1024 bits.
Creación del CSR (Certificate Signing Request). La base para un certificado
SSL, en el se definen datos como el dominio, organización, ubicación,
información de contacto, entre otros.
Cabe aclarar que estas opciones también son necesarias cuando vas a
adquirir un certificado SSL de un proveedor autorizado, durante la gestión del
mismo, el proveedor va a solicitar este archivo para crear tu certificado. Por lo
tanto, debemos tener mucho cuidado en que la información que ingresamos
sea correcta.
22
Generando el certificado SSL con expiriación “days”. Para ello es necesario
tanto la llave privada como el CSR que anteriormente hemos creado.
Copiamos la llave y el certificado a “/etc/ssl/certs/” teniendo en cuenta que para
asegurar conexiones se debe hacer referencia a estos dos ficheros.
SMTP CON TLS Y SASL MEDIANTE EL DOVECOT
El SASL (Simple Autentication and Security Layer) consiste en un conjunto de
requerimientos para los mecanismos de autenticación. Los protocolos IMAP,
POP3 y SMTP tienen soporte para SASL.
Editamos las líneas del fichero main.cf del postfix.
23
SASL CONFIGURACIÓN
smtpd_sasl_type: Define el tipo de SASL, puede ser Cyrus SASL o Dovecot.
smtpd_sasl_path: Define si la comunicación es via sockets de Unix o TCP.
smtpd_sasl_auth_enable: Activa la autenticación mediante SASL.
smtpd_recipient_restrictions: Define restricciones para recibir los correos.
TLS CONFIGURACIÓN
smtpd_use_tls: Habilita el uso del TLS.
smtpd_tls_auth_only: Habilita la opción de autenticación únicamente por tls.
smtpd_tls_key_file: Se hace referencia a la llave privada.
smtpd_tls_cert_file: Se hace referencia a el certificado digital.
smtpd_tls_loglevel: Define el nivel de log para cuando se recibe correo.
smtp_tls_loglevel: Define el nivel de log para cuando se envía correo.
smtpd_tls_received_headers: Básicamente si se habilita muestra cabeceras en
la comunicación con otros servidores de correo, suelen ser transacciones TLS.
Verificamos las opciones SASL disponibles en nuestro servidor.
Editamos las lineas del fichero 10-master.conf, las cuales definen el socket y
permisos para la autenticación mediante SASL por dovecot.
24
Descomentamos las lineas que se muestran en la imagen, de éste modo
integramos el SASL del dovecot con el postfix.
Reiniciamos el postfix y el dovecot.
Con openssl en modo cliente verificamos si el TLS se activó correctamente.
25
IMAP Y POP3 CON TLS
Para configurar TLS en dovecot solamente debemos agregar el protocolo y
hacer referencia a la llave privada igualmente que al certificado digital en el
fichero 10-ssl.conf.
26
Reiniciamos el dovecot.
Con openssl en modo cliente verificamos si se activó el TLS en el imap.
27
Repetimos el comando, pero en este caso cambiamos la opción imaps por
pop3s, así comprobamos que el TLS se activó correctamente.
28
SOLUCIÓN WEBMAIL CON TLS
Un webmail es una plataforma que permite a los clientes de correo electrónico
revisar el buzón y enviar correo mediante un navegador por vía web.
Para implementar esta solución ya se había instalado el xampp en un manual
anterior.
Hacemos un soft link del xampp dentro de /etc/init.d/ para que lo reconozca se
reconozca como un servicio.
Con chkconfig decidimos que el xampp se inicie apenas arranque el sistema.
Editamos el fichero que se encarga de asegurar el apache dentro del xampp.
29
Habilitamos el puerto seguro 443 al igual que el SSL, y definimos un host virtual
haciendo referencia a la llave privada y el certificado digital para la
comunicación segura.
Agregamos éstos host virtuales para que sólo se pueda ingresar al
phpmyadmin localmente y que sólo se permitan conexiones al puerto 443.
Descargamos el roundcube de la página principal
http://roundcube.net/download/ y lo descomprimimos dentro del Document Root
en éste caso el default de apache.
Se observa que se creó el directorio roundcube el cual tiene el aplicativo.
Para instalar el roundcube debemos tener creada una base de datos, por lo
que vamos a crearla con el phpmyadmin.
Vamos a la sección de usuarios y agregamos un nuevo usuario.
30
Digitamos el nombre del usuario, la contraseña y activamos la opción de crear
base de datos con el mismo nombre y otorgar todos los privilegios y damos
click en continuar.
31
Como se ve en la imagen la base de datos ha sido creada de manera exitosa.
Llenamos el formulario acorde a nuestra configuración hecha anteriormente.
Descargamos los dos archivos generados de la configuración del roundcube, el
main.inc.php contiene la configuración general y el db.inc.php la configuración
de la base de datos.
32
Copiamos los ficheros dentro de el directorio config del roundcube.
Dando click en inicializar la base de datos se instalan las tablas y por lo tanto el
roundcube ya quedará instalado.
33
Luego de verificar que hay conexión con el smtp y el imap procedemos a
inhablitar en la configuración general del roundcube la sección del instalador,
para no correr el riesgo de que cualquier persona altere el funcionamiento del
roundcube.
Así ya podemos iniciar a la plataforma web en modo seguro, digitamos el
nombre y la contraseña de un usuario que esté en la base de datos LDAP.
34
Comprobamos que funciona sin inconvenientes la plataforma web con tls.
35
LISTAS DE DISTRIBUCIÓN
Una lista de distribución es una lista de correos de usuarios que tienen algo en
común, dado que si un correo se envía a [email protected] lo recibirán los
usuarios pertenecientes a la dirección general.
Para crear una lista de distribución debemos crear una entrada dentro de la
unidad organizativa que se requiera.
La nueva entrada debe ser tipo mail y los objectClass deben ser mailAccount y
36
mailAlias.
37
Los atributos mail y mailalias son obligatorios, a parte de esos dos
agregaremos los correos de los usuarios con el atributo maildrop.
Finalizamos la creación de la entrada.
38
Agregamos la directiva virtual_alias_maps en el fichero main.cf del postfix, y
hacemos un procedimiento parecido al mapeo de usuarios.
Creamos el fichero maillist.cf y agregamos las siguientes líneas que lo que
hacen es verificar que exista la entrada en el árbol de directorio y filtra los
atributos maildrop y luego deposita el correo en el buzón de cada usuario.
Verificamos con el comando postmap que al hacer referencia a la entrada mail,
si se mapeen los correos correspondientes.
Ahora verificaremos mandando un correo a la lista de distribución.
Como muestran las siguientes imágenes el correo fue entregado correctamente
a los usuarios de la lista de distribución.
39
40
CUOTAS DE ALMACENAMIENTO Y ENVÍO
La configuración de cuotas de almacenamiento suelen ser muy usadas, ya que
mediante ellas se evita el riesgo llenar el disco duro en un tiempo corto, al igual
que la cuota de envío que permite que un usuario sólo pueda enviar una
cantidad de tamaño de archivos adjuntos, dado a que cada correo no debe
exceder el tamaño, el buzón no se llenaría con un sólo correo.
Para configurar las cuotas de almacenamiento primero hay que habilitar los
plugins en el dovecot y en cada protocolo IMAP y POP3.
Dado que el postfix debe saber que si un usuario excede la cuota no entrega el
correo, debemos integrar el dovecot con el postfix para la función mencionada,
en el fichero master.cf del postfix agregamos las siguientes líneas, haciendo
que el postfix sepa cuando un buzón excede la cuota.
Agregamos las reglas de quota dependiendo de las necesidades, en éste
ejemplo cada usuario va a poder tener una giga de almacenamiento en el
INBOX, en el directorio Sent 25 Megas, y tanto la Papelera como el directorio
de Spam será de 10 Megas.
41
Los quota warnings son las advertencias que hace el dovecot cuando el buzón
se está llenando.
En la siguiente imagen lo que hacemos es habilitar la cuota para el maildir de
los usuarios.
Para configurar la cuota de envío añadimos la siguiente línea al fichero de
configuración main.cf del postfix en éste caso el máximo tamaño es de 25M.
Dado que el roundcube trae configurado por defecto no dejar subir ficheros
mayores a 5M modificamos las líneas siguientes del fichero oculto htaccess
con los valores correspondientes.
42
Reiniciamos el postfix, dovecot y el apache (xampp).
Con el comando doveadm verificamos la cuota de almacenamiento de un
usuario por medio de consola.
Verificamos desde el navegador en la parte inferior izquierda nos sale la cuota
y el porcentaje de uso.
43
Adjuntamos un fichero que exceda la cuota de envío.
Funciona exitosamente la cuota de envío.
44
WEBGRAFÍA
● http://www.nanotutoriales.com/como-crear-un-certificado-ssl-de-firma-
propia-con-openssl-y-apache-http-server - Certificados digitales apache
● http://wiki2.dovecot.org/SSL/DovecotConfiguration - SSL Dovecot
● http://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL - SASL
● http://www.postfix.org/VIRTUAL_README.html - Virtual Mailbox
● http://informatica.iessanclemente.net/manuais/index.php/Instalación_y_a
dministración_de_Servicio_de_Correo_Electrónico_en_Debian
● http://wiki2.dovecot.org/Quota/Configuration - Quotas Almacenamiento