Instalación y Configuración de Postfix con usuarios Virtuales en Debian Lenny

De Wiki Espacio Linux
Saltar a: navegación, buscar

Postfix es un Agente de Transporte de Correo (MTA) de software libre / código abierto, un programa informático para el enrutamiento y envío de correo electrónico, creado con la intención de que sea una alternativa más rápida, fácil de administrar y segura al ampliamente utilizado Sendmail. Anteriormente conocido como VMailer e IBM Secure Mailer, fue originalmente escrito por Wietse Venema durante su estancia en el Thomas J. Watson Research Center de IBM, y continúa siendo desarrollado activamente.

Contenido

Ajustes del Servidor

Primeramente vamos a verificar algunas cosas en nuestro sistema debian que acabamos de instalar. Comenzamos verificando los fichero:

/etc/hosts
/etc/mailname
/etc/hostname
/etc/resolv.conf
/etc/network/interfaces
/etc/apt/sources.list

Información adicional

Como información adicional vamos utilizar los siguientes datos:

Nombre del servidor: delta
Dominio:             gredes.pri.jovenclub.cu
Dirección IP:        192.168.222.19
Máscara de Red:      255.255.255.0
Dirección de RED:    192.168.222.0
Broadcast:           192.168.222.255
Gateway:             192.168.222.1
Servidor DNS:        192.168.222.19

Verifiquemos que en el fichero /etc/hosts aparezcan estas líneas:

$ nano /etc/hosts
127.0.0.1        localhost,localdomain              localhost
192.168.222.19   newton.gredes.pri.jovenclub.cu     newton

Verificamos el fichero /etc/mailname

$ nano /etc/mailname
gredes.pri.jovenclub.cu

Verificamos el fichero /etc/hostname

$ nano /etc/hostname
newton.gredes.pri.jovenclub.cu

Verificamos el /etc/resolv.conf

$ nano /etc/resolv.conf
search gredes.pri.jovenclub.cu
nameserver 192.168.24.4

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.222.19
       netmask 255.255.255.0
       network 192.168.222.0
       broadcast 192.168.222.255
       gateway 192.168.222.1
       # dns-* options are implemented by the resolvconf package, if installed
       dns-nameservers 192.168.24.4
       dns-search gredes.pri.jovenclub.cu

Mirror de instalación

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://mirrors.debian.com/debian lenny main contrib non-free
deb http://debian.debian.com/debian-security lenny/updates main

Salvamos con CTROL+O y salimos con CTROL+X y 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 desintalar exim4 debian nos pedirá que le indiquemos el MTA que sustituirá al exim4, nos preguntará por los disponibles y escojemos postfix que es el que vamos a utilizar finalmente y si 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 de locale a español

$ dpkg-reconfigure locales

Cuando debconf pregunte que locales queremos generar marcamos ALL LOCALE. Después 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 loguearnos. Ya nuestro sistema esta en idioma español

Instalamos otros paquetes

$ aptitude install iptraf
$ aptitude install nmap
$ aptitude install unzip
$ aptitude install unrar
$ aptitude install zip

Instalar y Configurar ldap y Gosa

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

Aqui debemos contestar una serie de proguntas como:

#- Omitir la configuración de OpenLDAP:  No
#- Nombre de dominio: ep.pri.jovenclub.cu
#- Nombre de organización: ep.pri.jovenclub.cu
#- Contraseña del admin: passoword
#- Confirme la contraseña del admin: password
#- Motor de base de datos a utilizar: BDB
#- Borrar la base de datos al purgar slapd:  No
#- Mover la base de datos antigua: Si
#- Permitir LDAP v2: Si

Ahora, para probar que el servicio de slapd está arriba y funcionando utilizamos el comando:

$ ldapsearch -x -b "dc=ep,dc=pri,dc=jovenclub,dc=cu"

y debemos de obtener algo como esto:

# extended LDIF
#
# LDAPv3
# base <dc=ep,dc=pri,dc=jovenclub,dc=cu> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# pri.jovenclub.cu
dn: dc=ep,dc=pri,dc=jovenclub,dc=cu
objectClass: top
objectClass: dcObject
objectClass: organization
o: pri.jovenclub.cu
dc: pri

# admin, ep.pri.jovenclub.cu
dn: cn=admin,dc=ep,dc=pri,dc=jovenclub,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 modulos de php5 para ldap y mysql

$ aptitude install php5 libapache2-mod-php5 php5-gd php5-cli php5-imap php5-ldap php5-mhash php5-mysql  
$ aptitude install php5-imagick imagemagick graphicsmagick-imagemagick-compat php5-recode php5-snmp fping smarty  
$ aptitude install wwwconfig-common smarty-gettext libcrypt-smbhash-perl php-pear php-db

Instalamos phpldapadmin

$ aptitude install phpldapadmin

Para acceder a la web de phpldap admin, usamos alguna de las URL siguientes:

http://localhost/phpldapadmin

http://192.168.222.14/ldapadmin

http://delta.ep.pri.jovenclub.cu/phpldapadmin


