PROYECTO PLATAFORMA DE CORREOS

Administración de Redes de Computadores

Presentado por: Rafael Emiro Vega Tirado. Jeyson Andrey Henao Alvarez. Jonathan Andrés Loaiza García. César Pineda. Marcela Grupo: 9 HELP LAN

Presentado a: Prof. Andrés Mauricio Ortiz.

Servicio Nacional de Aprendizaje “SENA” Regional Antioquia
Centro de Servicios y Gestión Empresarial.

2008

Proyecto Plataforma de Correos.

INTRODUCCIÓN
En éste proyecto presentaremos una guía avanzada de cómo instalar y configurar una plataforma o sistema de correos segura utilizando el MTA Postfix, Dovecot (IMAP y POP3), Amavis-New (Spamassassin y ClamAV), TLS, OpenSSL, SASL, Squirrelmail. De igual forma, se debe instalar y configurar un Servicio de Directorios para poder autenticar y almacenar la base de datos de los usuarios, para esto se utilizará la base de datos de OpenLDAP la cual será administrada desde el servicio de directorio de Mandriva Directory Server. Todo lo anterior estará instalado y configurado sobre el Sistema Operativo GNU/Linux Debian.

2

Proyecto Plataforma de Correos.

OBJETIVOS
OBJETIVO GENERAL Se debe diseñar, implementar y gestionar un sistema o plataforma de correos en el Sistema Operativo GNU/Linux Debian. OBJETIVOS ESPECÍFICOS Se debe presentar un manual de configuración del sistema de correos. En cuyo manual se debe tener en cuenta los siguientes objetivos en lo que se enfocará el proyecto. • • • • • • • Cifrar el tráfico entre usuarios y servidor. Validar los usuarios contra un sistema de directorios. Almacene los correos de los usuarios en un sistema de directorios. Permita configurar usuarios y dominios virtuales. Soporte un sistema de antivirus, antispam y antimawalre. Soporte administración gráfica. Soporte acceso POP, IMAP y Webmail (Realizarlo de forma segura con SSL).

3

Proyecto Plataforma de Correos.

CONCEPTOS TEÓRICOS Postfix.
Es un MTA (Mail Transportation Agent, Agente de Transporte de Correo) de código abierto, utilizado para el envío de correos electrónicos utilizando el protocolo en SMTP (Simple Mail Transfer Protocol), el cual pretende ser fácil en su administración, ser rápido y, algo importante, ser compatible con otros MTA como Sendmail. Postfix no es un programa monolítico, sino que utiliza una gran combinación de paquetes; dichos paquetes cumple una función específica en los parámetros de configuración. • SMTP: (Simple Mail Transfer Protocol, Protocolo Simple de Transferencia de Correos). El cual se basa en el intercambio de correos electrónicos entre equipos de cómputo, entre otros dispositivos como los son los celulares, PDA´s, etc. Éste se basa en la estructura ClienteServidor. Trabaja por el puerto 25

Dovecot.
Simplemente es un Servidor POP/IMAP. • POP: (Simple Mail Transfer Protocol), utilizado en los clientes locales de correo con el fin de obtener los correos almacenados en un servidor remoto, de ésta forma, los correos se pueden guardar en el equipo cliente, aunque nada impide dejar los correos en el servidor. Trabaja en el puerto 110 • IMAP: (Internet Message Access Protocol), Es más complejo y obtiene ciertas ventajas sobre POP por ejemplo: Permite visualizar los correos remotamente y no descargarlos al equipo cliente como lo hace POP, de tal forma que si se borra un mensaje desde un usuario se borrará en el servidor, si abrimos un mensaje desde el cliente también se abrirá en el servidor. Trabaja en el puerto 143

4

Proyecto Plataforma de Correos.

AMAVIS-NEW
Es una interfaz entre el MTA y los filtros de contenido (ClamAV Y Spamassassin). Se comunican mediante con el MTA mediante el protocolo SMTP o LMTP. Trabajan por el puerto 10025 • Spamassassin: Es un filtro de correos, el cual cumple la función de identificar el spam mediante el análisis del texto contenido en el mensaje. • ClamaAV: Éste paquete cumple la función de escanear el texto y los archivos adjuntos del mensaje, de ésta forma el ClamAV bloquea los malware o códigos maliciosos. La base de datos de éste se encuentra permanentemente actualizada.

SASL
Es un Framework utilizado para la autenticación y autorización de protocolos de red. Sin embargo requiere mecanismos de ayuda como lo es TLS para realizar el cifrado de los datos al momento de ser transferidos.

SSL Y TLS
Secure Sockets Layer/Protocolo de Capa de Conexión Segura y Transportation Layer Security/Seguridad de la Capa de Transporte. Proporcionan seguridad en la red mediante el cifrado de la comunicación. Postfix/TLS no implementa por sí mismo TLS, éste debe utilizar un paquete adicional: OpenSSL. Corren por el puerto 636

SQUIRRELMAIL
Es un WebMail (MUA) o cliente Web, el cual cumple la función de revisar y enviar correos desde una interfaz Web.

5

Proyecto Plataforma de Correos.

