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 administración de Cyrus basada en Web. Debería proporcionar una interfaz similar a la de los filtros de usuario a los administradores y personal de soporte técnico. ) En esta guía 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 instalación y hecho una instalación mínima. 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 información adicional vamos utilizar los siguientes datos: • • • • • • • • Nombre del servidor: delta Dominio: pri.org.cu Dirección IP: 192.168.0.2 Máscara de Red: 255.255.255.0 Dirección 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 líneas: # 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 partición 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 máquinas: ftp.debian.org y security.debian.org ya que de lo contrario no podremos acceder a dichero repositorio, también como es lógico 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 públicas, 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:contraseña@proxy.tudominio.cu:3128”; La configuración del sources.list puede variar en dependencia de la localización o ubicación del repositorio de debian que vayamos a utilizar para nuestra instalación 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 vía http y empleando el nombre o recurso de RED: debian.tudominio.cu en caso de estar por ftp las 2 líneas quedarían 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 instalación 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 sería /dev/sdb procedemos a montarlo por ejemplo en el directorio /mnt vamos asumir que el disco externo tiene una sola partición en ext3 # mount –t ext3 /dev/sdb1 /mnt Asumimos también que el repositorio esta en la raíz del disco, es decir que no este metido dentro de ningún directorio, entonces el sources.list quedaría 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 después 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 ejecución 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 opción: Sin configuración. Instalamos compilador de C++ # aptitude install make db4.6-util libdb4.6-dev # aptitude install build-essential Cambiando idioma a español. # dpkg-reconfigure locales

dc=cu> with scope subtree # filter: (objectclass=*) # requesting: ALL # # pri. Ya nuestro sistema esta en idioma español. 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 contraseña del administrador de ldap. luego corremos este comando: # dpkg-reconfigure slapd Aquí debemos contestar una serie de preguntas como: 1.cu dc: pri # admin.org.UTF8.cu dn: cn=admin. pri.cu dn: dc=pri.Cuando debconf nos pregunte que locales queremos generar marcamos ALL LOCALE.Permitir LDAP v2: No pri.Nombre de dominio: 3.cu pri.dc=org.org. Cuando termine Salimos del sistema y volvemos a entrar.dc=org. Esperamos que se terminen de generar los locales.dc=cu" # extended LDIF # # LDAPv3 # base <dc=pri.Motor de base de datos a utilizar: 7. para probar que el servicio de slapd está arriba y funcionando utilizamos el comando: # ldapsearch -x -b "dc=pri.dc=org.cu passoword password BDB No Si Si Ahora.Confirme la contraseña del admin: 6.dc=cu .dc=pri. Después nos pregunta cual queremos por defecto para nuestro sistema seleccionamos es_ES.org.Borrar la base de datos al purgar slapd: 8.org.Contraseña del admin: 5.dc=cu objectClass: top objectClass: dcObject objectClass: organization o: pri.Mover la base de datos antigua: 9.org.Omitir la configuración de OpenLDAP: 2.dc=org.Nombre de organización: 4.

es decir todo es una misma línea.cu/gosa Pero antes de continuar. podemos acceder a su interfaz Web para su configuración por: http://delta. vamos a editar dicho fichero: .0 mysql-client-5.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.dc=org. dependencias de gosa y módulos 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 líneas son una sola. por lo tanto. debemos asegurarnos que en el fichero de configuración de ldap tenemos especificados todos estos esquemas y en este mismo orden.168. usamos alguna de las URL siguientes: http://192.2/phpldapadmin Para acceder en la web usamos: login: cn=admin.pri.0 libmysqlclient15-dev Instalamos php5. Instalamos phpldapadmin # aptitude install phpldapadmin Para acceder a la Web de phpldapadmin.org.dc=pri.0.dc=cu Clave: ****** Instalamos gosa # aptitude install gosa gosa-schema Una vez instalado gosa.

schema Aclaro que para incluir todos estos esquemas a nuestro servidor ldap. -type d -exec chown root.schema include /etc/ldap/schema/gofon.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/goto-mime.schema include /etc/ldap/schema/trust.schema include /etc/ldap/schema/kolab2. # schemacheck on loglevel -1 # Indexing options for database #1 index default sub .schema include /etc/ldap/schema/gosystem. -type f -exec chown root.schema include /etc/ldap/schema/dhcp. # find .schema include /etc/ldap/schema/rfc2739.conf # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/gofax.schema include /etc/ldap/schema/phpgwaccount.schema include /etc/ldap/schema/dnszone.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/nagios.schema include /etc/ldap/schema/goto.schema include /etc/ldap/schema/samba3.schema include /etc/ldap/schema/dns.# nano /etc/ldap/slapd.openldap {} \.schema include /etc/ldap/schema/cosine. -type d -exec chmod 750 {} \. # find .schema include /etc/ldap/schema/samba.conf estas líneas: # nano /etc/ldap/slapd.schema include /etc/ldap/schema/gosa+samba3. Agregamos también al fichero slapd.openldap {} \. -type f -exec chmod 640 {} \. deben existir dichos esquemas en el directorio /etc/ldap/schema por lo que debemos buscarlos.schema include /etc/ldap/schema/goserver.schema include /etc/ldap/schema/pureftpd.schema include /etc/ldap/schema/misc.conf # Habilitar el chequeo de esquemas. 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 . # find .

