Вы находитесь на странице: 1из 47

Instalando un server de correo en Debian Lenny 5.

0 con:
Apache2 php5 Openldap Postfix Cyrus-imap Sieve TLS LMTP Amavisd-new SpamAssassin Clamv Mailman Squirrelmail Avelsieve Saslauthd bind9

(Avelsieve(39) (SIEVE Mail Filters Plugin for SquirrelMail) es un plugin para SquirrelMail(40) que permite crear scripts hechos con Sieve en un servidor Cyrus IMAP que tenga habilitado el soporte para dicho lenguaje (Tim's SIEVE daemon). Avelsieve es parte de Cyrusmaster(41), una herramienta de administracin de Cyrus basada en Web. Debera proporcionar una interfaz similar a la de los filtros de usuario a los administradores y personal de soporte tcnico. ) En esta gua no vamos a explicar como instalar un sistema debian, supondr que ya tenemos instalado debian Lenny 5.0 en nuestro servidor, usando para ello el CD1 de la instalacin y hecho una instalacin mnima. Bueno comencemos entonces. Primeramente vamos a verificar algunas cosas en nuestro sistema debian que acabamos de instalar. Comenzamos verificando los ficheros: /etc/hosts /etc/mailname /etc/hostname /etc/resolv.conf /etc/network/interfaces /etc/apt/sources.list

Ah! como informacin adicional vamos utilizar los siguientes datos: Nombre del servidor: delta Dominio: pri.org.cu Direccin IP: 192.168.0.2 Mscara de Red: 255.255.255.0 Direccin de RED: 192.168.0.0 Broadcast: 192.168.0.255 Gateway: 192.168.0.1 Servidor DNS: 192.168.0.2

Verifiquemos que en el fichero /etc/hosts aparezcan estas lneas: # nano /etc/hosts 127.0.0.1 192.168.0.2 localhost,localdomain delta.pri.org.cu localhost delta

Verificamos el fichero /etc/mailname # nano /etc/mailname pri.org.cu Verificamos el fichero /etc/hostname # nano /etc/hostname delta.pri.org.cu Verificamos el /etc/resolv.conf # nano /etc/resolv.conf search pri.org.cu nameserver 192.168.0.2 Nota: En este momento tendremos que usar como servidor DNS el de nuestro ISP o proveedor de servicios, ya que el DNS de nuestra red aun no se ha instalado. Esto es solo necesario si vamos a usar un repositorio en Internet para instalar nuestro equipo, si contamos con dicho repositorio localmente en una particin del disco duro de esta misma PC que estamos instalando, pues entonces no necesitaremos in DNS de momento. Ahora verificamos el fichero /etc/network/interfaces # nano /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.0.2 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.0.2 dns-search pri.org.cu

Por ultimo verificamos el /etc/apt/sources.list donde debemos especificar el mirror de debian que usaremos para instalar todo el software que utilizaremos. # nano /etc/apt/sources.list deb http://ftp.debian.org/debian lenny main contrib non-free deb http://security.debian.org/ lenny/updates main contrib non-free Esto es en caso que vayamos a utilizar un repositorio de internet, por lo que tenemos que tener especificado en el fichero /etc/resolv.conf un DNS que sea capaz de resolvernos los nombres de mquinas: ftp.debian.org y security.debian.org ya que de lo contrario no podremos acceder a dichero repositorio, tambin como es lgico tendremos que tener un servidor Proxy en nuestra red que nos de acceso a Internet para poder usar dicho repositorio en caso que estemos usando direcciones ip privadas dentro de una red local que no esta directamente conectada a Internet. Si tenemos direcciones ip pblicas, pues todo es una felicidad :) pues no necesitaremos de un Proxy para acceder a Internet. Si se usa un Proxy para salir a Internet puedes debemos crear el fichero /etc/apt/apt.conf lo creamos con el comando: # touch /etc/apt/apt.conf Lo editamos y le escribimos en el interior lo siguiente: Acquire::http::Proxy http://usuario:contrasea@proxy.tudominio.cu:3128; La configuracin del sources.list puede variar en dependencia de la localizacin o ubicacin del repositorio de debian que vayamos a utilizar para nuestra instalacin y del protocolo que se haya utilizado para hacerlo accesible a toda la RED, estos son 2 ejemplos: # nano /etc/apt/sources.list deb http://debian.tudominio.cu/debian lenny main contrib non-free deb http://debian.tudominio.cu/debian-security lenny/updates main contrib non-free Nota: En este caso se supone que se dispone en la red local ya de un repositorio accesible va http y empleando el nombre o recurso de RED: debian.tudominio.cu en caso de estar por ftp las 2 lneas quedaran as: deb ftp://debian.tudominio.cu/debian lenny main contrib non-free deb ftp://debian.tudominio.cu/debian-security lenny/updates main contrib-non-free Si el repositorio lo tenemos en un disco externo USB y lo vamos a usar desde ah para la instalacin entonces debemos montar dicho disco, suponiendo que nuestro Server tiene un disco SCSI debian ve dicho dispositivo como /dev/sda por lo que el disco usb donde tenemos el repo de debian sera /dev/sdb procedemos a montarlo por ejemplo en el directorio /mnt vamos asumir que el disco externo tiene una sola particin en ext3 # mount t ext3 /dev/sdb1 /mnt Asumimos tambin que el repositorio esta en la raz del disco, es decir que no este metido dentro de ningn directorio, entonces el sources.list quedara as:

# nano /etc/apt/sources.list

deb file:///mnt/debian lenny main contrib non-free deb file:///mnt/debian-security lenny/updates main contrib non-free Bueno despus de todas estas explicaciones sobre el sources.list finalmente. Salvamos con CTROL+O y salimos con CTROL+X Actualizamos los ndices. # aptitude update Y hacemos un upgrade al Server. # aptitude dist-upgrade Instalamos ssh y Midnight Commander # aptitude install mc ssh Instalamos rcconf # aptitude install rcconf exim4 es el servidor de correo que viene por defecto con debian, al igual que en freebsd, por lo tanto podemos detener el servicio para que no este en ejecucin si no lo vamos a usar. Ejecutamos desde la consola como root el comando: # rcconf Buscamos en la lista de servicios exim4 y lo desmarcamos, damos aceptar y luego detenemos el servicio: # invoke-rc.d exim4 stop Desintalamos exim4 # update-rc.d -f exim4 remove # aptitude remove --purge exim4 exim4-base exim4-config exim4-daemon-light Al desinstalar exim4 debian nos pedir que le indiquemos el MTA que sustituir al exim4, no se porque tiene que tener uno obligatoriamente instalado, pero bueno nos va preguntando por los disponibles y escojo postfix que es el que voy a utilizar finalmente y si nos pregunta algo al momento de instalar postfix, escogemos la opcin: Sin configuracin. Instalamos compilador de C++ # aptitude install make db4.6-util libdb4.6-dev # aptitude install build-essential Cambiando idioma a espaol. # dpkg-reconfigure locales

Cuando debconf nos pregunte que locales queremos generar marcamos ALL LOCALE. Despus nos pregunta cual queremos por defecto para nuestro sistema seleccionamos es_ES.UTF8. Esperamos que se terminen de generar los locales. Cuando termine Salimos del sistema y volvemos a entrar. Ya nuestro sistema esta en idioma espaol. Instalamos otros paquetes: # aptitude install iptraf nmap unzip unrar zip Instalamos el servidor ldap SLAPD # aptitude install slapd ldap-utils Al ejecutar este domando nos pedir la contrasea del administrador de ldap, luego corremos este comando: # dpkg-reconfigure slapd Aqu debemos contestar una serie de preguntas como: 1- Omitir la configuracin de OpenLDAP: 2- Nombre de dominio: 3- Nombre de organizacin: 4- Contrasea del admin: 5- Confirme la contrasea del admin: 6- Motor de base de datos a utilizar: 7- Borrar la base de datos al purgar slapd: 8- Mover la base de datos antigua: 9- Permitir LDAP v2: No pri.org.cu pri.org.cu passoword password BDB No Si Si

Ahora, para probar que el servicio de slapd est arriba y funcionando utilizamos el comando: # ldapsearch -x -b "dc=pri,dc=org,dc=cu" # extended LDIF # # LDAPv3 # base <dc=pri,dc=org,dc=cu> with scope subtree # filter: (objectclass=*) # requesting: ALL # # pri.org.cu dn: dc=pri,dc=org,dc=cu objectClass: top objectClass: dcObject objectClass: organization o: pri.org.cu dc: pri # admin, pri.org.cu dn: cn=admin,dc=pri,dc=org,dc=cu

objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 Instalamos apache2 # aptitude install apache2 apache2-doc Instalamos mysql # aptitude install mysql-server-5.0 mysql-client-5.0 libmysqlclient15-dev Instalamos php5, dependencias de gosa y mdulos de php5 para ldap y mysql # aptitude install php5 libapache2-mod-php5 php5-gd php5-cli php5-imap php5-ldap php5-mhash \ php5-mysql php5-imagick imagemagick graphicsmagick-imagemagick-compat php5-recode \ wwwconfig-common smarty-gettext libcrypt-smbhash-perl php-pear php-db php5-snmp fping smarty Nota: El caracter \ al final indica que las 3 lneas son una sola, es decir todo es una misma lnea. Instalamos phpldapadmin # aptitude install phpldapadmin Para acceder a la Web de phpldapadmin, usamos alguna de las URL siguientes: http://192.168.0.2/phpldapadmin Para acceder en la web usamos: login: cn=admin,dc=pri,dc=org,dc=cu Clave: ****** Instalamos gosa # aptitude install gosa gosa-schema Una vez instalado gosa, podemos acceder a su interfaz Web para su configuracin por: http://delta.pri.org.cu/gosa Pero antes de continuar, debemos asegurarnos que en el fichero de configuracin de ldap tenemos especificados todos estos esquemas y en este mismo orden, por lo tanto, vamos a editar dicho fichero:

# nano /etc/ldap/slapd.conf # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/samba3.schema include /etc/ldap/schema/gosystem.schema include /etc/ldap/schema/gofon.schema include /etc/ldap/schema/goto.schema include /etc/ldap/schema/gofax.schema include /etc/ldap/schema/goserver.schema include /etc/ldap/schema/gosa+samba3.schema include /etc/ldap/schema/goto-mime.schema include /etc/ldap/schema/samba.schema include /etc/ldap/schema/pureftpd.schema include /etc/ldap/schema/nagios.schema include /etc/ldap/schema/trust.schema include /etc/ldap/schema/rfc2739.schema include /etc/ldap/schema/kolab2.schema include /etc/ldap/schema/phpgwaccount.schema include /etc/ldap/schema/dhcp.schema include /etc/ldap/schema/dnszone.schema include /etc/ldap/schema/dns.schema Aclaro que para incluir todos estos esquemas a nuestro servidor ldap, deben existir dichos esquemas en el directorio /etc/ldap/schema por lo que debemos buscarlos, copiarlos para este directorio y asegurarnos que queden con los mismos permisos que tienen los esquemas que ya aparecen ah ok! Para asegurarnos que los esquemas queden con los permisos correctos usamos estos 2 comandos: # cd /etc/ldap/schema # find . -type d -exec chown root.openldap {} \; # find . -type f -exec chown root.openldap {} \; # find . -type d -exec chmod 750 {} \; # find . -type f -exec chmod 640 {} \; Agregamos tambin al fichero slapd.conf estas lneas: # nano /etc/ldap/slapd.conf # Habilitar el chequeo de esquemas. # schemacheck on loglevel -1

# Indexing options for database #1 index default

sub

index index index index index index

uid,mail eq gosaMailAlternateAddress,gosaMailForwardingAddress eq cn,sn,givenName,ou pres,eq,sub objectClass pres,eq uidNumber,gidNumber,memberuid eq gosaSubtreeACL,gosaObject,gosaUser pres,eq

# Indexing for Samba 3 index sambaSID index sambaPrimaryGroupSID index sambaDomainName # Indexing for DHCP index dhcpHWAddress index dhcpClassData # Indexing for DNS index zoneName index relativeDomainName Salvamos el ficheros y salimos. Reiniciamos ldap # /etc/init.d/slapd restart

eq eq eq

eq eq

eq eq

Luego vamos a la web de gosa y procedemos a su configuracin. Como nos indica en el 1er paso, debemos crear este fichero: # echo -n 4ab0c6aa1b931d18808487151dcc824e > /tmp/gosa.auth Nota: No copie este comando del tutorial, tmelo de la Web de gosa ya que la numeracin no es siempre la misma. Luego pulsamos el botn siguiente. La prxima pgina debemos escoger el idioma, seleccionamos espaol y seguimos. En el prximo paso, gosa comprobar algunos paquetes y parmetros necesarios para trabajar, en el caso de Debian Etch haba que modificar algunos valores en el php.ini pero en Debian Lenny esto no es necesario, as que nos saltamos este paso. Reiniciamos Apache: # invoke-rc.d apache2 restart Le damos actualizar a la Web de gosa y ya no debe darnos el error. Damos siguiente y viene la licencia la cual debemos aceptar desde luego para poder continuar. El prximo paso es la conectividad a LDAP:

Conexin LDAP Nombre de la localizacin: Conectar a la URL: Conexin TLS: Base: MailServer ldap://localhost:389 No dc=pri,dc=org,dc=cu

DN del administrador: cn=admin,dc=pri,dc=org,dc=cu Contrasea de administrador: ***** La opcin que dice: Aadir automticamente la base LDAP al DN administrador la dejamos sin marcar. Usar grupos conformes a rfc2307bis: No Pulsamos siguiente. En la otra pgina nos aparecer: Parmetros especficos del esquema Activar validacin de esquema cuando se registre: Si Pulsamos continuar. En el prximo paso, solo cambio estas opciones, (las dems las dejo como estn) Atributo 'dn' de los usuarios: uid Algoritmo de codificacin de contrasea: md5 Damos siguiente y en el prximo paso, solo cambio estas opciones: Zona horaria: America/Havana (DST) Mtodo de correo: cyrus (uid) Usa estilo Cyrus UNIX: Si Pulsamos Siguiente. En la prxima pgina lo dejo todo como esta. Pulsamos Siguiente. En esta pgina debemos crear el usuario administrador para gosa, el cual lo llamaremos admin, igual que el administrador de ldap, pero uno no tiene nada que ver con el otro, incluso pueden tener claves distintas si queremos y si quieres puedes escoger otro nombre de usuario para el administrador de gosa OK! Pulsamos el botn: Crear que aparece en la opcin: Comprobando sper administrador: Especificamos el nombre de usuario y una clave, en mi caso:

Nombre: Identificador (ID) de usuario: Contrasea: Contrasea (de nuevo): Y pulsamos el botn aplicar.

System administrator admin ***** *****

Ahora ya podemos seguir adelante. Pulsamos continuar. En la siguiente pgina: Avisos y sugerencias son cosas opcionales, de modo que no har nada de eso, desmarco todas las opciones seleccionadas con palomas y marco No donde me permita escoger y voy a la siguiente pgina. Pulso continuar. La siguiente pgina ya es el paso final, aqu debemos descargar el fichero de configuracin de gosa que se va a generar con todas las opciones que hemos ido seleccionando paso a paso, para ello pulsamos el botn: Descargar configuracin. Bien, una vez descargado el fichero gosa.conf debemos copiarlo para nuestro servidor para: /etc/gosa luego para asegurarnos que quede con los permisos correctos corremos los siguientes comandos: # chown root.www-data /etc/gosa/gosa.conf # chmod 640 /etc/gosa/gosa.conf Una vez hecho esto ya podemos finalizar pulsamos por ltima vez el botn: Continuar y ya est lista la interfaz Web de gosa que ser lo que usaremos para gestionar las cuentas de usuarios de nuestro servidor de correo. Bueno antes de ponernos a crear un VirtualHost independiente para gosa y dotarlo de soporte SSL para mayor seguridad, vamos a instalar y configurar un servidor DNS en este Server para el dominio: pri.org.cu Instalamos bind9 # aptitude install bind9 bind9-doc bind9-host dnsutils Ahora editamos el fichero /etc/bind/named.conf.local # nano /etc/bind/named.conf.local //Zona pri.org.cu zone "pri.org.cu" { type master; file "/var/cache/bind/pri.org.cu"; }; //Zona inversa para la RED 192.168.0.0/24 zone "0.168.192.in-addr.arpa" { type master;

file "/var/cache/bind/0.168.192.in-addr.arpa"; }; Salvamos y salimos. Creamos los ficheros de las zonas (directa e inversa) y le ponemos los permisos. # touch /var/cache/bind/pri.org.cu # touch /var/cache/bind/0.168.192.in-addr.arpa # chown bind.root /var/cache/bind/pri.org.cu # chown bind.root /var/cache/bind/0.168.192.in-addr.arpa # chmod 640 /var/cache/bind/pri.org.cu # chmod 640 /var/cache/bind/0.168.192.in-addr.arpa Editamos el fichero de la zona directa: # nano /var/cache/bind/pri.org.cu $ORIGIN pri.org.cu. $TTL 86400 @ 21600 IN SOA delta.pri.org.cu. root.pri.org.cu. ( 2009030801 3600 3600 3600000 86400 ) 21600 IN NS delta.pri.org.cu. delta 21600 IN A 21600 21600 21600 21600 21600 IN IN IN IN IN 192.168.0.2 CNAME CNAME CNAME CNAME CNAME delta delta delta delta delta

gosa-admin correo listas ldap-admin php-admin

Salvamos y salimos. Editamos el fichero de la zona inversa. # nano /var/cache/bind/222.168.192.in-addr.arpa $ttl 86400 @ IN

@ 0

IN IN

SOA delta.pri.org.cu. root.pri.org.cu. ( 2009030801 3600 3600 604800 1200 ) NS delta.pri.org.cu. PTR delta.pri.org.cu.

Ahora debemos editar el fichero /etc/bind/named.conf.options para especificarle a nuestro servidor DNS a que servidor DNS reenviar aquellas consultas DNS que el no sea capaz de resolver.

# nano /etc/bind/named.conf.options Buscamos estas lneas que aparecen comentadas: // forwarders { // 0.0.0.0; // }; y las dejamos as: forwarders { 192.168.24.4; 192.168.24.6; }; Nota: Aqu deben poner los DNS de su ISP. Salvamos y salimos. Reiniciamos el bind9. # invoke-rc.d bind9 restart Miramos en syslog a ver si hay algn error. # tail -f /var/log/syslog Debemos ver algo como esto: Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar Mar 8 19:28:45 delta named[7660]: shutting down: flushing changes 8 19:28:45 delta named[7660]: stopping command channel on 127.0.0.1#953 8 19:28:45 delta named[7660]: stopping command channel on ::1#953 8 19:28:45 delta named[7660]: no longer listening on ::#53 8 19:28:45 delta named[7660]: no longer listening on 127.0.0.1#53 8 19:28:45 delta named[7660]: no longer listening on 192.168.0.2#53 8 19:28:45 delta named[7660]: exiting 8 19:28:47 delta named[7750]: starting BIND 9.3.4-P1.1 -u bind 8 19:28:47 delta named[7750]: found 1 CPU, using 1 worker thread 8 19:28:47 delta named[7750]: loading configuration from '/etc/bind/named.conf' 8 19:28:47 delta named[7750]: listening on IPv6 interfaces, port 53 8 19:28:47 delta named[7750]: listening on IPv4 interface lo, 127.0.0.1#53 8 19:28:47 delta named[7750]: listening on IPv4 interface eth0, 192.168.0.2#53 8 19:28:47 delta named[7750]: command channel listening on 127.0.0.1#953 8 19:28:47 delta named[7750]: command channel listening on ::1#953 8 19:28:47 delta named[7750]: zone 0.in-addr.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone 127.in-addr.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone 0.168.192.in-addr.arpa/IN: loaded serial 2009030801 8 19:28:47 delta named[7750]: zone 255.in-addr.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone pri.org.cu/IN: loaded serial 2009030801 8 19:28:47 delta named[7750]: zone localhost/IN: loaded serial 1 8 19:28:47 delta named[7750]: running

Ahora vamos a comprobar si nuestro DNS funciona, para eso lo primero es llegarnos al fichero /etc/resolv.conf

# nano /etc/resolv.conf Cambiamos el servidor DNS que aparece ah y especificamos la ip de nuestro propio server que es donde acabamos de configurar el DNS. Debe quedar as: search pri.org.cu nameserver 192.168.0.2 Salvamos y salimos. Ahora usaremos la herramienta nslookup para consultar nuestro dns. Desde la consola y como root ejecutamos el comando: # nslookup listas.pri.org.cu Y si todo ha salido bien debemos obtener: delta:/home# nslookup listas.pri.org.cu Server: 192.168.0.2 Address: 192.168.0.2#53 listas.pri.org.cu canonical name = delta.pri.org.cu. Name: delta.pri.org.cu Address: 192.168.0.2 Podemos tambin hacer pruebas con nombres fuera de nuestra RED como por ejemplo: delta:/home# nslookup www.lawebdelprogramador.net Server: 192.168.0.2 Address: 192.168.0.2#53 Non-authoritative answer: www.lawebdelprogramador.net canonical name = lawebdelprogramador.net. Name: lawebdelprogramador.net Address: 213.149.241.33 Como vemos nuestro servidor DNS funciona bien, resolviendo nombre dentro del nuestro dominio como reenviando la consultas que no pertenecen al dominio pri.org.cu Ahora vamos a modificar algunas opciones en apache2 y crear un VirtualHost para la Web de gosa. Editamos el fichero de configuracin: /etc/apache2/apache2.conf # nano /etc/apache2/conf.d/security Buscamos la lnea: ServerTokens Full Y la sustituimos por esta:

ServerTokens Prod Salvamos el fichero y salimos. Editamos el fichero /etc/apache2/conf.d/charset # nano /etc/apache2/conf.d/charset Descomentamos la lnea: #AddDefaultCharset UTF-8 y debemos dejarla de esta manera: AddDefaultCharset ISO-8859-1 Salvamos el fichero y salimos. Ahora editamos el fichero /etc/apache2/apache2.conf Busco las siguientes lneas y las descomento todas y que queden de esta manera: # nano /etc/apache2/apache2.conf Alias /error/ "/usr/share/apache2/error/" <Directory "/usr/share/apache2/error"> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority es cs de en fr it nl sv pt-br ro ForceLanguagePriority Prefer Fallback </Directory> ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var ErrorDocument 410 /error/HTTP_GONE.html.var ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var

ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var Salvamos el fichero y salimos. Ahora agregamos el modulo "include" a la configuracin del servidor Web: # a2enmod include Ahora agregamos el modulo "ssl" a la configuracin del servidor Web: # a2enmod ssl Activamos el modulo rewrite de apache ejecutamos: # a2enmod rewrite Editamos el fichero de configuracin /etc/apache2/ports.conf # nano /etc/apache2/ports.conf Buscamos la linea: NameVirtualHost *:80 Y la cambiamos por: NameVirtualHost 192.168.0.2:80 Salvamos el fichero y salimos. Editamos el fichero # nano /etc/apache2/sites-available/default y cambiamos la lnea: <VirtualHost *:80> por: <VirtualHost 192.168.0.2:80> Reiniciamos Apache2 # invoke-rc.d apache2 restart Ahora vamos al final del VirtualHost por defecto y agregamos un nuevo VirtualHost para gosa.

<VirtualHost 192.168.0.2:80> ServerName gosa-admin.pri.org.cu ServerAdmin admin@pri.org.cu DocumentRoot "/usr/share/gosa/html" <Directory /usr/share/gosa/html/> Options +FollowSymLinks AllowOverride None order allow,deny allow from 192.168.0.0/24 <IfModule mod_php4.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag short_open_tag On php_flag register_globals Off php_flag register_argc_argv On php_flag track_vars On # Estas opciones son necesarias para algunas locales php_value mbstring.func_overload 0 php_value include_path . DirectoryIndex index.php </IfModule> </Directory> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] # Reescribimos todas las peticiones a este sitio a una conexin segura es decir usando SSl RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{HTTP_HOST} gosa-admin.pri.org.cu RewriteRule (.*) https://gosa-admin.pri.org.cu$1 [R=301,L] ErrorLog /var/log/apache2/gosa-admin-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/gosa-admin-access.log combined ServerSignature On </VirtualHost>

Hemos agregado un VirtualHost para gosa, pero ahora debemos aadir otro con soporte SSL, dejamos un espacio y ponemos a continuacin el otro VirtualHost.

# VirtualHost con soporte SSL <VirtualHost 192.168.0.2:443> ServerName gosa-admin.pri.org.cu ServerAdmin admin@pri.org.cu DocumentRoot "/usr/share/gosa/html/" <Directory /usr/share/gosa/html> Options +FollowSymLinks AllowOverride None order allow,deny allow from 192.168.0.0/16 <IfModule mod_php4.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag short_open_tag On php_flag register_globals Off php_flag register_argc_argv On php_flag track_vars On # Estas opciones son necesarias para algunas locales php_value mbstring.func_overload 0 php_value include_path . DirectoryIndex index.php </IfModule> </Directory> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] SSLEngine on SSLCertificateFile /etc/apache2/ssl/gosa-admin.pem ErrorLog /var/log/apache2/gosa-admin-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/gosa-admin-access.log combined ServerSignature On </VirtualHost> Salvamos y salimos. Ahora vamos a crear el certificado para dicho sitio: # mkdir /etc/apache2/ssl Generamos el certificado y le ponemos los permisos. # openssl req -newkey rsa:1024 -x509 -nodes -out /etc/apache2/ssl/gosa-admin.pem -keyout /etc/apache2/ssl/gosa-admin.pem -days 3650 # chown root:www-data /etc/apache2/ssl/gosa-admin.pem

# chmod 640 /etc/apache2/ssl/gosa-admin.pem # rm /etc/apache2/conf.d/gosa.conf Ahora debemos activar SSL en apache. # a2ensite default-ssl Reiniciamos apache2 # /etc/init.d/apache2 restart Y ya podemos acceder a la Web de gosa mediante la URL: http://gosa-admin.pri.org.cu Debe redireccionar automticamente dicha peticin http hacia https. Ahora vamos a instalar saslauthd # aptitude install sasl2-bin libsasl2-modules-ldap Agregamos el sockect de saslauthd dentro del chroot de postfix adems cambiamos el mecanismo de autenticacin. # nano /etc/default/saslauthd Cambiamos: START=no por START=yes Cambiamos: MECHANISMS="pam" por MECHANISMS="ldap" Comentamos: OPTIONS="-c" Agregamos: OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r" Salvamos el fichero.

Accedemos a la web de phpldapadmin y creamos una unidad organizacional llamada (servicios) donde crearemos un usuario con el cual autenticara saslauthd en el ldap. ou=servicios,dc=pri,dc=org,dc=cu Dentro de esta unidad organizacional creamos un usuario llamado: saslauthd Como un Simple Security Object. Le ponemos una clave al usuario saslauthd y escogemos md5 como formato para la clave. Adems debemos darle permisos de lectura al usuario (userPassword,shadowLastChange) en el fichero de configuracin de ldap. saslauthd a los atributos

Editamos: /etc/ldap/slapd.conf buscamos la seccin dentro de las acl las cuales restrigen el acceso a los atributos (userPassword,shadowLastChange). # nano /etc/ldap/slapd.conf Buscamos estas lneas: access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=pri,dc=org,dc=cu" write by anonymous auth by self write by * none Y agregamos una nueva lnea: access to attrs=userPassword,shadowLastChange by dn="cn=admin,,dc=pri,dc=org,dc=cu" write by dn="uid=saslauthd,ou=servicios,dc=pri,dc=org,dc=cu" read by anonymous auth by self write by * none Salvamos y reiniciamos ldap. # invoke-rc.d slapd restart Creamos el Fichero /etc/saslauthd.conf y le agregamos las siguientes lneas: # touch /etc/saslauthd.conf # nano /etc/saslauthd.conf Le agregamos: ldap_servers: ldap://localhost/ ldap_bind_dn: uid=saslauthd,ou=servicios,dc=pri,dc=org,dc=cu ldap_bind_pw: clave del user saslauthd ldap_version: 3 ldap_timeout: 5 ldap_time_limit: 5 #ldap_deref: <none> <search|find|always|never>

#ldap_referrals: <no> #ldap_restart: <yes> ldap_cache_ttl: 0 ldap_cache_mem: 0 ldap_scope: <base> ldap_search_base: dc=pri,dc=org,dc=cu ldap_filter: (|(uid=%u)(cn=%u)) ldap_debug: 9 #ldap_tls_cacert_file: /etc/saslauthd.pem #ldap_tls_cacert_dir: /etc/saslauthd.pem #ldap_tls_ciphers: HIGH:MEDIUM:SSLv2:RSA #ldap_tls_cert: /etc/saslauthd.pem #ldap_tls_key: <none> Salavos el fichero y salimos. Cambiamos los permisos del fichero /etc/saslauthd.conf a 640 por root y 400 por el usuario sasl. # chmod 640 /etc/saslauthd.conf # chown root:sasl /etc/saslauthd.conf # mkdir -p /var/spool/postfix/var/run/saslauthd Al cambiar de lugar el sock de saslauthd debemos crear este enlace simblico ya que cuando intentemos configurar a cyrus-imap para que autentique contra sasl, cyrus buscara el sock de sasl en el lugar que viene originalmente. No he encontrado como indicarle a cyrus-imap que busque el sock de sasl en otra ruta. # rmdir /var/run/saslauthd # ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd # chown root.sasl /var/spool/postfix/var/run/saslauthd # dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd # dpkg-statoverride --list /var/spool/postfix/var/run/saslauthd root sasl 710 /var/spool/postfix/var/run/saslauthd Reiniciamos saslauthd # invoke-rc.d saslauthd restart Nos creamos un usuario desde Gosa en mi caso lo voy a llamar pepe con password linux para probar saslauthd. Y probamos la autenticacin. Ahora probaremos con este comando sasl si esta autenticando bien contra ldap. # testsaslauthd -u pepe -p linux -f /var/spool/postfix/var/run/saslauthd/mux Si todo fue bien debemos obtener un mensaje como este:

0: OK "Success." Dentro de la unidad organizacional "servicios" creamos un usuario llamado postfix Como un Simple Security Object. Este ser el usuario que usaremos para hacer todas las consultas LDAP desde postfix. Instalando Postfix # aptitude install postfix postfix-ldap postfix-pcre postfix-doc Cuando debconf nos pregunta le decimos (Sin Configuracin) Agregamos el usuario postfix al grupo sasl y al grupo mail # adduser postfix sasl # adduser postfix mail Comenzamos a configurar postfix creamos el fichero de configuracin main.cf en caso de que no exista y le ponemos los permisos adecuados. # touch /etc/postfix/main.cf # chown root:postfix /etc/postfix/main.cf && chmod 644 /etc/postfix/main.cf Ahora lo editamos lo dejamos de esta manera. Si el archivo ya exista y ya contiene lneas en su interior, pues o las comentamos todas o las eliminamos, si lo desea puede hacer un respaldo de dicho fichero antes de eliminar todo su contenido. # nano /etc/postfix/main.cf Agregamos: # Transport Layer Security smtpd_tls_security_level = may smtp_tls_security_level = may smtpd_enforce_tls = no smtp_enforce_tls = yes smtpd_tls_cert_file=/etc/postfix/tls/server.pem smtpd_tls_key_file=/etc/postfix/tls/server.pem smtpd_tls_CAfile = /etc/postfix/tls/server.pem smtpd_tls_loglevel = 3 smtp_tls_loglevel = 3 smtpd_tls_received_header = yes smtp_starttls_timeout = 180s smtpd_starttls_timeout = 180s smtp_tls_session_cache_timeout = 600s smtpd_tls_session_cache_timeout = 600s tls_random_source = dev:/dev/urandom smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache #smtpd_tls_auth_only = yes

smtpd_banner = Ready local_destination_concurrency_limit = 5 default_destination_concurrency_limit = 20 smtpd_error_sleep_time = 0 disable_vrfy_command = yes queue_run_delay = 300s maximal_queue_lifetime = 5d delay_warning_time = 1h bounce_queue_lifetime = 1d smtpd_recipient_limit = 50 smtpd_delay_reject=yes # Cliente SMTP smtp_mx_address_limit = 0 smtp_connect_timeout = 30s smtp_helo_timeout = 60s smtp_rcpt_timeout = 240s smtp_quit_timeout = 240s smtp_rset_timeout = 20s smtp_skip_4xx_greeting = yes smtp_skip_5xx_greeting = yes # Cuantos errores en una transaccin smtp puede cometer un cliente antes de que postfix comience a demorar todas sus respuestas. smtpd_soft_error_limit = 1500 # Cuantos errores en una transaccin smtp puede cometer un cliente antes de ser desconectado. smtpd_hard_error_limit = 2000 #Para Mailman owner_request_special = no # Deshabilitar peticiones DNS para smtp y lmtp disable_dns_lookups = yes # Chequeo de Headers #mime_header_checks=pcre:/etc/postfix/body_checks # Interfaces de red Donde escucharemos inet_interfaces = all # Protocolo ipv6 o ipv4 o ambos inet_protocols = ipv4 myhostname = delta.pri.org.cu mydomain = pri.org.cu myorigin = $mydomain mynetworks_style = host mynetworks = 127.0.0.1 mydestination = 127.0.0.1/32, localhost, $mydomain, $myhostname

proxy_read_maps = proxy:ldap:/etc/postfix/ldap/ldap-local-recipients.cf, proxy:ldap:/etc/postfix/ldap/ldap-login-mismatch.cf, proxy:ldap:/etc/postfix/ldap/ldap-virtual-forward.cf, proxy:ldap:/etc/postfix/ldap/ldap-sender-access.cf proxy:ldap:/etc/postfix/ldap/ldap-recipient-access.cf unknown_local_recipient_reject_code = 550 show_user_unknown_table_name = yes transport_maps = hash:/etc/postfix/transport relayhost = [mx1.org.cu] defer_transport = smtp # Alias Locales alias_database = hash:/etc/aliases alias_maps = $alias_database #alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases recipient_delimiter = + mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp #mailbox_transport = cyrus debug_peer_level = 9 #virtual_alias_maps = proxy:ldap:/etc/postfix/ldap/ldap-virtual-forward.cf # Copia de mensajes por SENDER y RECIPIENT sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps local_recipient_maps = $alias_maps, proxy:ldap:/etc/postfix/ldap/ldap-local-recipients.cf #no permitir mensajes mayores de 2.0MB message_size_limit = 2048000 #SMTP authentication smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes # Restricciones aplicadas a las conexiones de los clientes smtpd_clients_restrictions = permit_mynetworks, permit_sasl_authenticated, reject # Restricciones aplicadas a los comandos EHLO/HELO. smtpd_helo_restrictions = reject_invalid_helo_hostname, # reject_non_fqdn_helo_hostname, # reject_unknown_helo_hostname,

smtpd_helo_required = yes # Comprobacin que el FROM del email coincida con el usuario autenticado a travez de sasl. smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ldap/ldap-login-mismatch.cf # Declaracin de la clase que usaremos para controlar la salida internacional. smtpd_restriction_classes = [IL] [IL] = check_recipient_access regexp:/etc/postfix/pcre_cu_recipient, check_sender_access regexp:/etc/postfix/pcre_cu_sender # Restricciones aplicadas a los comandos MAIL FROM:. smtpd_sender_restrictions = check_sender_access proxy:ldap:/etc/postfix/ldap/ldap-sender-access.cf reject_sender_login_mismatch, reject_non_fqdn_sender # reject_unknown_sender_domain, # Restricciones que se aplican en el contexto del RCPT TO: smtpd_recipient_restrictions = check_recipient_access proxy:ldap:/etc/postfix/ldap/ldap-recipient-access.cf reject_non_fqdn_recipient, # reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, permit_auth_destination, reject # Restricciones en el contexto de los comandos DATA. smtpd_data_restrictions = reject_unauth_pipelining Salvamos el fichero y salimos. Creamos el fichero /etc/postfix/sasl/smtpd.conf # touch /etc/postfix/sasl/smtpd.conf # chown root:postfix /etc/postfix/sasl/smtpd.conf # chmod 640 /etc/postfix/sasl/smtpd.conf # nano /etc/postfix/sasl/smtpd.conf Agregamos: pwcheck_method: saslauthd mech_list: PLAIN LOGIN log_level: 3 Salvamos el fichero Creamos una carpeta con todos los ficheros que contendrn consultas a LDAP

# mkdir /etc/postfix/ldap # chmod 750 /etc/postfix/ldap && chown root:postfix /etc/postfix/ldap Creamos el fichero /etc/postfix/ldap/ldap-local-recipients.cf # touch /etc/postfix/ldap/ldap-local-recipients.cf # chown root:postfix /etc/postfix/ldap/ldap-local-recipients.cf # chmod 640 /etc/postfix/ldap/ldap-local-recipients.cf # nano /etc/postfix/ldap/ldap-local-recipients.cf Agregamos: server_host = 127.0.0.1 search_base = ou=people,dc=pri,dc=org,dc=cu query_filter = (mail=%s) result_attribute = uid cache = no bind = yes bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu bind_pw = password Salvamos el fichero Nota: En la ltima lnea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios. Creamos el fichero /etc/postfix/ldap/ldap-login-mismatch.cf # touch /etc/postfix/ldap/ldap-login-mismatch.cf # chown root:postfix /etc/postfix/ldap/ldap-login-mismatch.cf # chmod 640 /etc/postfix/ldap/ldap-login-mismatch.cf # nano /etc/postfix/ldap/ldap-login-mismatch.cf Agregamos: server_host = 127.0.0.1 search_base = ou=people,dc=pri,dc=org,dc=cu query_filter = (mail=%s) result_attribute = uid cache = no bind = yes bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu bind_pw = password

Salvamos el fichero Nota: En la ltima lnea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios. Creamos el fichero /etc/postfix/ldap/ldap-recipient-access.cf # touch /etc/postfix/ldap/ldap-recipient-access.cf # chown root:postfix /etc/postfix/ldap/ldap-recipient-access.cf # chmod 640 /etc/postfix/ldap/ldap-recipient-access.cf # nano /etc/postfix/ldap/ldap-recipient-access.cf Agregamos: server_host = 127.0.0.1 search_base = ou=people,dc=pri,dc=org,dc=cu query_filter = (&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailDeliveryMode cache = no bind = yes bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu bind_pw = password Salvamos el fichero Nota: En la ltima lnea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios. Creamos el fichero /etc/postfix/ldap/ldap-sender-access.cf # touch /etc/postfix/ldap/ldap-sender-access.cf # chown root:postfix /etc/postfix/ldap/ldap-sender-access.cf # chmod 640 /etc/postfix/ldap/ldap-sender-access.cf # nano /etc/postfix/ldap/ldap-sender-access.cf Agregamos: server_host = 127.0.0.1 search_base = ou=people,dc=pri,dc=org,dc=cu query_filter = (&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailDeliveryMode cache = no

bind = yes bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu bind_pw = password Salvamos el fichero Nota: En la ltima lnea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios. Creamos el fichero /etc/postfix/ldap/ldap-virtual-forward.cf # touch /etc/postfix/ldap/ldap-virtual-forward.cf # chown root:postfix /etc/postfix/ldap/ldap-virtual-forward.cf # chmod 640 /etc/postfix/ldap/ldap-virtual-forward.cf # nano /etc/postfix/ldap/ldap-virtual-forward.cf Agregamos: server_host = 127.0.0.1 search_base = ou=people,dc=pri,dc=org,dc=cu query_filter = (&(objectClass=gosaMailAccount)(gosaMailDeliveryMode=[*L*])(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailForwardingAddress cache = no bind = yes bind_dn = cn=postfix,ou=servicios,dc=pri,dc=org,dc=cu bind_pw = password Salvamos el fichero Nota: En la ltima lnea el password al que se refiere es a la clave que le pusimos al usuario llamado postfix que creamos desde phpldapadmin dentro de la unidad organizacional llamada: servicios. Creamos una carpeta para guardar el certificado autofirmado que usara postfix en TLS. # mkdir /etc/postfix/tls # chown root:postfix /etc/postfix/tls && chmod 750 /etc/postfix/tls/ Ahora generamos el certificado autofirmado. # openssl req -newkey rsa:1024 -x509 -nodes -out /etc/postfix/tls/server.pem -keyout /etc/postfix/tls/server.pem -days 3650 # chown root:postfix /etc/postfix/tls/server.pem # chmod 640 /etc/postfix/tls/server.pem

Creamos el fichero /etc/postfix/transport # touch /etc/postfix/transport # chown root:postfix /etc/postfix/transport # chmod 640 /etc/postfix/transport # nano /etc/postfix/transport Agregamos: pri.org.cu * : smtp:[mx1.org.cu]

# postmap /etc/postfix/transport Nota: El nombre mx1.org.cu especificado en el fichero transport debe ser nuestro SmartHost es decir el servidor de correo de nuestro ISP que es a quien entregamos nuestra mensajera, y es el mismo que especificamos en el main.cf en la lnea relayhost. Creamos /etc/postfix/sender_bcc_maps y /etc/postfix/recipient_bcc_maps # touch /etc/postfix/sender_bcc_maps # touch /etc/postfix/recipient_bcc_maps # chown root:postfix /etc/postfix/sender_bcc_maps # chmod 640 /etc/postfix/sender_bcc_maps # chown root:postfix /etc/postfix/recipient_bcc_maps # chmod 640 /etc/postfix/recipient_bcc_maps # postmap /etc/postfix/sender_bcc_maps # postmap /etc/postfix/recipient_bcc_maps Creamos el fichero /etc/postfix/pcre_cu_sender # touch /etc/postfix/pcre_cu_sender # chown root:postfix /etc/postfix/pcre_cu_sender # chmod 640 /etc/postfix/pcre_cu_sender # nano /etc/postfix/pcre_cu_sender Agregamos: !/\@*\.cu/ REJECT Esta cuenta solo puede recibir correos de dominios .cu

Salvamos el fichero Creamos el fichero /etc/postfix/pcre_cu_recipient # touch /etc/postfix/pcre_cu_recipient # chown root:postfix /etc/postfix/pcre_cu_recipient # chmod 640 /etc/postfix/pcre_cu_recipient # nano /etc/postfix/pcre_cu_recipient Agregamos: !/\@*\.cu/ REJECT Usted solo puede enviar correos a dominios nacionales. Salvamos el fichero El servicio lmpt de postfix por defecto se ejecuta dentro de una jaula o chroot de esta forma postfix no sera capaz de entregarle mensaje a cyrus por este motivo tenemos que ejecutar el servicio lmtp de postfix fuera de la jaula. Para lograr este objetivo editamos el fichero /etc/postfix/master.cf # nano /etc/postfix/master.cf Buscamos la linea que dice lmtp unix lmtp

y la cambiamos por: lmtp unix n lmtp

Salvamos el fichero Corremos el comando newaliases y reiniciamos postfix # newaliases # invoke-rc.d postfix restart Instalamos el servidor pop (Cyrus-imap) # aptitude install cyrus-admin-2.2 cyrus-imapd-2.2 cyrus-pop3d-2.2 cyrus-sasl2-dbg cyrus-sasl2-doc cyrus-doc-2.2 cyrus-clients-2.2 Usando phpldapadmin creamos un usuario llamado cyrus Como un Simple Security Object. dentro de la Unidad Organizacional llamada: servicios le ponemos una clave y la encriptamos usando md5. Comenzamos a Configurar cyrus

Primero hacemos una copia de seguridad de los ficheros (cyrus.conf e imapd.conf) # cp /etc/cyrus.conf /etc/cyrus.conf.default # cp /etc/imapd.conf /etc/imapd.conf.default Editamos /etc/cyrus.conf # nano /etc/cyrus.conf Cambio la linea: sieve por sieve cmd="timsieved" listen=":sieve" prefork=0 maxchild=100 cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100

Busnco las lineas: #squatter_1 #squatter_a cmd="/usr/bin/nice -n 19 /usr/sbin/squatter -s" period=120 cmd="/usr/sbin/squatter" at=0517

y las descomentamos. Editamos /etc/imapd.conf # nano /etc/imapd.conf Busco la linea: partition-default: /var/spool/cyrus/mail y debajo de esta pongo esta: servername: delta.pri.org.cu Busco esta linea: newsspool: /var/spool/news y debajo agrego esta: lmtp_overquota_perm_failure: yes Busco esta linea: unixhierarchysep: no y la cambio por

unixhierarchysep: yes Busco esta linea: #admins: cyrus y la descomento admins: cyrus Busco esta linea: #imap_admins: cyrus y la descomento imap_admins: cyrus Busco esta linea: #sieve_admins: cyrus y la descomento sieve_admins: cyrus Busco esta linea: popminpoll: 1 y la comento: # popminpoll: 1 Busco esta linea: autocreatequota: 0 y la sustituyo por: autocreatequota: 10000 Busco esta linea: sievedir: /var/spool/sieve y debajo pongo estas: sieve_maxscriptsize: 32 sieve_maxscripts: 5 Busco esta lineas:

#dracinterval: 0 #drachost: localhost y las descomento: dracinterval: 0 drachost: localhost Busco esta linea: #sasl_mech_list: PLAIN la descomento y la pongo asi: sasl_mech_list: PLAIN LOGIN DIGEST-MD5 Busco la linea: sasl_pwcheck_method: auxprop y la sustituyo por: sasl_pwcheck_method: saslauthd Reiniciamos cyrus # invoke-rc.d cyrus2.2 restart ####################################################################################### # openssl s_client -connect localhost:636 -showcerts # # # # postmap -q pepe@pri.org.cu ldap:/etc/postfix/ldap/ldap-local-recipients.cf # # pepe # # imtest -a pepe -w <contrasea> -m login localhost # # # ####################################################################################### Instalamos el webmail # aptitude install squirrelmail squirrelmail-decode squirrelmail-locales Procedemos a configurar squirrelmail. # /usr/share/squirrelmail/config/conf.pl Ejecutando dicho script accederemos desde la consola al men de opciones de configuracin. 1. Organization Preferences 1. Organization Name : SquirrelMail Cambiamos esta opcin por:

1. Organization Name

: Jovenclub de Computacion y Electronica

Presionamos la tecla S y damos ENTER para salvar el cambio. 2. Organization Logo : ../images/sm_logo.png

En esta otra opcin podemos cambiar el logotipo de squirrelmail por una imagen hecha por nosotros previamente que debe tener extensin .png y adems debemos guardarla en la carpeta: /usr/share/squirrelmail/images Presionamos la tecla r para volver a menu principal, donde ahora escogeremos la opcin 2. 2. Server Settings Una vez dentro procedemos a cambiar la configuracin del servidor IMAP y SMTP que son las opciones A y B. A. Update IMAP Settings : localhost:143 (other) 4. IMAP Server la dejamos asi: 4. IMAP Server : delta.pri.org.cu : localhost

Ahora vamos a la opcin 8 8. Server software la dejamos asi: 8. Server software Vamos a la opcin 9 9. Delimiter la dejamos asi: 9. Delimiter :/ : detect : cyrus : other

Presionamos la tecla S para salvar Ahora presionamos la tecla B para ir a la configuracin del servidor SMTP. 4. SMTP Server la dejamos asi: 4. SMTP Server : delta.pri.org.cu : localhost

Ahora vamos a la opcin 7

Nos preguntar si si queremos que auto detecte los mecanismos de autenticacin, le decimos que No. 7. SMTP Authentication : none y la dejamos asi: 7. SMTP Authentication : login Luego de dar ENTER despus de haber especificado login, nos saldr algo como esto: Would you like to use other login and password for all SquirrelMail SMTP connections? [y/N]:

Y tambin le decimos que no, finalmente la opcin 7 debe quedar as: 7. SMTP Authentication : login (with IMAP username and password) Presionamos S y Enter para salvar y r para volver al men principal. Vamos a la opcin 3 3. Folder Defaults 3. Trash Folder la dejamos asi: 3. Trash Folder Vamos a la opcin 4 4. Sent Folder la dejamos asi: 4. Sent Folder Vamos a la opcin 5 5. Drafts Folder la dejamos asi: 5. Drafts Folder : INBOX/Borrador : INBOX.Drafts : INBOX/Enviados : INBOX.Sent : INBOX/Papelera : INBOX.Trash

Presionamos la tecla S y damos ENTER. Presionamos la tecla R para volver al men principal.

Ahora vamos a la opcin 10 para poner el squirrelmail en idioma Espaol 10. Languages 1. Default Language : en_US

cambiamos esta opcin por: 1. Default Language Salvamos y salimos. y reiniciamos apache2 # invoke-rc.d apache2 restart Ahora vamos a crear un virtualhost para acceder al webmail. Editamos el fichero /etc/apache2/sites-available/default # nano /etc/apache2/sites-available/default Agregamos los nuevos virtualhost al final del fichero. # VirtualHost para el Webmail <VirtualHost 192.168.0.2:80> ServerName correo.pri.org.cu ServerAdmin admin@pri.org.cu DocumentRoot "/var/www/mail" <Directory /var/www/mail/> Options Indexes Includes FollowSymLinks AllowOverride None order allow,deny allow from all </Directory> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] # Reescribimos todas las peticiones a este sitio a una conexin segura es decir usando SSl RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{HTTP_HOST} correo.pri.org.cu RewriteRule (.*) https://correo.pri.org.cu$1 [R=301,L] ErrorLog /var/log/apache2/correo-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/correo-access.log combined : es_ES

ServerSignature On </VirtualHost>

# VirtualHost con soporte SSL <VirtualHost 192.168.0.2:443> ServerName correo.pri.org.cu ServerAdmin admin@pri.org.cu DocumentRoot "/var/www/mail/" <Directory /var/www/mail> Options Indexes Includes FollowSymLinks AllowOverride None order allow,deny allow from all </Directory> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] SSLEngine on SSLCertificateFile /etc/apache2/ssl/correo/correo.pem ErrorLog /var/log/apache2/correo-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/correo-access.log combined ServerSignature On </VirtualHost> Salvamos y salimos. Creamos el certificado para dicho VirtualHost. # mkdir /etc/apache2/ssl/correo # openssl req -newkey rsa:1024 -x509 -nodes -out /etc/apache2/ssl/correo/correo.pem -keyout /etc/apache2/ssl/correo/correo.pem -days 3650 # chown root:www-data /etc/apache2/ssl/correo/correo.pem # chmod 640 /etc/apache2/ssl/wcorreo/correo.pem Ahora editamos el fichero /etc/apache2/ports.conf # nano /etc/apache2/ports.conf Y aadimos esta lnea: NameVirtualHost 192.168.0.2:443

Y ahora vamos a crear este enlace simblico para el squirrelmail. # ln -s /usr/share/squirrelmail /var/www/mail Reiniciamos apache2 # invoke-rc.d apache2 restart Ahora debemos ir a la web de Gosa para crearles los buzones de correo a los usuarios que hemos creado desde dicha web, que en mi caso solo ha sido uno de momento. Accedemos a gosa http://gosa-admin.pri.org.cu Entramos y nos dirigimos a la seccin de administracin y en ella vamos hasta la opcin llamada usuarios: Si ya tenamos una cuenta creada (la que creaste cuando configuraste saslauthd recuerdas?) dicha cuenta te aparecer ah, solo que en estos momentos es solo una cuenta en el directorio ldap, de momento no tiene permisos para usar el servicio de correo que es lo que estamos configurando en este manual, como tampoco tiene permiso de usar el servicio de Squid y Samba, que son otros servicios que se pueden integrar a ldap mediante gosa, pero esto lo tratar en otro manual :) Damos un clic sobre nuestro usuario, ah podremos editar sus propiedades, al hacerlo tendremos frente a nosotros las siguientes opciones: Genrico, Unix, Entorno, Correo Electrnico, Samba, Conectividad, Fax, Telfono Y como seguro ya nos dimos cuentas nos encontramos en la opcin Genrico, que es donde podemos poner los datos personales del usuario, as como su foto, ahora antes de pasar a la pestaa Correo Electrnico debemos en Administracin a la opcin que dice: Sistemas. Aqu es donde vamos agregar nuestro servidor (nombre, direccin IP, MAC, etc...) Buscamos el botn que en la ayuda nos dice: Nuevo Servidor y lo pulsamos. Agregamos el Nombre completo de nuestro server en mi caso: Nombre del servidor: delta.pri.org.cu Descripcin: Servidor de Mensajera Parmetros de RED Direccin IP: Direccin MAC: 192.168.0.2 00:16:76:BA:76:8A

En esta misma pestaa (Genrico) a la derecha hay una opcin que dice Modo que aparece por defecto en Bloqueado, la pasamos a: Activado. Ahora vamos a la pestaa Bases de Datos, activamos poniendo una palomita en la opcin a la derecha que dice: Administradores de Acceso IMAP.

Identificador del Servidor: URL de conexin: Usuario Administrador: Contrasea: Puerto Sieve:

delta.pri.org.cu {127.0.0.1:143/novalidate-cert} cyrus ****** 2000

Y pulsamos el botn guardar. Ahora regresamos a usuarios, editamos nuevamente el usuario que ya existe pulsando sobre el y nos dirigimos a la pestaa Correo Electrnico, al llegar aqu pulsamos el botn: Crear cuenta de correo. Nos aparecern varias opciones debajo. Genrico Cuenta Principal: pepe@pri.org.cu Servidor: delta.pri.org.cu Uso de Cuota Tamao de cuota: 50 MB Y le voy al botn guardar. Ahora podremos ver que en la columna propiedades vemos un sobre de carta al lado de nuestro usuario que antes no estaba, eso es seal de que ya tiene permiso para usar el servicio de correo, por lo que ya podemos logearnos desde el webmail con dicha cuenta: Accedemos a: https://correo.pri.org.cu Ahora lo que nos queda con el webmail es ponerlo los plugins para cambiar la clave los usuarios, aunque pueden utilizar la web de gosa tambin para cambiar la clave y ponerle alguna pacotilla al webmail para ponerlo bonito, los plugins que y use son: avelsieve compatibility image_buttons change_ldappass addgraphics quota_usage show_user_and_ip Ms otros que trae el propio Squirrelmail. Que los puedes encontrar en. http://www.squirrelmail.org Vamos a aadirle a nuestro squirrelmail estos plugins para ello deben bajarlos que estarn comprimidos en ficheros .tar.gz seguramente, deben descompactarlos y copiarlos al directorio /usr/share/squirrelmail/plugins Hay algunos plugins que es necesario hacer algn ajuste en su fichero de configuracin que generalmente se llama config.php casi siempre este fichero aparece con un nombre ms largo y hay que renombrarlo, pero bueno eso te lo explican en los comentarios dentro del mismo archivo :)

Vamos a ejecutar nuevamente el script de configuracin del squirrelmail. # /usr/share/squirrelmail/config/conf.pl

Vamos a la opcin 8 que es la de los plugins y veremos algo como esto:

Plugins Installed Plugins Available Plugins: 1. abook_take 2. addgraphics 3. administrator 4. avelsieve 5. bug_report 6. calendar 7. change_ldappass 8. compatibility 9. delete_move_next 10. demo 11. filters 12. fortune 13. image_buttons 14. info 15. listcommands 16. mail_fetch 17. message_details 18. newmail

19. online_users 20. quota_usage 21. sent_subfolders 22. show_user_and_ip 23. spamcop 24. squirrelspell 25. test 26. translate

R Return to Main Menu C Turn color on S Save data Q Quit Como podemos ver no hay ningn plugins instalado aun y la lista de plugins disponible aparece por debajo, comenzamos por instalar el plugins llamado: compatibility para ello solo tenemos marca el nmero que este tiene en la lista de plugins y a continuacin dar ENTER, en mi caso es el nmero 8. De esa manera instalamos los plugins: quota_usage, message_details, administrator, delete_move_next, newmail, avelsieve, mail_fetch show_user_and_ip que son los plugins que no hay que hacerles ningn tipo de configuracin antes de instalarlos, una vez que tengamos instalados todos estos, pues pasamos a otros de uno en uno. Comanzamos por: change_ldappass que es el plugins necesario para que nuestros usuarios puedan cambiar su contrasea de correo desde el webmail, aunque tambin puede hacerlo desde gosa, para ello vamos a /usr/share/squirreilmail/plugins y buscamos el plugins, entramos al directorio y buscamos un fichero que se llama: config.php lo editamos y buscamos las liguientes lneas: $ldap_base_dn = dc=pri,dc=org,dc=cu; Salvamos y de la misma forma en que instalamos los plugins anteriores instalamos este. En el caso de plugins llamado online_users hay que editar el config.php de este y especificarle los datos de la base de datos mysql donde este guardara dicha informacin, como hasta el momento no tenemos dicha base de datos, pues vamos a crearla, lo primero es instalar phpmyadmin si no lo hemos hecho aun.

# aptitude install phpmyadmin Accedemos al mismo y creamos una base de datos y le ponemos un nombre, en mi caso la llamar: mail con este cdigo creamos la tabla onlineusers en la base de datos:

CREATE TABLE IF NOT EXISTS `onlineusers` ( `ou_timestamp` int(15) NOT NULL default '0', `ou_user` varchar(40) NOT NULL default '', `ou_right_main` varchar(100) NOT NULL default '', PRIMARY KEY (`ou_timestamp`), KEY `ou_user` (`ou_user`), KEY `ou_right_main` (`ou_right_main`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ahora vamos a crear un user en mysql y darle acceso a la base datos que acabamos de crear, para ello usaremos phpmyadmin. Una vez realizado esto regresamos al fichero config.php del plugins online_users y especificamos estos datos en l salvamos e instalamos el plugins. Bueno el trabajo con el resto de los plugins es similar, leer las indicaciones que dice antes de instalarlo ok! Bueno una cosa ms con el squirrelmail, vamos aadir otra tabla a la base de datos mysql que creamos hace poco para ser utilizada para la libreta de direcciones de los usuarios, para ello nuevamente accedemos a la web de phpmyadmin entramos como root y ejecutamos este cdigo para agregar una 2da tabla a la base de datos mail.
CREATE TABLE IF NOT EXISTS `address` ( `owner` char(128) NOT NULL default '', `nickname` char(128) NOT NULL default '', `firstname` char(128) default NULL, `lastname` char(128) default NULL, `email` char(200) default NULL, `label` char(200) default NULL, PRIMARY KEY (`owner`,`nickname`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Una vez hecho esto vamos a la konsola y ejecutamos el scripts de configuracion de Squirrelmail y entramos en la opcin 9. Y veremos esto: Database 1. DSN for Address Book : 2. Table for Address Book : address 3. 4. 5. 6. 7. DSN for Preferences : Table for Preferences : userprefs Field for username : user Field for prefs key : prefkey Field for prefs value : prefval

8. DSN for Global Address Book : 9. Table for Global Address Book : global_abook 10. Allow writing into Global Address Book : false 11. Allow listing of Global Address Book : false Entramos a la opcin 1 y especificamos este valor: mysql://user_mysql:clave@localhost/nombre_base_datos

donde:

user_mysql: Es el usuario mysql que creamos desde phpmyadmin clave: Es la clave que le pusimos a ese usuario. nombre_base_datos: Es el nombre de la base de datos Ahora hacemos lo mismo en la opcin 3 pero antes de eso nos llegamos nuevamente a phpmyadmin y creamos una 3ra tabla con este cdigo:
CREATE TABLE IF NOT EXISTS `userprefs` ( `user` varchar(128) NOT NULL default '', `prefkey` varchar(64) NOT NULL default '', `prefval` blob NOT NULL, PRIMARY KEY (`user`,`prefkey`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ahora si podemos configurar la opcin 3 como lo hicimos con la 1, se pone exactamente igual ok! Instalamos mailman # aptitude install mailman Editamos el fichero /etc/mailman/mm_cfg.py # nano /etc/mailman/mm_cfg.py DEFAULT_EMAIL_HOST = 'pri.org.cu' DEFAULT_URL_HOST = 'listas.pri.org.cu' DEFAULT_SERVER_LANGUAGE = 'es' MTA='Postfix' Agrego estas lineas en el fichero: /etc/apache2/sites-available/default # nano /etc/apache2/sites-available/default ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ Despus reinicio apache2 # /etc/init.d/apache2 restart Ejecutamos este comando: # /var/lib/mailman/bin/genaliases Editamos el main.cf de postfix # nano /etc/postfix/main.cf

Buscamos las lineas: alias_maps = $alias_database #alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases Descomentamos de la abajo y comentamos la de arriba. #alias_maps = $alias_database alias_maps = $alias_database, hash:/var/lib/mailman/data/aliases Reiniciamos postfix y damos newaliases # newaliases # /etc/init.d/postfix restart Creamos la lista mailman con: # newlist mailman Con este mismo comando creo las dems listas # newlist debian-cu Iniciamos el servicio de mailman # /etc/init.d/mailman start Ahora que ye tenemos una lista creada (debian-cu) podemos acceder a la Web de administracin de Mailman por: http://listas.pri.org.cu/mailman/admin Configurar otras opciones de la lista, suscribir usuarios, crear otras listas, etc... Ahora vamos a instalar la herramienta isoqlog para las estadsticas del correo # aptitude install isoqlog Editamos el fichero de configuracin que esta en # /etc/isoqlog/isoqlog.conf y que quede asi: # isoqlog 2.0 Configuration file logtype = "postfix" logstore = "/var/log/mail.log" domainsfile = "/etc/isoqlog/isoqlog.domains" outputdir = "/var/www/isoqlog" htmldir = "/usr/share/isoqlog/htmltemp" langfile = "/usr/share/isoqlog/lang/spanish"

hostname

= "delta.pri.org.cu"

maxsender = 100 maxreceiver = 100 maxtotal = 100 maxbyte = 100

Y en en el fichero # /etc/isoqlog/isoqlog.domains Debe tener una lnea con el dominio de correo: pri.org.cu Luego creamos una tarea en el cron as: # nano /etc/crontab Ponemos esta lnea al final, salvamos, salimos y reiniciamos el cron. 58 * * * * root /usr/bin/isoqlog 1>/dev/null 2>/dev/null

# /etc/init.d/cron restart Instalar amavisd-new, SpamAssassin, And ClamAV Pero antes de instalarlos, debemos agregar al source.list el debian-volatile. Editamos el fichero /etc/apt/sources.list # nano /etc/apt/sources.list y agregamos esta linea: deb file:///mnt/debian-volatile lenny/volatile main contrib non-free Salvamos el fichero ejecutamos # aptitude update # aptitude install amavisd-new spamassassin clamav clamav-daemon zoo libnet-ph-perl libnet-snppperl # aptitude install libnet-telnet-perl nomarch lzop pax Luego edite este archivo # nano /etc/amavis/conf.d/15-content_filter_mode El fichero debe quedar as:

use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it back # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

# # Default SPAM checking mode # Uncomment the two lines below to enable it back # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # insure a defined return Finalmente, editamos: # nano /etc/amavis/conf.d/50-user #use strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $mydomain =pri.org.cu; #$myhostname = delta.pri.org.cu; $max_servers = 5; # number of pre-forked children $max_requests = 10; # retire a child after that many accepts $inet_socket_bind = '127.0.0.1'; @inet_acl = qw( 127.0.0.1 ); $forward_method = 'smtp:[127.0.0.1]:10025'; $notify_method = 'smtp:[127.0.0.1]:10025'; $X_HEADER_LINE = " $myproduct_name at delta.pri.org.cu"; #Evitamos el chequeo de cabezeras por el momento. @bypass_header_checks_acl = qw( . ); $final_bad_header_destiny = D_PASS;

# Extensiones no permitidas qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta| inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst| ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs| wmf|wsc|wsf|wsh)$'ix, # banned ext - long

#------------ Do not modify anything below this line ------------1; # insure a defined return Y agregamos estas lineas al fichero master.cf de postfix. # nano /etc/postfix/master.cf smtp inet n n 50 smtpd -o smtpd_proxy_filter=127.0.0.1:10024 -o smtpd_client_connection_count_limit=50 # # After-filter SMTP server. Receive mail from the content filter # on localhost port 10026. # 127.0.0.1:10025 inet n n - smtpd -o smtpd_authorized_xforward_hosts=127.0.0.1 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=127.0.0.1 -o receive_override_options=no_unknown_recipient_checks Salvamos el fichero y reiniciamos postfix # /etc/init.d/postfix restart Ejecutamos: # netstat -tap Y debemos observar 2 lineas como estas, dentro de todas las que muestra en pantalla: tcp y tcp 0 0 *:smtp *:* LISTEN 2311/master 0 0 localhost.localdo:10024 *:* LISTEN 4505/amavisd (maste

Instalar Razor, Pyzor And DCC y Configurar SpamAssassin # aptitude install razor pyzor Edite /etc/spamassassin/local.cf y agregue estas lineas en el:

# nano /etc/spamassassin/local.cf #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 Salvamos y fichero y salimos. Despus agregamos los usuarios clamav al grupo amavis y reiniciamos los demonios: # adduser clamav amavis Reinicie amavisd-new # /etc/init.d/amavis restart Ahora editamos el fichero /etc/clamav/freshclam.conf # nano /etc/clamav/freshclam.conf y agregamos al final: # Proxy: http://proxy.pri.org.cu:3128/ HTTPProxyServer proxy.pri.org.cu HTTPProxyPort 3128 #HTTPProxyUsername usuario #HTTPProxyPassword clave Reiniciamos clamav # /etc/init.d/clamav-daemon restart # /etc/init.d/clamav-freshclam restart Y creo que hemos acabado. Autores: Racial Prez Hernndez Admin. de Redes Direccin Provincial de Salud P. del Ro e-mail: racielprz@minsap.pri.sld.cu Eduardo R. Barrera Prez admin. de Redes Direccin Provincial de Jovenclub Pinar del R e-mail: ebarrera@pri.jovenclub.cu

Вам также может понравиться