Howto Sistema de correo Qmail, Openldap en debian etch (qmail-ldap)

Septiembre 23, 2007

Esta es la primera parte de la instalacion y configuracion de un sistema de correo con los servicios smtp, pop e imap para lo cual se utilizara qmail como mta y openldap (qmail-ldap) para autentificar las cuentas. Esta instalacion se realizara sobre Debian Etch R1
(La segunda parte contemplara los filtros de antivirus y spam)

DEPENDENCIAS NECESARIAS
#apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto

INSTALACION DE LDAP
#apt-get install slapd ldap-utils

RESPONDER

Contraseña del admin : 123456
Confirme la contraseña del admin : 123456

RECONFIGURACION
#dpkg-reconfigure slapd

Desea omitir la configuracion de ldap : no
Introdusca el nombre de dominio DNS : silcom.com
Instrodusca el nombre de su organizacion : silcom.com
Contraseña del administrador : 123456
Verificacion de la contraseña : 123456
Motor de base de datos a utilizar : BDB
Desea que se borre la base de datos cuando purge el paquete slapd :NO
Desea mover la base de datos antigua : SI
Permitir el protocolo LDAPV2 : si

COMPROBAR LA INSTALACION
#ldapsearch -x -b “dc=silcom,dc=com”

RESULTADO CORRECTO

# extended LDIF
#
# LDAPv3
# base <“dc=silcom,dc=com”> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 34 Invalid DN syntax
text: invalid DN

INSTALAMOS APACHE ,PHP ,LDAPADMIN

#apt-get install apache php5-ldap phpldapadmin
INSTALACION DE PAQUETES BASICOS

UCSPI-TCP
#cd /usr/local/src/

#tar zxvf ucspi-tcp-0.88.tar.gz
#cd ucspi-tcp-0.88
#wget http://lomu.homelinux.com/0.88-errno.patch
#patch -p0 < 0.88-errno.patch
#make
#make setup check

DAEMONTOOLS
#tar zxvf daemontools-0.76.tar.gz
#cd admin/daemontools-0.76
#wget http://lomu.homelinux.com/0.76-errno.patch
#patch -p0 < 0.76-errno.patch
#./package/install

INSTALANDO QMAIL CON SOPORTE PARA LDAP

QMAIL LDAP
#apt-get install zlib-bin
#tar -zxvf qmail-1.03.tar.gz
#gunzip qmail-ldap-1.03-20060201.patch.gz
#cd qmail-1.03
#patch -p1 <../qmail-ldap-1.03-20060201.patch
#cp qmail.schema /etc/ldap/schema

ADICIONAR SCHEMA DE QMAIL A LDAP

ADICIONAR
#vi /etc/ldap/slapd.conf
include /etc/ldap/schema/qmail.schema

REINICIAR

#/etc/init.d/slapd restart

LIBRERIAS ANTES DE COMPILAR
#apt-get install libssl-dev libldap2-dev zlib1g-dev

AGREGAR USUARIOS REQUERIDOS POR QMAIL

#groupadd nofiles
#useradd -g nofiles -d /var/qmail/alias alias
#useradd -g nofiles -d /var/qmail qmaild
#useradd -g nofiles -d /var/qmail qmaill
#useradd -g nofiles -d /var/qmail qmailp
#groupadd qmail
#useradd -g qmail -d /var/qmail qmailq
#useradd -g qmail -d /var/qmail qmailr
#useradd -g qmail -d /var/qmail qmails
#groupadd vmail -g 2110
#useradd vmail -u 11184 -g vmail -d /home/vmail -s /bin/true
#mkdir /home/vmail
#mkdir /home/vmail/silcom.com.pe
#chown -R vmail:vmail /home/vmail
#chown -R vmail:vmail /home/vmail/silcom.com.pe
#cd /usr/local/src/qmail-1.03
#vi Makefile