TIPOS DE BUZONES PARA EL CORREO
Los servidores de correo utilizan uno de los dos tipos de buzones: Mailbox y Maildir. MAILBOX: Es un tipo de buzón que almacena los correos en forma de cola, es decir, éste almacena todos los correos de un respectivo usuario en un solo archivo; de ésta forma todo correo, sea spam, enviado o recibido se al macerarán en ese único archvio. Cada usuario, por lógica tiene su propio archivo. Éste archivo está ubicado en la siguiente ruta /var/spool/mail/[USUARIO]. MAILDIR: Es otro tipo de buzón consiste en un directorio, en el cual existen otros subdirectorios en los que van guardados los mensajes en diferentes archivos. De ésta forma los mensajes spam, enviados o recibidos se almacenarán en archivos distintos. Generalmente el archivo Maildir se encuentra en la siguiente ruta /home/[USUARIO]/Maildir.

6

Proyecto Plataforma de Correos.

MANDRIVA DIRECTORY SERVER “MDS”
Es una plataforma de directorio o servicio de directorio basado en OpenLDAP diseñado para cumplir la función de gestionar identidades, control de acceso a la información, definir políticas administrativas en la red, administración de servios de red, las aplicaciones y la configuración de los usuarios. Éste servicio de directorio puede correr sobre diferentes distribuciones de Linux, en pocas palabras, se puede instalar y configurar tanto en la distribución de Linux Mandriva como en Linux Debian, entre otras. Se puede dar una breve explicación mediante la siguiente gráfica a cerca del funcionamiento de éste.

7

Proyecto Plataforma de Correos.

DESCRIPCIÓN DE LOS PAQUETES A UTILIZAR
Para la instalación del MDS junto con la plataforma de correo se deben instalar ciertos paquetes, por consiguiente, se deberá realizar una pequeña explicación de la función de cada paquete. • Mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent: Son los paquetes utilizados para la administración gráfica del servicio de directorios como tal. • Python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba: Son las librerías de Python (Lenguaje de programación), utilizados para comprender el lenguaje de los paquetes mmc. • • • • • • Postfix: es el MTA como tal. Postfix-ldap: es el esquema del Postfix con el fin de ser utilizado para ser poblado en la base de datos del LDAP. Dovecot-common, dovecot-imapd, dovecot-pop3d: Contienen los servicios de POP3 e IMAP. Amavisd-new: Es el paquete que contiene la interfaz entre el MTA y los filtros. Lzop, zoo, unzip, unrar, unzoo, arj, gzip, bzip2, nomarch: Utilidades compresor de archivos. Razor, pyzor, dcc: Son las bases de datos, ubicadas en Internet, que contienen las listas de spam. De ésta forma Éstos le indican a Spamassassin qué debe detectar como spam. • Sasl2-bin, libsasl2, libsasl2-modules: Utilizado para la autenticación y autorización de algunos protocolos de red, depende de sus respectivas librerías. • Dhcp3-server, dhcp3-server-ldap, bind9: Son los paquetes que contienen los servicios de DHCP y DNS y su respectivos paquetes para ser poblados al LDAP.

8

Proyecto Plataforma de Correos. • • • • Clamav, clamav-daemon: Es el paquete que instala el Antivirus para el servidor de correos. Spamassassin: Es el paquete del Antispam para el servidor de correos. Slapd: Es el paquete del LDAP. Samba, smbclient, smbldap-tools: Samba es el servidor como tal, smbclient es el cliente de samba y el paquete sambldap-tools es el que define cómo se conectará el Samba con el LDAP. • Squirrelmail: MUA, utilizado para revisar los correos vía Web.

PAQUETES PARA LA UTILIZACIÓN DE IMPRESORAS Los paquetes que se describirán a continuación, son utilizados para trabajar con impresoras, todo depende de los requerimientos que tengamos. • • • Cupsys, cupsys-client: Son paquetes de soporte para la utilización de las impresoras en red. Gutenprint: Es un manejador de Cups. Foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-dbfoomatic-filters foomatic-filters-ppds: Son paquetes utilizados para configurar impresoras comunes para ser utilizadas en Debian. • • Linuxprinting.org-ppds: Herramienta de impresión de archivos PPD. Fontconfig: Éste paquete es utilizado para localizar tipografías en el sistema y seleccionarlas según los requerimientos especificados por las aplicaciones. •

Hpijs-ppds: Describe a todas las impresoras que no son postscript que no están soportadas por linuxprintig.org. Libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl libnet-dns-perl ldap-utils libnss-ldap libpam-ldap: Son librerías que el LDAP necesita. Hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core: En el caso que se necesiten los paquetes para una impresora HP.

9

Proyecto Plataforma de Correos.

INSTALACIÓN Y CONFIGURACIÓN
1 Preparación del Sistema. 1.1 Nuestra máquina contará con las siguientes especificaciones: Hostname: server1.grupo9.com Samba Domain: GRUPO9 IP: 192.168.0.19 Gateway: 192.168.0.1 Passwords Para Todo: sena2008 1.2 Hostname: Editar el archivo hosts con el fin de que nuestra máquina nos resuelva localmente por ahora. #pico /etc/hosts El archive debe quedar de ésta forma: 127.0.0.1 localhost.localdomain localhost 192.168.0.19 server1.grupo9.com server1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts Proceder a poner como nombre a nuestra máquina server1.grupo9.com el cual se define en el archivo hostname #echo server1.grupo9.com > /etc/hostname Luego reiniciamos el sistema para que aplique los cambios efectuados. #reboot