Para logearnos en la web usamos:

login: cn=admin,dc=ep,dc=jcpn,dc=pri,dc=jovenclub,dc=cu
Clave: ******

Instalamos gosa

$ aptitude install gosa gosa-schema 

Una vez instalado gosa, podemos acceder a su interfaz web para su configuración por:

http://delta.ep.pri.jovenclub.cu/gosa

Pero antes de continuar, debemos asegurarnos que en el fichero de configuración 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 ahi ok!. También los pueden descargar desde aqui

Para asegurarnos que los squemas 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 también al fichero slapd.conf estas lineas:

$ nano /etc/ldap/slapd.conf 
# Habilitar el chequeo de esquemas.
# schemacheck on

loglevel     -1

# Indexing options for database #1
index   default                                               sub
index   uid,mail                                              eq
index   gosaMailAlternateAddress,gosaMailForwardingAddress    eq
index   cn,sn,givenName,ou                                    pres,eq,sub
index   objectClass                                           pres,eq
index   uidNumber,gidNumber,memberuid                         eq
index   gosaSubtreeACL,gosaObject,gosaUser                    pres,eq

# Indexing for Samba 3
index   sambaSID                                              eq
index   sambaPrimaryGroupSID                                  eq
index   sambaDomainName                                       eq

# Indexing for DHCP
index  dhcpHWAddress                                          eq
index  dhcpClassData                                          eq

# Indexing for DNS
index  zoneName                                               eq
index  relativeDomainName                                     eq

Reiniciamos ldap

$ /etc/init.d/slapd restart

Acceder a Gosa

Vamos a la web de gosa y procedemos a su configuración. Como nos indica en el 1er paso, debemos crear este fichero:

$ echo -n 4ab0c6aa1b931d18808487151dcc824e > /tmp/gosa.auth 

Luego pulsamos el botón siguiente. La próxima página debemos escoger el idioma, seleccionamos Español y seguimos.

En el próximo paso, gosa comprobará algunos paquetes y parámetros necesarios para trabajar, 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 acceptar desde luego para poder continuar.

Conexión LDAP

Nombre de la localización:   MailServer
Conectar a la URL: ldap://localhost:389
Conexión TLS: No
Base:  dc=ep,dc=pri,dc=jovenclub,dc=cu
DN del administrador:  cn=admin,dc=ep,dc=pri,dc=jovenclub,dc=cu
Contraseña de administrador: *****

Usar grupos conformes a rfc2307bis:  No

Pulsamos siguiente.

En la otra página nos aparecerá:

Parametros específicos del esquema
Activar validación de esquema cuando se registre: Si

Pulsamos continuar.