descomentar : LDAPFLAGS=-DQLDAP_CLUSTER -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS -DQMQP_COMPRESS -DSMTPEXECCHECK -DALTQUEUE
queda igual : LDAPLIBS=-L/usr/local/lib -lldap -llber
queda igual : LDAPINCLUDES=-I/usr/local/include
descomentar : ZLIB=-lz
descomentar : TLS=-DTLS_REMOTE -DTLS_SMTPD
descomentar : TLSINCLUDES=-I/usr/local/include
descomentar : TLSLIBS=-L/usr/local/lib -lssl -lcrypto
descomentar : OPENSSLBIN=/usr/local/bin/openssl
queda igual : MNW=-DMAKE_NETSCAPE_WORK
descomentar : MDIRMAKE=-DAUTOMAILDIRMAKE
descomentar : HDIRMAKE=-DAUTOHOMEDIRMAKE
descomentar : SHADOWLIBS=-lcrypt
descomentar : DEBUG=-DDEBUG

#vi qmail-ldap.h

CAMBIAR

define LDAP_HOMEDIR “homeDirectory”

POR

define LDAP_HOMEDIR “homeDirectoryfake”

COMPILACION DE QMAIL

#make setup check

ARCHIVOS DE CONFIGURACION

#cd /var/qmail/control
#echo silcom.com.pe > /var/qmail/control/me

#echo silcom.com.pe > /var/qmail/control/rcpthosts

#echo silcom.com.pe > /var/qmail/control/locals

IPLDAP
#echo 127.0.0.1 > /var/qmail/control/ldapserver

LDAP Base DN
#echo ou=qmail,dc=silcom,dc=com > /var/qmail/control/ldapbasedn

OBJECT CLASS QMAIL
#echo qmailUser > /var/qmail/control/ldapobjectclass

PASSWD LDAP
#echo 123456 >/var/qmail/control/ldappassword

LOGIN LDAP
#echo cn=admin,dc=silcom,dc=com > /var/qmail/control/ldaplogin

QUE NO BUSQUE LAS CONTRASEÑAS EN ETC
#echo 0 >/var/qmail/control/ldaplocaldelivery

LDAP CLUSTER NO
#echo 0 >/var/qmail/control/ldapcluster

CUOTA POR DEFECTO 10MB
#echo 10000000 >/var/qmail/control/defaultquotasize

NORMERO DE CORREOS QUE SE PUEDE TENER
#echo 10000 >/var/qmail/control/defaultquotacount

MENSAJE CON EL LIMITE
#echo Tu buzon se esta saturando, haz espacio si quieres seguir recibiendo correos > /var/qmail/control/quotawarning

TODA LA CONFIGURACION DE OBTIENE DE LDAP
#echo ldaponly > /var/qmail/control/ldapdefaultdotmode

BUZONES DE USUARIOS
#echo /home/vmail/ > /var/qmail/control/ldapmessagestore

UID DE USER VMAIL
#echo 11184 > /var/qmail/control/ldapuid

GID USUARIO VMAIL
#echo 2110 > /var/qmail/control/ldapgid

TIEMPO MAXIMO DE BUSQUEDA
#echo 30 > /var/qmail/control/ldaptimeout

TEXTO PARA RECHASOS
#echo Para mayor informacion escribir a webmaster@silcom.com.pe > /var/qmail/control/custombouncetext

LISTAS RBL
#touch /var/qmail/control/rbllist

IP QMAIL REMOTE
#echo 0.0.0.0 >/var/qmail/control/outgoingip

FORMATO PARA LOS BUSZONES DE USUARIOS
#echo ./Maildir/ >/var/qmail/control/defaultdelivery

INGRESAR A LDAPADMIN

http://tunroip/phpldapadmin/

En la raiz : agregar objectClass = qmailUser y utributo mail de esta forma :

qmail-ldap1

qmail-ldap2

qmail-ldap3

qmail-ldap4

qmail-ldap5

Ahora crear la siguiente estructura de unidades organizacionales

-agregar ou = qmail
- agregar ou = silcom.com.pe
- agregar ou = users

quedara asi :

qmail-ldap6

INICIAR SERVICIOS

RC

#cd /var/qmail
#touch rc
#vi rc

#!/bin/sh
# Taken from LWQ by Dave Sill
# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env – PATH=”/var/qmail/bin:$PATH” \
qmail-start “`cat /var/qmail/control/defaultdelivery`”
##########################

ASIGNAR PERMISOS

chmod 755 /var/qmail/rc
mkdir /var/log/qmail

QMAILCONF – DJBDNS

#cd /usr/local
#tar xvfz djbdns-1.05.tar.gz
#cd djbdns-1.05
#echo gcc -O2 -include /usr/include/errno.h > conf-cc
#make
#make setup check