10

Proyecto Plataforma de Correos.

Probamos de la siguiente forma si los cambios fueron aplicados. Para ver el nombre de nuestra máquina. #hostname Para probar si nuestra propia máquina está resolviendo nuestro nombre de host. #hostname –f En ambos resultados nos debe mostrar lo siguiente. server1.grupo9.com 1.3 Filesystem ACL´s. Se debe agregar ACL´s al Filesystem a nuestro punto de montaje “/”, con el fin de que SAMBA sea capaz de examinar los ficheros ACL dentro de nuestro servidor y así pueda almacenar los directorios, archivos y home´s de cada usuario. Editar el archivo fstab. #pico /etc/fstab Agregar la palabra opcion ACL en el punto de montaje. Debe quedar de la siguiente forma: # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 defaults,acl,errors=remount-ro 0 1 /dev/sda5 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

Debemos remontar el punto de montaje “/” para que aplique los cambios. #mount –o remount /

11

Proyecto Plataforma de Correos.

Para probar si los cambios fueron realizados, digitamos el siguiente comando. #mount –l Debe aparecer una línea parecida a ésta. /dev/sda1 on / type ext3 (rw,acl,errors=remount-ro) 2 REPOSITORIOS Para instalar los paquetes requeridos para realizar éste trabajo se deben utilizar los siguientes repositorios, los cuales habilitamos en el archivo sources.list #pico /etc/apt/sources.list Agregar los siguientes repositorios. # MDS repository deb http://mds.mandriva.org/pub/mds/debian etch main # Debian Volatile deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free # Debian Etch Backports deb http://www.backports.org/debian etch-backports main #OTROS deb http://ftp.es.debian.org/debian/ etch main contrib non-free deb ftp://ftp.us.debian.org/debian sarge main contrib non-free Antes de actualizar la lista de repositorios, debemos pedir una key para poder descargar los paquetes Backports. #wget -O - http://backports.org/debian/archive.key | apt-key add Luego se procede a actualizar la lista de repositories. #apt-get update

12

Proyecto Plataforma de Correos.

INSTALACIÓN DE LOS PAQUETES A UTILIZAR
Se procede a instalar los siguientes paquetes para luego empezar a configurar los respectivos archivos de configuración. apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base pythonmmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-phperl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds squirrelmail En éste paso procedemos a realizar la configuración inicial del LDAP y el Postfix. Digitar la contraseña para la base de datos LDAP “sena2008”.

13

Proyecto Plataforma de Correos. Confirmamos la contraseña “sena2008”.

14

Proyecto Plataforma de Correos. Seleccionamos “Aceptar”. Para mayor información, lea el aviso que muestra la imagen.

Digitar el nombre del grupo de trabajo “GRUPO9”. Éste nombre trabaja como un nombre Netbios.

15

Proyecto Plataforma de Correos. Escoger la opción “<NO>”. Con esto damos la opción que no queremos actualizaciones dinámicas para el Samba por parte del DHCP.

Se procede a la configuración inicial del servicio de Postfix “Aceptar”.

16

Proyecto Plataforma de Correos. Escogemos la opción “Sitio de Internet”, con el fin de que nuestro servicio de correo se vea a través de Internet, claro está, por medio de un dominio.

Digitar el nombre de correo “server1.grupo9.com”. Éste nombre indentifica desde dónde se a originado el correo.

17

Proyecto Plataforma de Correos. Identificado de Recuros para el Servidor LDAP. Digitar “ldap://127.0.0.1/”, con el fin de contactar al LDAP por medio de dicha IP y pueda ser contactado.

Digitar el Nombre Distintivo (DN) “dc=grupo9,dc=com”, el cual será utilizado para la base de búsqueda.

18

Proyecto Plataforma de Correos. Vesión de LDAP a utilizar “3” Se debe utilizar la versión más reciente que esté disponible.

Cuenta LDAP para root “cn=admin.,dc=grupo9,dc=com”. Con el fin de definir la cuenta para el root, el cual tendrá todos lo privilegios para el LDAP.

19

Proyecto Plataforma de Correos. Contraseña para la cuenta LDAP de root “sena2008”.

Éste

mensaje

indica por

que lo

el

archivo mas

nsswitch.conf adelante

no

se

gestiona

automáticamente, manualmente.

tanto,

debemos

modificarlo

20

Proyecto Plataforma de Correos. Make local root Database admin. “<No>”. Indica si solo el root puede ver la base de datos del LDAP.

¿Hace falta un usuario para acceder a la base de datos LDAP? “<No>” Se utiliza para permitir a otros usuarios acceder a la base de datos LDAP.

21

Proyecto Plataforma de Correos. Ahora procedemos a instalar los paquetes del Dovecot (POP3 e IMAP). #apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d La opción “apt-get install -t” da la opción de copiar todas la fuentes de argumento dentro del directorio; en éste caso copiará todas las fuentes del direcorio etch-backport, el cual está especificado en la lista de repositorios. Si se requiere, se procede a instalar los paquetes para el soporte de las impresoras HP. #apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62dev libsnmp9-dev lsb-core