Damos siguiente y viene la licencia la cual debemos aceptar desde luego para poder continuar. así que nos saltamos este paso. seleccionamos español y seguimos.mail eq gosaMailAlternateAddress.gidNumber.eq.gosaMailForwardingAddress eq cn.ini pero en Debian Lenny esto no es necesario.d/slapd restart eq eq eq eq eq eq eq Luego vamos a la web de gosa y procedemos a su configuración.eq uidNumber. Luego pulsamos el botón siguiente.givenName. en el caso de Debian Etch había que modificar algunos valores en el php. tómelo de la Web de gosa ya que la numeración no es siempre la misma.memberuid eq gosaSubtreeACL.auth Nota: No copie este comando del tutorial. En el próximo paso.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 Apache: # invoke-rc.sub objectClass pres.gosaObject. Reiniciamos ldap # /etc/init. gosa comprobará algunos paquetes y parámetros necesarios para trabajar.gosaUser pres. Como nos indica en el 1er paso.index index index index index index uid. debemos crear este fichero: # echo -n 4ab0c6aa1b931d18808487151dcc824e > /tmp/gosa. La próxima página debemos escoger el idioma.sn. El próximo paso es la conectividad a LDAP: .ou pres.d apache2 restart Le damos actualizar a la Web de gosa y ya no debe darnos el error.

pero uno no tiene nada que ver con el otro.dc=cu DN del administrador: cn=admin. En esta página debemos crear el usuario administrador para gosa. el cual lo llamaremos admin. En el próximo paso.dc=org. Pulsamos Siguiente. incluso pueden tener claves distintas si queremos y si quieres puedes escoger otro nombre de usuario para el administrador de gosa OK! Pulsamos el botón: Crear que aparece en la opción: Comprobando súper administrador: Especificamos el nombre de usuario y una clave. En la otra página nos aparecerá: Parámetros específicos del esquema Activar validación de esquema cuando se registre: Si Pulsamos continuar. En la próxima página lo dejo todo como esta.dc=pri. Usar grupos conformes a rfc2307bis: No Pulsamos siguiente. (las demás las dejo como están) Atributo 'dn' de los usuarios: uid Algoritmo de codificación de contraseña: md5 Damos siguiente y en el próximo paso. solo cambio estas opciones: Zona horaria: America/Havana (DST) Método de correo: cyrus (uid) Usa estilo Cyrus UNIX: Si Pulsamos Siguiente. en mi caso: . solo cambio estas opciones.Conexión LDAP Nombre de la localización: Conectar a la URL: Conexión TLS: Base: MailServer ldap://localhost:389 No dc=pri.dc=cu Contraseña de administrador: ***** La opción que dice: Añadir automáticamente la base LDAP al DN administrador la dejamos sin marcar.dc=org. igual que el administrador de ldap.