#tar xvfz qmail-conf-0.60.tar.gz
#cd qmail-conf-0.60
#make -f Makefile.ini djbdns=../djbdns-1.05/
#echo gcc -O2 -include /usr/include/errno.h > conf-cc
#make setup check

MAILDROP
#apt-get install libpcre3-dev g++
#tar -xvf maildrop-2.0.1.20051115.tar
#cd maildrop-2.0.1.20051115

#./configure
#make
#make install

QMAIL DELIVERI
#cd /
#/var/qmail/bin/qmail-delivery-conf qmaill /var/qmail/service/qmail
#ln -s /var/qmail/service/qmail /service
#svc -u /service/qmail

#svstat /service/qmail

SI TODO ESTA BIEN DEBERIA SALIR ESTO:

/service/qmail: up (pid 443) 2401 seconds

QMAIL SMTP
#/var/qmail/bin/qmail-smtpd-conf qmaild qmaill /var/qmail/service/smtpd
#ln -s /var/qmail/service/smtpd /service
#svc -u /service/smtpd
#svstat /service/smtpd

SI TODO ESTA BIEN DEBERIA SALIR ESTO:

/service/smtpd: up (pid 469) 1 seconds

#mv /etc/init.d/exim4 /root

DEFINIR RELAY
#vi /service/smtpd/tcp

127.:allow,RELAYCLIENT=”"
200.62.171.:allow,RELAYCLIENT=”"
192.168.1.:allow,RELAYCLIENT=”"
:allow

#echo “3″> /service/smtpd/env/LOGLEVEL
#cd /service/smtpd

#make

SI TODO ESTA BIEN DEBERIA SALIR ESTO:

/usr/local/bin/tcprules tcp.cdb tcp.tmp < tcp

SI SALE UN ERROR HAY QUE TENER CUIDADO CON LAS COMILLAS NO SE COPIAN BIEN

DIRMAKER
#vi /var/qmail/bin/dirmaker.sh

#!/bin/sh
/bin/mkdir -m 700 -p $1/Maildir
/bin/mkdir -m 700 -p $1/Maildir/new
/bin/mkdir -m 700 -p $1/Maildir/cur
/bin/mkdir -m 700 -p $1/Maildir/tmp

#######################

ASIGNANDO PERMISOS

#chmod +x /var/qmail/bin/dirmaker.sh
#echo /var/qmail/bin/dirmaker.sh > /var/qmail/control/dirmaker

SERVICIO POP3
#cd /

(Todo es una linea)
/var/qmail/bin/qmail-pop3d-conf /var/qmail/bin/auth_pop qmaill /var/qmail/service/pop3d

#cd /var/qmail/service/pop3d
#vi tcp

192.168.1.0:allow
200.62.171.0:allow

#make

SI TODO ESTA BIEN DEBERIA SALIR ESTO:

/usr/local/bin/tcprules tcp.cdb tcp.tmp < tcp

#ln -s /var/qmail/service/pop3d /service
#echo “3″> /service/pop3d/env/POP3_LOGLEVEL
#svstat /service/pop3d /service/pop3d/log

SI TODO ESTA BIEN DEBERIA SALIR ESTO:

/service/pop3d: up (pid 1437) 8 seconds
/service/pop3d/log: up (pid 1436) 8 seconds

VERIFICAR LOGS DE POP3

#tail -f /service/pop3d/log/main/current | tai64nlocal

SERVICIO IMAP

#apt-get install libgdbm-dev

Imap mecesita ser compilado previamente con un usuario comun (no root) para eso cree un usuario joliva e inicie sesion con el en una consola aparte para no tener confuciones y se ejecuta lo siguiente:

#cd /usr/local/src
#tar -xvf courier-imap-3.0.8.tar
#chown -R joliva.joliva courier*
#su joliva
#cd courier-imap-3.0.8

(Cuidado con lo que tenemos antes de enable-unicode. Pegado a “ena” tenemos dos guiones juntos, en el blog no se aprecia bien pero sería “- -enable-unicode”, juntando los dos guiones seguidos. )

#./configure –enable-unicode=iso-8859-1,utf-8
#make
#make check
#exit
#cd courier-imap-3.0.8
#make install
#make install-configure

#cp /usr/lib/courier-imap/etc/imapd.dist /etc/imapd.config
#vi /etc/imapd.config