CONFIGURACIÓN DEL LDAP
Se procede copiar los el esquema del Mail, Samba, MMC, Printer, DNS, DHCP y agregarlos al squema del LDAP. #cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/ #cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/ #zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema #zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema #zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema #zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema Debemos indicarle al LDAP que acepte los esquemas que acabamos de copiar, para esto editamos el archivo sldap.conf. #pico /etc/ldap/slapd.conf

22

Proyecto Plataforma de Correos. De ésta forma, procedemos a incluir las listas de los esquemas que copiamos anteriormente. include /etc/ldap/schema/mmc.schema include /etc/ldap/schema/samba.schema include /etc/ldap/schema/printer.schema include /etc/ldap/schema/mail.schema include /etc/ldap/schema/dnszone.schema include /etc/ldap/schema/dhcp.schema Sin embargo, debemos habilitar éstas líneas agregadas, por lo que debemos incluri la siguiente línea debajo de éstas. schemacheck on Se debe cifrar la contraseña del Admin LDAP, ya que en el momento de la instación no se cifró. Esto se hace con el fin de darle seguridad a la clave de acceso para el administrador. La contraseña se encripta en el formato SSHA. #slappasswd –s sena2008 Deba aparecer algo parecido a esto. {SSHA}lPd5OeiUGx4lyZUiQ2MFmzXV0JWyKV9A Abrir el archivo de configuración del LDAP para agregar ésta clave encriptada. #pico /etc/ldap/sldap.conf Buscar la línea que dice rootdn, y descoméntela, de tal forma que quede así. rootdn "cn=admin,dc=grupo9,dc=com" Y Agrege debajo de ésta la linea rootpw junto con la clave del Admin LDAP encriptada que originamos. rootpw {SSHA}lPd5OeiUGx4lyZUiQ2MFmzXV0JWyKV9A Dentro del mismo archivo, buscar la siguiente opción. index objectClass eq Bórrela o coméntela y agregue las siguientes. 23

Proyecto Plataforma de Correos. index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,givenname eq,subinitial index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq index zoneName,relativeDomainName eq index dhcpHWAddress,dhcpClassData eq Debemos definir las listas de acceso que samba tendrá sobre el LDAP. De ésta forma, buscamos y cambiamos la linea que dice. access to attrs=userPassword,shadowLastChange Por ésta. access to attrs=userPassword,sambaLMPassword,sambaNTPassword El archive sldap.conf debe de quedar de ésta forma. PONER AQUÍ EL ARCHIVO COMPLETO DE CÓMO DEBE QUEDAR. De igual forma, se debe editar el archivo de configuración ldap.conf, con el fin de especificarle al LDAP la IP y el nombre de dominio con que se quiere que trabaje. #pico /etc/ldap/ldap.conf Agregamos las siguientes líneas al final del archivo. host 127.0.0.1 base dc=example,dc=com Reiniciamos el servidor LDAP para que aplique los cambios efectuados. #/etc/init.d/sldap restart

24

Proyecto Plataforma de Correos.

CONFIGURACIÓN DE SAMBA
Proceder a configurar el servidor Samba, ya que el LDAP necesita de éste para poder almacenar los usuarios, password, entre otros, además para poder integrar las redes de Linux con las de Microsoft. Primero debemos parar el servicio. #/etc/init.d/samba stop Para integrar el servidor Samba con el LDAP debemos copiar el archivo smb.conf del LDAP y pegarlo en directorio de Samba. #cp /usr/share/doc/python-mmc-base/contrib/samba/smb.conf /etc/samba/ De ésta forma, editar el archivo de configuración smb.conf. #pico /etc/samba/smb.conf En la sección [Global] se deben modificar las siguientes líneas, de tal forma que se parezcan a éstas. workgroup = GRUPO9 netbiosname = SRV-GRUPO9 ldap admin dn = cn=admin,dc=grupo9,dc=com ldap suffix = dc=grupo9,dc=com logon path = \\%N\profiles\%U Adicionalmente, en la sección [Global], agregar las siguientes líneas, ya que no vienen por defecto en el archivo smb.conf del LDAP. Estas líneas representan el soporte y la integración que el Samba tendrá sobre el LDAP.

25

Proyecto Plataforma de Correos. preferred master = yes os level = 65 wins support = yes timeserver = yes socket options = SO_KEEPALIVE IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 logon drive = H: passwd program = /usr/sbin/smbldap-passwd -u %u passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n add user script = /usr/sbin/smbldap-useradd -m "%u" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" add group script = /usr/sbin/ambldap-groupadd -p "%g" delete user script = /usr/sbin/smbldap-userdel "%u" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" obey pam restrictions = no ldap idmap suffix = ou=Users ldap delete dn = no security = user En la sección [homes], agregar la siguiente línea. Con ésta línea le estamos dando la opción al Samba que por cada usuario que agregue le cree un buzón para el correo. hide files = /Maildir/ En la sección de [printers] y [print$], remueva la siguiente línea (En el caso de que la tengamos), ya que la impresora del admin no lleva por nombre root,@lpadmin printer admin = root,@lpadmin

26