org.168.cu".org. //Zona inversa para la RED 192.192. desmarco todas las opciones seleccionadas con palomas y marco No donde me permita escoger y voy a la siguiente página.0. aquí debemos descargar el fichero de configuración de gosa que se va a generar con todas las opciones que hemos ido seleccionando paso a paso.Nombre: Identificador (ID) de usuario: Contraseña: Contraseña (de nuevo): Y pulsamos el botón aplicar. La siguiente página ya es el paso final. Bueno antes de ponernos a crear un VirtualHost independiente para gosa y dotarlo de soporte SSL para mayor seguridad. para ello pulsamos el botón: Descargar configuración. vamos a instalar y configurar un servidor DNS en este Server para el dominio: pri.arpa" { type master. file "/var/cache/bind/pri. System administrator admin ***** ***** Ahora ya podemos seguir adelante.org.conf debemos copiarlo para nuestro servidor para: /etc/gosa luego para asegurarnos que quede con los permisos correctos corremos los siguientes comandos: # chown root. En la siguiente página: Avisos y sugerencias son cosas opcionales. Pulsamos continuar.conf # chmod 640 /etc/gosa/gosa. de modo que no haré nada de eso.cu" { type master. Bien.cu zone "pri.conf. }.www-data /etc/gosa/gosa.org. Pulso continuar. una vez descargado el fichero gosa.conf.cu Instalamos bind9 # aptitude install bind9 bind9-doc bind9-host dnsutils Ahora editamos el fichero /etc/bind/named. .local # nano /etc/bind/named.conf Una vez hecho esto ya podemos finalizar pulsamos por última vez el botón: 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.in-addr.0/24 zone "0.168.local //Zona pri.

192.org.168.arpa".in-addr.cu.org.root /var/cache/bind/0. root.cu.cu. ( 2009030801 3600 3600 3600000 86400 ) 21600 IN NS delta.cu # chown bind.192.pri.org.org.org.root /var/cache/bind/pri.192.2 CNAME CNAME CNAME CNAME CNAME delta delta delta delta delta gosa-admin correo listas ldap-admin php-admin Salvamos y salimos. ( 2009030801 3600 3600 604800 1200 ) NS delta. # touch /var/cache/bind/pri.cu.arpa # chown bind.arpa Editamos el fichero de la zona directa: # nano /var/cache/bind/pri. }.168.in-addr. Editamos el fichero de la zona inversa.168.pri. root.in-addr.conf.168.168.cu # chmod 640 /var/cache/bind/0.cu # touch /var/cache/bind/0.168.192.org.org.org.0.192.org.org.arpa # chmod 640 /var/cache/bind/pri.org.file "/var/cache/bind/0.pri.cu. Salvamos y salimos. Creamos los ficheros de las zonas (directa e inversa) y le ponemos los permisos.cu. # nano /var/cache/bind/222.arpa $ttl 86400 @ IN @ 0 IN IN SOA delta.cu.in-addr.pri. Ahora debemos editar el fichero /etc/bind/named.in-addr. $TTL 86400 @ 21600 IN SOA delta. .cu.cu $ORIGIN pri. delta 21600 IN A 21600 21600 21600 21600 21600 IN IN IN IN IN 192.pri.pri.pri.org.options para especificarle a nuestro servidor DNS a que servidor DNS reenviará aquellas consultas DNS que el no sea capaz de resolver. PTR delta.

arpa/IN: loaded serial 2009030801 8 19:28:47 delta named[7750]: zone 255. y las dejamos así: forwarders { 192. Reiniciamos el bind9.192.3.24.1#53 8 19:28:47 delta named[7750]: listening on IPv4 interface eth0.conf. Nota: Aquí deben poner los DNS de su ISP.168.options Buscamos estas líneas que aparecen comentadas: // forwarders { // 0.0. Salvamos y salimos.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone pri.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. using 1 worker thread 8 19:28:47 delta named[7750]: loading configuration from '/etc/bind/named.4.1#53 8 19:28:45 delta named[7660]: no longer listening on 192.0.in-addr. port 53 8 19:28:47 delta named[7750]: listening on IPv4 interface lo. 192.0.0. 127.conf' 8 19:28:47 delta named[7750]: listening on IPv6 interfaces.2#53 8 19:28:45 delta named[7660]: exiting 8 19:28:47 delta named[7750]: starting BIND 9.0.168.# nano /etc/bind/named.4-P1.24.2#53 8 19:28:47 delta named[7750]: command channel listening on 127.d bind9 restart Miramos en syslog a ver si hay algún error.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.org.0.6.0.0.in-addr.0.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone 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.168.in-addr. para eso lo primero es llegarnos al fichero /etc/resolv.arpa/IN: loaded serial 1 8 19:28:47 delta named[7750]: zone 127.conf .168. # invoke-rc. // }.0. # 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. 192.in-addr.1 -u bind 8 19:28:47 delta named[7750]: found 1 CPU.0.168. }.

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

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.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.html.var ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.var ErrorDocument 404 /error/HTTP_NOT_FOUND.d/charset Descomentamos la línea: #AddDefaultCharset UTF-8 y debemos dejarla de esta manera: AddDefaultCharset ISO-8859-1 Salvamos el fichero y salimos.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.html.var ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.d/charset # nano /etc/apache2/conf. Editamos el fichero /etc/apache2/conf.html.var ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.var ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.conf Busco las siguientes líneas y las descomento todas y que queden de esta manera: # nano /etc/apache2/apache2.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.html.html.var ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html. Ahora editamos el fichero /etc/apache2/apache2.var ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.html.html.var .ServerTokens Prod Salvamos el fichero y salimos.html.var ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.var ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.var ErrorDocument 410 /error/HTTP_GONE.

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

org.org.0.cu$1 [R=301. .0/24 <IfModule mod_php4. warn.L] ErrorLog /var/log/apache2/gosa-admin-error.0.pri.php </IfModule> </Directory> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .pri. pero ahora debemos añadir otro con soporte SSL.* .cu DocumentRoot "/usr/share/gosa/html" <Directory /usr/share/gosa/html/> Options +FollowSymLinks AllowOverride None order allow.pri. info. crit.c> AddType application/x-httpd-php . emerg.*) https://gosa-admin.<VirtualHost 192.org.log # Possible values include: debug.org.168. notice. error.func_overload 0 php_value include_path . LogLevel warn CustomLog /var/log/apache2/gosa-admin-access.[F] # Reescribimos todas las peticiones a este sitio a una conexión segura es decir usando SSl RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{HTTP_HOST} gosa-admin.168.deny allow from 192. dejamos un espacio y ponemos a continuación el otro VirtualHost.cu ServerAdmin admin@pri.log combined ServerSignature On </VirtualHost> Hemos agregado un VirtualHost para gosa.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. # alert.2:80> ServerName gosa-admin.cu RewriteRule (. DirectoryIndex index.

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

# 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. . Ahora vamos a instalar saslauthd # aptitude install sasl2-bin libsasl2-modules-ldap Agregamos el sockect de saslauthd dentro del chroot de postfix además cambiamos el mecanismo de autenticación.org.pri.conf Ahora debemos activar SSL en apache.d/apache2 restart Y ya podemos acceder a la Web de gosa mediante la URL: http://gosa-admin. # a2ensite default-ssl Reiniciamos apache2 # /etc/init.d/gosa.# chmod 640 /etc/apache2/ssl/gosa-admin.cu Debe redireccionar automáticamente dicha petición http hacia https.pem # rm /etc/apache2/conf.

conf Le agregamos: ldap_servers: ldap://localhost/ ldap_bind_dn: uid=saslauthd.dc=pri.d slapd restart Creamos el Fichero /etc/saslauthd.dc=org.dc=pri.dc=org.shadowLastChange). # nano /etc/ldap/slapd.ou=servicios.dc=pri.dc=cu" read by anonymous auth by self write by * none Salvamos y reiniciamos ldap.conf y le agregamos las siguientes líneas: # touch /etc/saslauthd.conf buscamos la sección dentro de las acl las cuales restrigen el acceso a los atributos (userPassword. ou=servicios.shadowLastChange) en el fichero de configuración de ldap.dc=org.conf Buscamos estas líneas: access to attrs=userPassword.shadowLastChange by dn="cn=admin. saslauthd a los atributos Editamos: /etc/ldap/slapd. Además debemos darle permisos de lectura al usuario (userPassword.ou=servicios.dc=pri.dc=cu Dentro de esta unidad organizacional creamos un usuario llamado: saslauthd Como un Simple Security Object.dc=cu" write by anonymous auth by self write by * none Y agregamos una nueva línea: access to attrs=userPassword.shadowLastChange by dn="cn=admin. # invoke-rc..dc=org.dc=cu" write by dn="uid=saslauthd.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> . Le ponemos una clave al usuario saslauthd y escogemos md5 como formato para la clave.conf # nano /etc/saslauthd.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.

pem #ldap_tls_ciphers: HIGH:MEDIUM:SSLv2:RSA #ldap_tls_cert: /etc/saslauthd.conf # chown root:sasl /etc/saslauthd.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 autenticación. 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: . Cambiamos los permisos del fichero /etc/saslauthd.pem #ldap_tls_cacert_dir: /etc/saslauthd. No he encontrado como indicarle a cyrus-imap que busque el sock de sasl en otra ruta.pem #ldap_tls_key: <none> Salavos el fichero y salimos. # chmod 640 /etc/saslauthd.conf a 640 por root y 400 por el usuario sasl.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.conf # mkdir -p /var/spool/postfix/var/run/saslauthd Al cambiar de lugar el sock de saslauthd debemos crear este enlace simbólico ya que cuando intentemos configurar a cyrus-imap para que autentique contra sasl.#ldap_referrals: <no> #ldap_restart: <yes> ldap_cache_ttl: 0 ldap_cache_mem: 0 ldap_scope: <base> ldap_search_base: dc=pri. # rmdir /var/run/saslauthd # ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd # chown root.dc=cu ldap_filter: (|(uid=%u)(cn=%u)) ldap_debug: 9 #ldap_tls_cacert_file: /etc/saslauthd. cyrus buscara el sock de sasl en el lugar que viene originalmente.dc=org.

Instalando Postfix # aptitude install postfix postfix-ldap postfix-pcre postfix-doc Cuando debconf nos pregunta le decimos (Sin Configuración) 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 configuración main. Si el archivo ya existía y ya contiene líneas en su interior. pues o las comentamos todas o las eliminamos.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 .cf Ahora lo editamos lo dejamos de esta manera.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. # nano /etc/postfix/main. Este será el usuario que usaremos para hacer todas las consultas LDAP desde postfix. # touch /etc/postfix/main." Dentro de la unidad organizacional "servicios" creamos un usuario llamado postfix Como un Simple Security Object.cf en caso de que no exista y le ponemos los permisos adecuados.pem smtpd_tls_key_file=/etc/postfix/tls/server.0: OK "Success.cf # chown root:postfix /etc/postfix/main.cf && chmod 644 /etc/postfix/main. si lo desea puede hacer un respaldo de dicho fichero antes de eliminar todo su contenido.pem smtpd_tls_CAfile = /etc/postfix/tls/server.

0. $mydomain.org. 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.0.1/32.0.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 transacción smtp puede cometer un cliente antes de que postfix comience a demorar todas sus respuestas. localhost.1 mydestination = 127. smtpd_soft_error_limit = 1500 # Cuantos errores en una transacción smtp puede cometer un cliente antes de ser desconectado.0.cu mydomain = pri. $myhostname .org.cu myorigin = $mydomain mynetworks_style = host mynetworks = 127.

permit_sasl_authenticated.org.cf. proxy:ldap:/etc/postfix/ldap/ldap-virtual-forward. reject # Restricciones aplicadas a los comandos EHLO/HELO. smtpd_helo_restrictions = reject_invalid_helo_hostname.cu] defer_transport = smtp # Alias Locales alias_database = hash:/etc/aliases alias_maps = $alias_database #alias_maps = $alias_database.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. # reject_unknown_helo_hostname. proxy:ldap:/etc/postfix/ldap/ldap-login-mismatch. proxy:ldap:/etc/postfix/ldap/ldap-local-recipients.cf. proxy:ldap:/etc/postfix/ldap/ldap-sender-access. # reject_non_fqdn_helo_hostname.cf proxy:ldap:/etc/postfix/ldap/ldap-recipient-access. .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_read_maps = proxy:ldap:/etc/postfix/ldap/ldap-local-recipients.cf #no permitir mensajes mayores de 2. 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 unknown_local_recipient_reject_code = 550 show_user_unknown_table_name = yes transport_maps = hash:/etc/postfix/transport relayhost = [mx1.cf.

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

dc=pri.cf # touch /etc/postfix/ldap/ldap-login-mismatch.0.cf # touch /etc/postfix/ldap/ldap-local-recipients.0.dc=pri.dc=org.ou=servicios.dc=org.dc=cu bind_pw = password .cf # chmod 640 /etc/postfix/ldap/ldap-login-mismatch.cf # nano /etc/postfix/ldap/ldap-local-recipients. Creamos el fichero /etc/postfix/ldap/ldap-login-mismatch.dc=pri.cf # chmod 640 /etc/postfix/ldap/ldap-local-recipients.dc=cu query_filter = (mail=%s) result_attribute = uid cache = no bind = yes bind_dn = cn=postfix.dc=cu bind_pw = password Salvamos el fichero Nota: En la última línea 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.dc=cu query_filter = (mail=%s) result_attribute = uid cache = no bind = yes bind_dn = cn=postfix.ou=servicios.dc=org.cf Agregamos: server_host = 127.cf # chown root:postfix /etc/postfix/ldap/ldap-login-mismatch.cf # chown root:postfix /etc/postfix/ldap/ldap-local-recipients.0.dc=pri.dc=org.cf # nano /etc/postfix/ldap/ldap-login-mismatch.# mkdir /etc/postfix/ldap # chmod 750 /etc/postfix/ldap && chown root:postfix /etc/postfix/ldap Creamos el fichero /etc/postfix/ldap/ldap-local-recipients.1 search_base = ou=people.0.1 search_base = ou=people.cf Agregamos: server_host = 127.

cf # touch /etc/postfix/ldap/ldap-sender-access.cf # chmod 640 /etc/postfix/ldap/ldap-recipient-access.cf # chmod 640 /etc/postfix/ldap/ldap-sender-access.dc=pri.ou=servicios.0.1 search_base = ou=people.dc=org.dc=pri.dc=cu bind_pw = password Salvamos el fichero Nota: En la última línea 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.Salvamos el fichero Nota: En la última línea 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.0.dc=org.cf # touch /etc/postfix/ldap/ldap-recipient-access.dc=org.cf # nano /etc/postfix/ldap/ldap-sender-access.1 search_base = ou=people.cf # nano /etc/postfix/ldap/ldap-recipient-access.0.0.dc=pri.cf Agregamos: server_host = 127. Creamos el fichero /etc/postfix/ldap/ldap-sender-access. Creamos el fichero /etc/postfix/ldap/ldap-recipient-access.dc=cu query_filter = (&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailDeliveryMode cache = no .cf # chown root:postfix /etc/postfix/ldap/ldap-sender-access.cf # chown root:postfix /etc/postfix/ldap/ldap-recipient-access.cf Agregamos: server_host = 127.dc=cu query_filter = (&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[L]))(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailDeliveryMode cache = no bind = yes bind_dn = cn=postfix.

dc=pri.pem .pem -days 3650 # chown root:postfix /etc/postfix/tls/server.dc=cu query_filter = (&(objectClass=gosaMailAccount)(gosaMailDeliveryMode=[*L*])(|(mail=%s)(gosaMailAlternateAddress= %s))) result_attribute = gosaMailForwardingAddress cache = no bind = yes bind_dn = cn=postfix.cf # nano /etc/postfix/ldap/ldap-virtual-forward.dc=pri.0. Creamos una carpeta para guardar el certificado autofirmado que usara postfix en TLS.cf Agregamos: server_host = 127.dc=pri.dc=cu bind_pw = password Salvamos el fichero Nota: En la última línea 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.dc=org.pem # chmod 640 /etc/postfix/tls/server.cf # touch /etc/postfix/ldap/ldap-virtual-forward. # mkdir /etc/postfix/tls # chown root:postfix /etc/postfix/tls && chmod 750 /etc/postfix/tls/ Ahora generamos el certificado autofirmado.dc=cu bind_pw = password Salvamos el fichero Nota: En la última línea 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.pem -keyout /etc/postfix/tls/server.ou=servicios.cf # chmod 640 /etc/postfix/ldap/ldap-virtual-forward.cf # chown root:postfix /etc/postfix/ldap/ldap-virtual-forward.ou=servicios.dc=org.1 search_base = ou=people.0. # openssl req -newkey rsa:1024 -x509 -nodes -out /etc/postfix/tls/server.dc=org.bind = yes bind_dn = cn=postfix. Creamos el fichero /etc/postfix/ldap/ldap-virtual-forward.

org.cf en la línea relayhost.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 mensajería.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 . y es el mismo que especificamos en el main.cu * : smtp:[mx1.cu] # postmap /etc/postfix/transport Nota: El nombre mx1.cu/ REJECT Esta cuenta solo puede recibir correos de dominios .org. 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: !/\@*\.

cf # nano /etc/postfix/master.2 cyrus-sasl2-dbg cyrus-sasl2-doc cyrus-doc-2.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.2 cyrus-clients-2.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: !/\@*\. 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.2 cyrus-pop3d-2. dentro de la Unidad Organizacional llamada: servicios le ponemos una clave y la encriptamos usando md5.2 Usando phpldapadmin creamos un usuario llamado cyrus Como un Simple Security Object.2 cyrus-imapd-2.cu/ REJECT Usted solo puede enviar correos a dominios nacionales. Comenzamos a Configurar cyrus .d postfix restart Instalamos el servidor pop (Cyrus-imap) # aptitude install cyrus-admin-2.

conf /etc/cyrus.org.default Editamos /etc/cyrus.conf e imapd.conf # nano /etc/cyrus.pri.conf. Editamos /etc/imapd.Primero hacemos una copia de seguridad de los ficheros (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.conf /etc/imapd.conf.conf) # cp /etc/cyrus.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 .default # cp /etc/imapd.conf Busco la linea: partition-default: /var/spool/cyrus/mail y debajo de esta pongo esta: servername: delta.conf # nano /etc/imapd.

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: .

Organization Preferences 1.d cyrus2.cu ldap:/etc/postfix/ldap/ldap-local-recipients.org.cf # # pepe # # imtest -a pepe -w <contraseña> -m login localhost # # # ####################################################################################### Instalamos el webmail # aptitude install squirrelmail squirrelmail-decode squirrelmail-locales Procedemos a configurar squirrelmail.2 restart ####################################################################################### # openssl s_client -connect localhost:636 -showcerts # # # # postmap -q pepe@pri. # /usr/share/squirrelmail/config/conf.pl Ejecutando dicho script accederemos desde la consola al menú de opciones de configuración.#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. 1. Organization Name : SquirrelMail Cambiamos esta opción por: .

pri.cu : localhost Ahora vamos a la opción 7 .org.org. 4. 2. Organization Logo : . donde ahora escogeremos la opción 2. Organization Name : Jovenclub de Computacion y Electronica Presionamos la tecla S y damos ENTER para salvar el cambio. SMTP Server la dejamos asi: 4. 2. SMTP Server : delta. IMAP Server : delta. IMAP Server la dejamos asi: 4. Server software la dejamos asi: 8./images/sm_logo.cu : localhost Ahora vamos a la opción 8 8.png y además debemos guardarla en la carpeta: /usr/share/squirrelmail/images Presionamos la tecla r para volver a menu principal.1.pri. Server Settings Una vez dentro procedemos a cambiar la configuración del servidor IMAP y SMTP que son las opciones A y B. A. Delimiter :/ : detect : cyrus : other Presionamos la tecla S para salvar Ahora presionamos la tecla B para ir a la configuración del servidor SMTP. Server software Vamos a la opción 9 9.. Delimiter la dejamos asi: 9. Update IMAP Settings : localhost:143 (other) 4.png En esta otra opción podemos cambiar el logotipo de squirrelmail por una imagen hecha por nosotros previamente que debe tener extensión .

7. Vamos a la opción 3 3. SMTP Authentication : none y la dejamos asi: 7.Sent : INBOX/Papelera : INBOX. Trash Folder la dejamos asi: 3. Sent Folder Vamos a la opción 5 5.Trash Presionamos la tecla S y damos ENTER. .Drafts : INBOX/Enviados : INBOX. Presionamos la tecla R para volver al menú principal. SMTP Authentication : login (with IMAP username and password) Presionamos S y Enter para salvar y r para volver al menú principal. Folder Defaults 3. Drafts Folder la dejamos asi: 5. le decimos que No. Drafts Folder : INBOX/Borrador : INBOX. nos saldrá algo como esto: Would you like to use other login and password for all SquirrelMail SMTP connections? [y/N]: Y también le decimos que no. Trash Folder Vamos a la opción 4 4.Nos preguntará si si queremos que auto detecte los mecanismos de autenticación. Sent Folder la dejamos asi: 4. SMTP Authentication : login Luego de dar ENTER después de haber especificado login. finalmente la opción 7 debe quedar así: 7.

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

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

así como su foto.cu Descripción: Servidor de Mensajería Parámetros de RED Dirección IP: Dirección MAC: 192. Agregamos el Nombre completo de nuestro server en mi caso: Nombre del servidor: delta..0. # ln -s /usr/share/squirrelmail /var/www/mail Reiniciamos apache2 # invoke-rc. Correo Electrónico. Entorno. MAC. ahora antes de pasar a la pestaña Correo Electrónico debemos en Administración a la opción que dice: Sistemas.cu Entramos y nos dirigimos a la sección de administración y en ella vamos hasta la opción llamada usuarios: Si ya teníamos una cuenta creada (la que creaste cuando configuraste saslauthd recuerdas?) dicha cuenta te aparecerá ahí.org. Unix. Teléfono Y como seguro ya nos dimos cuentas nos encontramos en la opción Genérico. Accedemos a gosa http://gosa-admin. la pasamos a: Activado. que son otros servicios que se pueden integrar a ldap mediante gosa.168. que es donde podemos poner los datos personales del usuario.org.pri. Fax.. solo que en estos momentos es solo una cuenta en el directorio ldap.Y ahora vamos a crear este enlace simbólico para el squirrelmail. que en mi caso solo ha sido uno de momento.2 00:16:76:BA:76:8A En esta misma pestaña (Genérico) a la derecha hay una opción que dice Modo que aparece por defecto en Bloqueado. de momento no tiene permisos para usar el servicio de correo que es lo que estamos configurando en este manual. pero esto lo trataré en otro manual :) Damos un clic sobre nuestro usuario. activamos poniendo una palomita en la opción a la derecha que dice: Administradores de Acceso IMAP.pri. al hacerlo tendremos frente a nosotros las siguientes opciones: Genérico. ahí podremos editar sus propiedades. dirección IP. etc. Conectividad. Ahora vamos a la pestaña Bases de Datos.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. como tampoco tiene permiso de usar el servicio de Squid y Samba. .) Buscamos el botón que en la ayuda nos dice: Nuevo Servidor y lo pulsamos. Aquí es donde vamos agregar nuestro servidor (nombre. Samba.

org. editamos nuevamente el usuario que ya existe pulsando sobre el y nos dirigimos a la pestaña Correo Electrónico. eso es señal de que ya tiene permiso para usar el servicio de correo.0.pri.cu Ahora lo que nos queda con el webmail es ponerlo los plugins para cambiar la clave los usuarios. deben descompactarlos y copiarlos al directorio /usr/share/squirrelmail/plugins Hay algunos plugins que es necesario hacer algún ajuste en su fichero de configuración que generalmente se llama config.tar. Que los puedes encontrar en.org.gz seguramente. Ahora podremos ver que en la columna propiedades vemos un sobre de carta al lado de nuestro usuario que antes no estaba. Genérico Cuenta Principal: pepe@pri. los plugins que y use son: avelsieve compatibility image_buttons change_ldappass addgraphics quota_usage show_user_and_ip Más otros que trae el propio Squirrelmail.Identificador del Servidor: URL de conexión: Usuario Administrador: Contraseña: Puerto Sieve: delta.pri. Nos aparecerán varias opciones debajo.pri.0. por lo que ya podemos logearnos desde el webmail con dicha cuenta: Accedemos a: https://correo.cu {127. Ahora regresamos a usuarios.php casi siempre este fichero aparece con un nombre más largo y hay que renombrarlo.org. http://www.org Vamos a añadirle a nuestro squirrelmail estos plugins para ello deben bajarlos que estarán comprimidos en ficheros . al llegar aquí pulsamos el botón: Crear cuenta de correo.1:143/novalidate-cert} cyrus ****** 2000 Y pulsamos el botón guardar. pero bueno eso te lo explican en los comentarios dentro del mismo archivo :) .squirrelmail.org.cu Servidor: delta.cu Uso de Cuota Tamaño de cuota: 50 MB Y le voy al botón guardar. aunque pueden utilizar la web de gosa también para cambiar la clave y ponerle alguna pacotilla al webmail para ponerlo bonito.

info 15. image_buttons 14. avelsieve 5. abook_take 2. filters 12. fortune 13. compatibility 9. delete_move_next 10. newmail . message_details 18.Vamos a ejecutar nuevamente el script de configuración del squirrelmail. listcommands 16. # /usr/share/squirrelmail/config/conf. demo 11. calendar 7. change_ldappass 8.pl Vamos a la opción 8 que es la de los plugins y veremos algo como esto: Plugins Installed Plugins Available Plugins: 1. bug_report 6. addgraphics 3. mail_fetch 17. administrator 4.

spamcop 24. show_user_and_ip 23. test 26.19. # aptitude install phpmyadmin Accedemos al mismo y creamos una base de datos y le ponemos un nombre. una vez que tengamos instalados todos estos. entramos al directorio y buscamos un fichero que se llama: config.php de este y especificarle los datos de la base de datos mysql donde este guardara dicha información.dc=org. translate R Return to Main Menu C Turn color on S Save data Q Quit Como podemos ver no hay ningún plugins instalado aun y la lista de plugins disponible aparece por debajo. aunque también puede hacerlo desde gosa. para ello vamos a /usr/share/squirreilmail/plugins y buscamos el plugins. en mi caso es el número 8.dc=cu´. en mi caso la llamaré: mail con este código creamos la tabla onlineusers en la base de datos: . Salvamos y de la misma forma en que instalamos los plugins anteriores instalamos este. lo primero es instalar phpmyadmin si no lo hemos hecho aun. pues vamos a crearla. como hasta el momento no tenemos dicha base de datos. mail_fetch show_user_and_ip que son los plugins que no hay que hacerles ningún tipo de configuración antes de instalarlos. comenzamos por instalar el plugins llamado: compatibility para ello solo tenemos marca el número que este tiene en la lista de plugins y a continuación dar ENTER. online_users 20. En el caso de plugins llamado online_users hay que editar el config. message_details. pues pasamos a otros de uno en uno. sent_subfolders 22. Comanzamos por: change_ldappass que es el plugins necesario para que nuestros usuarios puedan cambiar su contraseña de correo desde el webmail. newmail. administrator. quota_usage 21.php lo editamos y buscamos las liguientes líneas: $ldap_base_dn = ´dc=pri. squirrelspell 25. De esa manera instalamos los plugins: quota_usage. avelsieve. delete_move_next.

7. `ou_right_main` varchar(100) NOT NULL default ''. Allow listing of Global Address Book : false Entramos a la opción 1 y especificamos este valor: mysql://user_mysql:clave@localhost/nombre_base_datos . Ahora vamos a crear un user en mysql y darle acceso a la base datos que acabamos de crear. `nickname` char(128) NOT NULL default ''. leer las indicaciones que dice antes de instalarlo ok! Bueno una cosa más con el squirrelmail. Una vez hecho esto vamos a la konsola y ejecutamos el scripts de configuracion de Squirrelmail y entramos en la opción 9. DSN for Global Address Book : 9. 5. `ou_user` varchar(40) NOT NULL default ''. KEY `ou_right_main` (`ou_right_main`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1. `firstname` char(128) default NULL. Table for Global Address Book : global_abook 10. Allow writing into Global Address Book : false 11.CREATE TABLE IF NOT EXISTS `onlineusers` ( `ou_timestamp` int(15) NOT NULL default '0'. DSN for Preferences : Table for Preferences : userprefs Field for username : user Field for prefs key : prefkey Field for prefs value : prefval 8. para ello usaremos phpmyadmin. Table for Address Book : address 3. `email` char(200) default NULL. DSN for Address Book : 2. Y veremos esto: Database 1. KEY `ou_user` (`ou_user`). CREATE TABLE IF NOT EXISTS `address` ( `owner` char(128) NOT NULL default ''. `label` char(200) default NULL. `lastname` char(128) default NULL.`nickname`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1. Una vez realizado esto regresamos al fichero config. 6. PRIMARY KEY (`ou_timestamp`). vamos añadir otra tabla a la base de datos mysql que creamos hace poco para ser utilizada para la libreta de direcciones de los usuarios. Bueno el trabajo con el resto de los plugins es similar. PRIMARY KEY (`owner`. 4. para ello nuevamente accedemos a la web de phpmyadmin entramos como root y ejecutamos este código para agregar una 2da tabla a la base de datos mail.php del plugins online_users y especificamos estos datos en él salvamos e instalamos el plugins.

se pone exactamente igual ok! Instalamos mailman # aptitude install mailman Editamos el fichero /etc/mailman/mm_cfg.org.cu' DEFAULT_URL_HOST = 'listas.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/ Después reinicio apache2 # /etc/init. nombre_base_datos: Es el nombre de la base de datos Ahora hacemos lo mismo en la opción 3 pero antes de eso nos llegamos nuevamente a phpmyadmin y creamos una 3ra tabla con este código: CREATE TABLE IF NOT EXISTS `userprefs` ( `user` varchar(128) NOT NULL default ''.`prefkey`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1.d/apache2 restart Ejecutamos este comando: # /var/lib/mailman/bin/genaliases Editamos el main.org.py # nano /etc/mailman/mm_cfg.pri.donde: user_mysql: Es el usuario mysql que creamos desde phpmyadmin clave: Es la clave que le pusimos a ese usuario.cf de postfix # nano /etc/postfix/main. `prefval` blob NOT NULL. Ahora si podemos configurar la opción 3 como lo hicimos con la 1.py DEFAULT_EMAIL_HOST = 'pri. `prefkey` varchar(64) NOT NULL default ''.cf . PRIMARY KEY (`user`.

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

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.hostname = "delta.d/cron restart Instalar amavisd-new. 58 * * * * root /usr/bin/isoqlog 1>/dev/null 2>/dev/null # /etc/init. And ClamAV Pero antes de instalarlos. debemos agregar al source. salvamos.cu" maxsender = 100 maxreceiver = 100 maxtotal = 100 maxbyte = 100 Y en en el fichero # /etc/isoqlog/isoqlog. Editamos el fichero /etc/apt/sources.d/15-content_filter_mode El fichero debe quedar así: .pri.list el debian-volatile.org.cu Luego creamos una tarea en el cron así: # nano /etc/crontab Ponemos esta línea al final.list # nano /etc/apt/sources.org. salimos y reiniciamos el cron. SpamAssassin.domains Debe tener una línea con el dominio de correo: pri.

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

0. Pyzor And DCC y Configurar SpamAssassin # aptitude install razor pyzor Edite /etc/spamassassin/local.localdo:10024 *:* LISTEN 4505/amavisd (maste Instalar Razor. Receive mail from the content filter # on localhost port 10026.cf de postfix. dentro de todas las que muestra en pantalla: tcp y tcp 0 0 *:smtp *:* LISTEN 2311/master 0 0 localhost.0.cf smtp inet n n 50 smtpd -o smtpd_proxy_filter=127.reject -o smtpd_data_restrictions= -o mynetworks=127.0.long #-----------.0.smtpd -o smtpd_authorized_xforward_hosts=127.0.# Extensiones no permitidas qr'.cf y agregue estas lineas en el: .1 -o receive_override_options=no_unknown_recipient_checks Salvamos el fichero y reiniciamos postfix # /etc/init.0. # banned ext .(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.Do not modify anything below this line ------------1.1:10024 -o smtpd_client_connection_count_limit=50 # # After-filter SMTP server.\. # nano /etc/postfix/master.0.1 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks.0.1:10025 inet n n . # insure a defined return Y agregamos estas lineas al fichero master.d/postfix restart Ejecutamos: # netstat -tap Y debemos observar 2 lineas como estas. # 127.

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

Sign up to vote on this title
UsefulNot useful