Instalación y Configuración de Postfix con usuarios Virtuales en Debian Lenny
De Wiki Espacio Linux
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.
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://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