MAXPERIP=40

CREAR DIRECTORIO DE INICIO
#mkdir /usr/lib/courier-imap/runscript
#vi /usr/lib/courier-imap/runscript/run

#!/bin/sh

IPADDR=”0.0.0.0″
exec_prefix=/usr/lib/courier-imap
. /etc/imapd.config

exec tcpserver -c 100 -l 0 -v -R $IPADDR imap \
${exec_prefix}/sbin/imaplogin \
/var/qmail/bin/auth_imap \
${exec_prefix}/bin/imapd Maildir 2>&1

##############################

ASIGNAR PERMISOS

#chmod +x /usr/lib/courier-imap/runscript/run
#ln -s /usr/lib/courier-imap/runscript /service/imapd
ACTIVAR SERVICIO IMAP
#svstat /service/imapd

SI TODO ESTA CORRECTO SE OBTIENE ALGO ASI:
/service/imapd: up (pid 92820) 20 seconds

AUTORESPONDER

#cd /usr/local/src
#tar -xzf autorespond-2.0.4.tar.gz
#cd autorespond-2.0.4
#patch -p1 < ../autorespond-2.0.4-2.0.5.patch
#make
#make install

MANEJADOR DE LISTAS EMZL
#cd /usr/local/src
#tar -xzf ezmlm-0.53.tar.gz
#tar -xzf ezmlm-idx-5.0.2.tar.gz
#mv ezmlm-idx-5.0.2/* ezmlm-0.53/
#cd ezmlm-0.53
#patch -p0 < idx.patch
#make
#make setup

REINICIAR

#shutdown -r now

PRUEBAS DE LOS PUERTOS

#telnet localhost 25
#telnet localhost 110
#telnet localhost 143

CREAR USUARIOS

CREAR joliva.ldif con el siguiente formato e importamos el archivo atravez de phpldapadmin

dn: cn=joliva,ou=users,ou=silcom.com.pe,ou=qmail,dc=silcom,dc=com
cn: joliva
ou: users
sn: joliva
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: qmailUser
mail: joliva@silcom.com.pe
mailHost: mail.silcom.com.pe
mailQuotaSize: 0
mailQuotaCount: 0
accountStatus: active
uid: joliva
mailMessageStore: silcom.com.pe/joliva
userPassword: {MD5}RMe+SCJuutXcqCFmdMrWKw==

IMPORTAR EL ARCHIVO LDIF DESDE PHPLDAPADMIN Y CAMBIAR LA CONTRASEÑA

userPassword : 123456

qmail-ldap7

REALIZAR PRUEBAS DE INGRESO

#telnet 127.0.0.1 143


a001 login joliva 123456
a002 select inbox

Si todo esta correcto podremos loguearnos atravez de imap , y se debera haber creado buzon en /home/vmail/joliva

Archivos de configuracion y programas
http://www.silcom.com.pe/soft/qmail-ldap-etch/

Enlaces de referencia
http://www.qmail-ldap.org/wiki/Installation_Guide
http://www.lomunet.org/


Instalacion Mono sobre Centos 5

Septiembre 1, 2007

Aqui explico como instalar mono con los repositorios de AL sobre rhel5 , espero que le sirva a mas de uno.

a) Configuracion de repositorio

wget http://www.alcancelibre.org/al/AL-RPM-KEY
rpm –import AL-RPM-KEY
vi /etc/yum.repos.d/CentOS-Base.repo

[AL-Desktop]
name=Enterprise Linux $releasever – $basearch – AL Desktop
mirrorlist=http://www.alcancelibre.org/al/el5/al-desktop
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY

 b) Instalación y configuración de mono sobre apache web server

 yum -y install mono-core mono_web xsp mod_mono
vi /etc/httpd/conf.d/mod_mono.conf

Nota: debajo de la primera linea colorar

 Alias /demo “/usr/lib/xsp/test”
AddMonoApplications default “/demo:/usr/lib/xsp/test”
<Location /demo>
  SetHandler mono
</Location>

 

#service httpd restart

 Si todo salio bien cuando ingresemos a  http://localhost/demo/
ingresaremos a los demos de .net en nuestro apache

Consideraciones: La instalacion se realizo sobre un sistema limpio , como veran se omitio la instalacion de httpd