Proyecto Plataforma de Correos. En la sección [print$], modificamos la linea write list, en la cual especificamos el nombre de la impresora de admin. write list = Administrator,root,@lpadmin En la sección [profiles], agregar la siguiente línea, con el fin de que los archivos de Samba estén ocultos. hide files = /desktop.ini/ntuser.ini/NTUSER.*/ En la sección [archives], editar la siguiente línea, de ésta forma especificamos la ruta de los archivos del samba, los cuales estarán ocultos por la opción que le dimos en el paso anterior. path = /home/samba/archives Además, agregar al final del archivo smb.conf el siguiente bloque [partage] que no viene por defecto. Esto es si queremos, ya que éste bloque no afecta para nada la configuración; simplemente se utiliza para publicar algunos servicios. [partage] comment = aucun path = /home/samba/partage browseable = yes public = no writeable = yes El archivo de configuración smb.conf debe quedar de ésta forma. PONER AQUÍ EL ARCHIVO DE CONFIGURACIÓN DE SAMBA. Digitar el siguiente comando con el fin de obtener un sumario de la configuración de Samba. Al final del sumario no debe presentar errores. #testparm

27

Proyecto Plataforma de Correos. Se procede a darle las credenciales a Samba para que pueda escribir sobre LDAP. #smbpasswd –w sena2008 Debe aparecer algo como esto, lo cual indica que las credenciales fueron asignadas correctamente. Setting stored password for "cn=admin,dc=grupo9,dc=com" in secrets.tdb Debemos genera un SID para el grupo de trabajo, con el fin de que el LDAP reconozca y autorice al Samba con éste identificador. #net getlocalsid GRUPO9 Debe mostrarnos al final algo como esto. No perdamos éste SID, ya que más adelante lo debemos utilizar. SID for domain GRUPO9 is: S-9-5-21-3159899829-923882392-54889933 Para comprobar que el SID fue registrado por el LDAP, digitamos el siguiente comando. #slapcat | grep sambaDomainName Lo más probable es que aparezcan algunas líneas de error, lo cual es normal. Lo que nos debe interesar es que aparezcan las siguientes líneas. dn: sambaDomainName=GRUPO9,dc=grupo9,dc=com sambaDomainName: GRUPO9 Luego se procede a iniciar el servicio Samba. #/etc/init.d/samba start 28

Proyecto Plataforma de Correos.

Debemos

crear

los

archivos

de

configuración

de

smbldap-tools

(smbldap_bind.conf, smbldap.conf), los cuales definen la forma de comunicarse el Samba con el LDAP. #pico /etc/smbldap-tools/smbldap_bind.conf El archivo debe llevar el siguiente contenido. slaveDN="cn=admin,dc=grupo9,dc=com" slavePw="sena2008" masterDN="cn=admin,dc=grupo9,dc=com" masterPw="sena2008" Ahora procedemos crear el archivo smbldap.conf. El contenido de éste debe llevar los siguiente (En la linea SID debemos poner nuestro SID, el cual generamos anteriormente). SID=" S-9-5-21-3159899829-923882392-54889933" sambaDomain="GRUPO9" ldapTLS="0" suffix="dc=grupo9,dc=com" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=GRUPO9,${suffix}" scope="sub" hash_encrypt="SSHA" userLoginShell="/bin/bash" userHome="/home/%U" userHomeDirectoryMode="700" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" defaultMaxPasswordAge="45" userSmbHome="\\PDC-SRV-GRUPO9\%U" userProfile="\\PDC-SRV-GRUPO9\profiles\%U" userHomeDrive="H:" userScript="logon.bat" mailDomain="grupo9.com" smbpasswd="/usr/bin/smbpasswd"

29

Proyecto Plataforma de Correos.

Procedemos a poblar la base de datos LDAP y a crear la cuenta de Administrator en el dominio Administrator. Al final no pedirá la contraseña del Administrator, la cual será “sena2008”. #smbldap-populate -m 512 -a Administrator Se procede a cambiar el número UID de la cuenta, de lo contrario el Administrator no podrá utilizar el servidor de correos con ésta cuenta, además se debe al grupo “Domain Users”. #smbldap-usermod -u 3000 -G "Domain Users" Administrator Editar el archivo nsswitch.conf, para luego poder visualizar los usuarios y grupos del LDAP. #pico /etc/nsswitch.conf El archivo debe tener el siguiente contenido. # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis Para comprobar si está en buen funcionamiento, digitamos el siguiente comando.

30

Proyecto Plataforma de Correos. #getent group Debemos serciorarnos de que al final aparesca algo como esto, lo cual indica que está visualizando la base de datos LDAP. Domain Admins:*:512: Domain Users:*:513:Administrator,mauro,fefe,jona Domain Guests:*:514: Domain Computers:*:515: Administrators:*:544: Account Operators:*:548: Print Operators:*:550: Backup Operators:*:551: Replicators:*:552: Ahora debemos crear unos directorios que Samba necesita para alojar sus archivos. Dichos directorios fueron los bloques que están descritos en el archivo smb.conf. #mkdir -p /home/samba/shares/public/ #mkdir /home/samba/netlogon/ #mkdir /home/samba/profiles/ #mkdir /home/samba/partage/ #mkdir /home/samba/archives/ Algunas veces, al reiniciar más adelante la MMC presenta errores, por esto debemos crear un directorio adicional “archives” en “/home/”. #mkdir /home/archives A los directorios creados en el paso anterior, debemos de darle los permisos específicos, para que Samba pueda tener derechos sobre dichos directorios. #chown -R :"Domain Users" /home/samba/ #chmod 777 /var/spool/samba/ /home/samba/shares/public/ #chmod 755 /home/samba/netlogon/ #chmod 770 /home/samba/profiles/ /home/samba/partage/ #chmod 700 /home/samba/archives/ 31