En el próximo paso, solo cambiamos estas opciones, (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 la próxima página lo dejo todo como esta.

Pulsamos Siguiente

En esta página 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 botón: Crear que aparece en la opción:

Comprobando súper administrador: 

Especificamos el nombre de usuario y una clave, en mi caso:

Nombre:   System administrator
Identificador (ID) de usuario:  admin
Contraseña: *****
Contraseña (de nuevo): ***** 

Y pulsamos el botón aplicar.

Ahora ya podemos seguir adelante.

Pulsamos continuar.

En la siguiente página: Avisos y sugerencias son cosas opcionales, de modo que no hare nada de eso, desmarco todas las opciones seleccionadas con palomas y marco No donde me permita escoger y voy a la suiguiente página.

Pulsamos continuar.

La siguiente página ya es el paso final, aqui 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, para ello pulsamos el botón: Descargar configuración.

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

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 subdominio: ep.pri.jovenclub.cu

Configurando el DNS

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

ep.pri.jovenclub.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 ep.pri.jovenclub.cu
       zone "ep.pri.jovenclub.cu" {
       type master;
       file "/var/cache/bind/ep.pri.jovenclub.cu";
       allow-transfer { 192.168.24.4; 192.168.24.6; };
       notify yes;
       };
//Zona inversa para la RED 192.168.222.0/24
       zone "222.168.192.in-addr.arpa" {
       type master;
       file "/var/cache/bind/222.168.192.in-addr.arpa";
       // allow-transfer { 192.168.24.4; 192.168.24.6; };
       // notify yes;
       };

Salvamos y salimos.

Creamos los ficheros de las zonas (directa e inversa) y le ponemos los permisos.

# touch /var/cache/bind/ep.pri.jovenclub.cu
# touch /var/cache/bind/222.168.192.in-addr.arpa

# chown bind.root /var/cache/bind/ep.pri.jovenclub.cu && chown bind.root /var/cache/bind/222.168.192.in-addr.arpa
# chmod 640 /var/cache/bind/ep.pri.jovenclub.cu && chmod 640 /var/cache/bind/222.168.192.in-addr.arpa

Editamos el fichero de la zona directa:

# nano /var/cache/bind/ep.pri.jovenclub.cu

$ORIGIN ep.pri.jovenclub.cu.
$TTL 86400
@           21600   IN   SOA    delta.ep.pri.jovenclub.cu. root.ep.pri.jovenclub.cu. ( 2009030801 3600 3600   3600000 86400 )
             21600   IN   NS   delta.ep.pri.jovenclub.cu.
             21600   IN   MX   5 mx1.ep.pri.jovenclub.cu.

delta                21600   IN   A      192.168.222.14
mx1                 21600   IN   CNAME  delta
gosa-admin     21600   IN   CNAME  delta
correoweb       21600   IN   CNAME  delta
listas               21600   IN   CNAME  delta
ldap-admin      21600   IN   CNAME  delta
php-admin       21600   IN   CNAME  delta
jabber             21600   IN   CNAME  delta
proxy              21600   IN   CNAME  delta
tiempo            21600   IN   CNAME  delta
foro                21600   IN   CNAME  delta

Salvamos y salimos.

Editamos el fichero de la zona inversa.

# nano /var/cache/bind/222.168.192.in-addr.arpa

$ttl 86400
@        IN     SOA     delta.ep.pri.jovenclub.cu. root.ep.pri.jovenclub.cu. (
                       2009030801
                       3600
                       3600
                       604800
                       1200 )
@       IN      NS      delta.ep.pri.jovenclub.cu.
14      IN      PTR     delta.ep.pri.jovenclub.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 líneas que aparecen comentadas:

      // forwarders {
      //      0.0.0.0;
      // };

y las dejamos así:

forwarders { 192.168.24.4; 192.168.24.6; };

Salvamos y salimos.

Reiniciamos el bind9.

# invoke-rc.d bind9 restart

Miramos en syslog a ver si hay algún error.

# tail -f /var/log/syslog

Debemos ver algo como esto:

Mar  8 19:28:45 delta named[7660]: shutting down: flushing changes
Mar  8 19:28:45 delta named[7660]: stopping command channel on 127.0.0.1#953
Mar  8 19:28:45 delta named[7660]: stopping command channel on ::1#953
Mar  8 19:28:45 delta named[7660]: no longer listening on ::#53
Mar  8 19:28:45 delta named[7660]: no longer listening on 127.0.0.1#53
Mar  8 19:28:45 delta named[7660]: no longer listening on 192.168.222.14#53
Mar  8 19:28:45 delta named[7660]: exiting
Mar  8 19:28:47 delta named[7750]: starting BIND 9.3.4-P1.1 -u bind
Mar  8 19:28:47 delta named[7750]: found 1 CPU, using 1 worker thread
Mar  8 19:28:47 delta named[7750]: loading configuration from '/etc/bind/named.conf'
Mar  8 19:28:47 delta named[7750]: listening on IPv6 interfaces, port 53
Mar  8 19:28:47 delta named[7750]: listening on IPv4 interface lo, 127.0.0.1#53
Mar  8 19:28:47 delta named[7750]: listening on IPv4 interface eth0, 192.168.222.14#53
Mar  8 19:28:47 delta named[7750]: command channel listening on 127.0.0.1#953
Mar  8 19:28:47 delta named[7750]: command channel listening on ::1#953
Mar  8 19:28:47 delta named[7750]: zone 0.in-addr.arpa/IN: loaded serial 1
Mar  8 19:28:47 delta named[7750]: zone 127.in-addr.arpa/IN: loaded serial 1
Mar  8 19:28:47 delta named[7750]: zone 222.168.192.in-addr.arpa/IN: loaded serial 2009030801
Mar  8 19:28:47 delta named[7750]: zone 255.in-addr.arpa/IN: loaded serial 1
Mar  8 19:28:47 delta named[7750]: zone ep.pri.jovenclub.cu/IN: loaded serial 2009030801
Mar  8 19:28:47 delta named[7750]: zone localhost/IN: loaded serial 1
Mar  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 ahi y especificamos la ip de nuestro propio server que es donde acabamos de configuar el DNS. Debe quedar así:

search ep.pri.jovenclub.cu
nameserver 192.168.222.14

Salvamos y salimos.

Ahora usaremos la herramienta nslookup para consultar nuestro dns.

Desde la consola y como root ejecutamos el comando:

# nslookup proxy.ep.pri.jovenclub.cu

Y si todo ha salido bien debemos obtener:

delta:/home# nslookup proxy.ep.pri.jovenclub.cu Server: 192.168.222.14 Address: 192.168.222.14#53

proxy.ep.pri.jovenclub.cu canonical name = delta.ep.pri.jovenclub.cu. Name: delta.ep.pri.jovenclub.cu Address: 192.168.222.14

Podemos también hacer pruebas con nombres fuera de nuestra RED como por ejemplo:

delta:/home# nslookup www.lawebdelprogramador.net Server: 192.168.222.14 Address: 192.168.222.14#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 subdominio ep.pri.jovenclub.cu

Configurando VirtualHost para Gosa

Configurando saslauthd para autenticar postfix contra Ldap

Instalando Postfix

Instalando el servidor POP

Instalación y configuración del Webmail

Mailman y ntp

Estadisticas del correo

Controlando el Spam

Herramientas personales