Proyecto Plataforma de Correos.

Configuración del PAM LDAP. Ahora, debemos agregar el módulo del LDPA al PAM. Los del PAM son los que permiten agregar módulos de aplicaciones, los cuales en este caso, serán utilizados para la autenticación contra el LDAP. Específicamente los archivos que se modifican son: common-account, common-auth, common-password, common-session. Editamos el archivo common-account. #pico /etc/pam.d/common-account El archivo debe quedar de la siguiente forma. # # /etc/pam.d/common-account - authorization settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # account required pam_unix.so account sufficient pam_ldap.so Editamos el archivo common-auth. #pico /etc/pam.d/common-auth El archivo debe quedar de la siguiente forma. # # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # 32

Proyecto Plataforma de Correos. auth auth auth sufficient sufficient required pam_unix.so nullok_secure pam_ldap.so use_first_pass pam_deny.so

Editamos el archivo common-password. #pico /etc/pam.d/common-password El archivo debe quedar de la siguiente forma. # # /etc/pam.d/common-password - password-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services to be #used to change user passwords. The default is pam_unix # The "nullok" option allows users to change an empty password, else # empty passwords are treated as locked accounts. # # (Add `md5' after the module name to enable MD5 passwords) # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. Also the "min" and "max" options enforce the length of the # new password. password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so use_first_pass use_authtok password required pam_deny.so # Alternate strength checking for password. Note that this # requires the libpam-cracklib package to be installed. # You will need to comment out the password line above and # uncomment the next two in order to use this. # (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH') # # password required pam_cracklib.so retry=3 minlen=6 difok=3 # password required pam_unix.so use_authtok nullok md5 Editamos el archivo common-session. #pico /etc/pam.d/common-session El archivo debe quedar de la siguiente forma. #

33

Proyecto Plataforma de Correos. # /etc/pam.d/common-session - session-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define tasks to be performed # at the start and end of sessions of *any* kind (both interactive and # non-interactive). The default is pam_unix. # session required pam_unix.so session optional pam_ldap.so Para que estos cambios realizados, debemos reiniciar nuestro sistema. #reboot Luego de haber iniciado el sistema, debemos dar el derecho al grupo “Domain Admins” de agregar máquinas al dominio. #net -U Administrator rpc rights grant 'DOMAIN\Domain Admins' SeMachineAccountPrivilege Configuración DNS (BIND9) Procedemos a configurar el servicio DNS. #cp /usr/share/doc/python-mmc-base/contrib/bind/named.conf /etc/bind/ Ahora debemos especificarle al sistema que en la secuencia de inicio “rc.d” inicie primero el Sldap y luego el BIND. #update-rc.d -f slapd remove && update-rc.d slapd start 14 2 3 4 5 . stop 86 0 1 6 . Debemos especificar en la tarjeta de red que seamos nuestro propio registro DNS. #pico /etc/resolv.conf El archivo debe quedar de la siguiente forma.

34

Proyecto Plataforma de Correos. search grupo9.com nameserver 127.0.0.1 nameserver 192.168.0.19 Configuración DHCP Procedemos a configurara el servicio DHCP. #cp /usr/share/doc/python-mmc-base/contrib/dhcpd/dhcpd.conf /etc/dhcp3/ Editar el archivo dhcpd.conf. #pico /etc/dhcp3/dhcpd.conf El contenido del archivo debe quedar de la siguiente forma. ldap-server "localhost"; ldap-port 389; ldap-username "cn=admin, dc=grupo9, dc=com"; ldap-password "sena2008"; ldap-base-dn "dc=grupo9, dc=com"; ldap-method dynamic; ldap-debug-file "/var/log/dhcp-ldap-startup.log";

SSL Para El Correo Se debe instalar una entidad certificado para obtener los respectivos certificados y llaves para la seguridad de nuestro dos sitios Web: MMC, Squirrelmail. Debemos editar el archivo mail.cnf. #pico /etc/ssl/mail.cnf El archivo debe llevar el siguiente contenido. [ req ]

35

Proyecto Plataforma de Correos. default_bits default_keyfile distinguished_name prompt string_mask x509_extensions [ req_distinguished_name ] countryName stateOrProvinceName localityName organizationName organizationalUnitName commonName emailAddress [ server_cert ] basicConstraints subjectKeyIdentifier keyUsage extendedKeyUsage nsCertType nsComment = 2048 = privkey.pem = req_distinguished_name = no = nombstr = server_cert = DE = Niedersachsen = Lueneburg = Projektfarm GmbH = IT = server1.grupo9.com = postmaster@grupo9.com = critical, CA:FALSE = hash = digitalSignature, keyEncipherment = serverAuth, clientAuth = server = "mailserver"

Ahora, debemos crear el certificado SSL. #openssl req -x509 -new -config /etc/ssl/mail.cnf -out /etc/ssl/certs/mail.pem -keyout /etc/ssl/private/mail.key -days 365 -nodes -batch Especificar los derechos de la llave, de tal forma que solo el root pueda leerlo. #chmod 600 /etc/ssl/private/mail.key Configuración SASL Postfix autenticará los usuarios contra la base de datos LDAP. Procedemos a crear el directorio saslauthd. En éste directorio se almacenará unos archivos, los cuales permiten la autenticación del Postfix contra el LDAP. #mkdir -p /var/spool/postfix/var/run/saslauthd/ Editar el archivo saslauthd, el cual debe quedar de la siguiente forma.

36

Proyecto Plataforma de Correos. START=yes MECHANISMS="ldap" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" Luego, editar el archivo saslauthd.conf con el fin de indicarle a SASL contra quién va a realizar la autenticación. #pico /etc/saslauthd.conf Debe quedar de la siguiente forma. ldap_servers: ldap://127.0.0.1 ldap_search_base: ou=Users,dc=grupo9,dc=com ldap_filter: (&(objectClass=mailAccount)(mail=%u@%r)(mailenable=OK)) Debemos crear el archivo smtpd.conf con el fin de indicarle a Postfix cuál va a hacer el método de autenticación. #pico /etc/postfix/sasl/smtpd.conf El contenido de éste archivo debe llevar lo siguiente. pwcheck_method: saslauthd mech_list: plain login Ahora, para que la autenticación se correcta, debemos crear el ususario postfix y agregarlo al grupo sasl. #pico adduser postfix sasl Debemos reiniciar SASL para que aplique los cambios efectuados. #/etc/init.d/saslauthd restart

37

Proyecto Plataforma de Correos. Configuración Postfix Copiamos los archivo del Postifx para que éste trabaje con lo Usuarios y Dominios virtuales. #pico cp /usr/share/doc/python-mmc-base/contrib/postfix/with-virtual-domain/* /etc/postfix/ Editamos el archive main.cf para modificar el dominio al que Postfix atenderá, usuarios y dominios virtuales, entre otros. #pico /etc/postfix/main.cf El archivo debe quedar de la siguiente forma. Nota: Recomendamos que copien cada una de las líneas que se representa a continuación, de tal forma que quede como se muestra a continuación. # See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = yes append_at_myorigin = yes # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h myhostname = server1.grupo9.com mydomain = grupo9.com alias_maps = ldap:/etc/postfix/ldap-aliases.cf, hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.grupo9.com,grupo9.com,localhost.localdomain,localhost mail_destination_recipient_limit = 1 mailbox_command = /usr/lib/dovecot/deliver -d "$USER"@"$DOMAIN" relayhost = mynetworks = 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = +

38

Proyecto Plataforma de Correos. inet_interfaces = all ####### Las siguientes líneas las debemos de agregar manualmente ####### # Virtual Domains Control virtual_mailbox_domains = ldap:/etc/postfix/ldap-domains.cf virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf, ldap:/etc/postfix/ldap-maildrop.cf virtual_mailbox_base = / virtual_alias_domains = virtual_minimum_uid = 100 virtual_uid_maps = ldap:/etc/postfix/ldap-uid.cf virtual_gid_maps = ldap:/etc/postfix/ldap-gid.cf # Use Maildir home_mailbox = Maildir/ # Wait until the RCPT TO command before evaluating restrictions smtpd_delay_reject = yes # Basics Restrictions smtpd_helo_required = yes strict_rfc821_envelopes = yes # Requirements for the connecting server smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.njabl.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client list.dsbl.org, permit # Requirements for the HELO statement smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_invalid_hostname, permit # Requirements for the sender address smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain,

39

Proyecto Plataforma de Correos. permit # Requirement for the recipient address smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, permit # Enable SASL authentication for the smtpd daemon smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth # Fix for outlook broken_sasl_auth_clients = yes # Reject anonymous connections smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = # SSL/TLS smtpd_tls_security_level = may smtpd_tls_loglevel = 1 smtpd_tls_cert_file = /etc/ssl/certs/mail.pem smtpd_tls_key_file = /etc/ssl/private/mail.key smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache # Amavis content_filter = amavis:[localhost]:10024 receive_override_options = no_address_mappings Editar el archivo ldap.aliases.cf con el fin de definir los álias del LDAP en el Postfix. #pico /etc/postfix/ldap-aliases.cf Se debe editar simplemente el dominio con que se está trabajando. server_host = 127.0.0.1 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mailalias=%s)(mailenable=OK)) result_attribute = maildrop version = 3

40

Proyecto Plataforma de Correos.

Debemos editar el archivo master.cf en donde se definen qué protocolos y con qué servicio adicionales trabajará postfix. #pico /etc/postfix/master.cf Al final del archivo, agregar las siguientes líneas de configuración. # SMTPS smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # Dovecot dovecot unix - n n - - pipe flags=DRhu user=dovecot:mail argv=/usr/lib/dovecot/deliver -d $recipient # Mail to Amavis amavis unix - - - - 10 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 # Mail from Amavis 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

41

Proyecto Plataforma de Correos. Debemos de configurar los archivos ldap-accounts, ldap-aliases, ldap-domains, ldap-gid, ldap-maildrop, ldap-transport, ldap-uid con el fin de habilitar el uso de los usuarios y dominios virtuales. #pico /etc/postfix/ ldap-accounts server_host = 127.0.0.1 server_port = 389 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mailenable=OK)(mail=%s)) result_attribute = mailbox version = 3 expansion_limit = 1 #pico /etc/postfix/ ldap-aliases server_host = 127.0.0.1 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mailalias=%s)(mailenable=OK)) result_attribute = mail version = 3 #pico /etc/postfix/ ldap-domains server_host = 127.0.0.1 server_port = 389 search_base = ou=mailDomains,dc=mandriva,dc=com query_filter = (&(objectClass=mailDomain)(virtualdomain=%s)) result_attribute = virtualdomain version = 3 #pico /etc/postfix/ ldap-gid server_host = 127.0.0.1 server_port = 389 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mail=%s)(mailenable=OK)) result_attribute = gidNumber version = 3 expansion_limit = 1 #pico /etc/postfix/ ldap-maildrop server_host = 127.0.0.1 server_port = 389 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mailenable=OK)(mail=%s)) result_attribute = maildrop version = 3 42

Proyecto Plataforma de Correos.

#pico /etc/postfix/ ldap-transport server_host = 127.0.0.1 server_port = 389 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mailenable=OK)(mail=%s)) result_attribute = mailhost result_format = smtp:[%s] version = 3 #pico /etc/postfix/ ldap-uid server_host = 127.0.0.1 server_port = 389 search_base = ou=Users,dc=grupo9,dc=com query_filter = (&(objectClass=mailAccount)(mail=%s)(mailenable=OK)) result_attribute = uidNumber version = 3 expansion_limit = 1 Debemos reiniciar el Postfix para que se apliquen los cambios efectuados. #/etc/init.d/postfix restart Configuración de Dovecot Debemos borrar todo el contenido del archivo dovecot.conf ya que éste no nos sirve para lo que queremos realizar. #echo "" > /etc/dovecot/dovecot.conf Procedemos a editar dicho archivo, que debería estar completamente en blanco. #pico /etc/dovecot/dovecot.conf El archivo debe quedar de ésta forma, en donde se debe especificar el dominio, entre otras cosas. protocols = imap imaps pop3 pop3s 43

Proyecto Plataforma de Correos. listen = 0.0.0.0 login_greeting = grupo9.com mailserver ready. mail_location = maildir:~/Maildir disable_plaintext_auth = no ssl_cert_file = /etc/ssl/certs/mail.pem ssl_key_file = /etc/ssl/private/mail.key log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot.log # IMAP configuration protocol imap { mail_plugins = quota imap_quota } # POP3 configuration protocol pop3 { pop3_uidl_format = %08Xu%08Xv mail_plugins = quota } # LDA configuration protocol lda { postmaster_address = postmaster auth_socket_path = /var/run/dovecot/auth-master mail_plugins = quota } # LDAP authentication auth default { mechanisms = plain login passdb ldap { args = /etc/dovecot/dovecot-ldap.conf } userdb ldap { args = /etc/dovecot/dovecot-ldap.conf } socket listen { master { path = /var/run/dovecot/auth-master mode = 0660 user = dovecot group = mail } client { path = /var/spool/postfix/private/auth

44

Proyecto Plataforma de Correos. mode = 0660 user = postfix group = postfix } } } Dejamos en blanco el archivo dovecot-ldap.conf. #echo "" > /etc/dovecot/dovecot-ldap.conf Procedemos a editarlo. #pico /etc/dovecot/dovecot-ldap.conf Debemos agregar las siguientes líneas, en donde se debe especificar el dominio, entre otras cosas. hosts = 127.0.0.1 auth_bind = yes ldap_version = 3 base = dc=grupo9,dc=com scope = subtree user_attrs = homeDirectory=home,uidNumber=uid,mailbox=mail,mailuserquota=quota=maildir:stor age user_filter = (&(objectClass=mailAccount)(mail=%u)(mailenable=OK)) pass_attrs = mail=user,userPassword=password pass_filter = (&(objectClass=mailAccount)(mail=%u)(mailenable=OK)) default_pass_scheme = CRYPT user_global_gid = mail Ahora debemos ajustar los derechos para poder autorizar a Dovecot, con el fin de que éste pueda utilizar los derechos UID y GID cuando se almacena el mensaje en el Mialdir de cada usuario. # dpkg-statoverride --update --add root dovecot 4755 /usr/lib/dovecot/deliver Reiniciamos el servicio Dovecot. # /etc/init.d/dovecot restart

45

Proyecto Plataforma de Correos. Configuración de Amavis. Se configurará con el fin de que el Postfix pase los correos a Amavis. Éste, de igual forma lo pasará a Sapamassassin y a CalmAV para que realicen el respectivo escaneo contra spam y contra antivirus. Luego haber aprobado el mensaje Amavis debe reinyectar el mensaje a Postfix.

46

Sign up to vote on this title
UsefulNot useful