Instalar Servidor de correo (qmail + vpopmail + courier-imap) en Debian r4.0 – stable (etch)

12-06-2007 > GurX


Mostrar o escribir comentarios (dudas) sobre este artículo

Sistema:
SO Debian Etch
Intel Celeron 2600+ (arquitectura x86)


Hace unos días que migré un servidor FreeBSD 6.2 a la nueva distribución estable de Linux,  la Debian Etch. No tuve ningún problema al instalar y configurar los servicios que tenía en el FreeBSD (apache, bind, proftd-mysql,...) excepto con el correo.. Mi predilección por los demonios de correo siempre es utilizar el servicio de mail "qmail" con el soporte para múltiple dominios "vpopmail". El problema lo encontré al instalar courier-imap juntamente con estos servicios. El courier-imap que viene preinstalado con el apt, no tiene soporte para la autentificación en vpopmail. Con lo que tendremos que hacer la compilación del paquete manualmente.

La siguiente la guía esta creada a partir de fragmentos de otros blogs y pequeños trozos de código que he tenido que rectificar para que me funcionase en mi Debian. También he adaptado el howto para que instale todas las dependencias en caso de que tengamos una instalación mínima.

Una vez instalado el Debian Etch-Stable, procedemos a la instalación de qmail con soporte a vpopmail. Recordad que estamos trabajando con el usuario root. Editamos el sources.list para cambiar los repositorios:
> cp /etc/apt/sources.list /etc/apt/sources.list.bak
> rm /etc/apt/sources.list
> vim /etc/apt/sources.list

# Repositorios de España, pero sirven desde cualquier país
deb http://ftp.es.debian.org/Debian etch main contrib
deb-src http://ftp.es.debian.org/Debian etch main contrib

deb ftp://ftp.rediris.es/Debian/ etch main non-free contrib
deb-src ftp://ftp.rediris.es/Debian/ etch main non-free contrib

deb http://debian.iuculano.it/apt  etch main contrib non-free
deb-src http://debian.iuculano.it/apt  etch main contrib non-free

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib


Nos bajamos la clave para los paquetes de “iuculano" i actualizamos la lista local:
> wget http://debian.iuculano.it/AE3BE9AA.gpg -O- | apt-key add -
> apt-get update


En primer paso, instalamos el servidor de base de datos Mysql-Server. Esta servicio es necesario para guardar información correspondiente al vpopmail.
> apt-get install mysql-server-5.0

Si no lo teníamos instalado, tendremos que asignarle una clave al usuario root de mysql. Seguidamente crearemos una tabla y un usuario para vpopmail.
> mysqladmin -u root password 'xxx'      (xxx es la clave que tendrá el usuario root del mysql)
> mysqladmin -u root -p create vpopmail
> mysql -p -u root
> GRANT ALL PRIVILEGES ON vpopmail . * TO 'vpopmail'@'localhost' IDENTIFIED BY 'yyy' WITH GRANT OPTION ;    (yyy es la clave para el usuario vpopmail de mysql)
> exit;


Continuaremos instalando los paquetes qmail, vpopmail y otros paquetes útiles como spamassasin.
> apt-get install qmail-src spamassassin vpopmail-mysql spamc razor pyzor ucspi-tcp-src libmailtools-perl libmail-spf-query-perl libsys-hostname-long-perl

Durante el proceso de instalación nos saldrán unas preguntas. Repondremos lo siguiente:
aceptar
aceptar
build-ucspi-tcp > enter


Finalmente nos saldrá el siguiente mensaje:
start-stop-daemon: stat /usr/bin/tcpserver: No such file or directory (No such file or directory)

Es completamente normal, vamos a proceder a construir el ucspi y el qmail (observad que también pongo las respuestas a las preguntas que salen):
> build-ucspi-tcp
Do you want to remove all files in /tmp/ucspi-tcp,
except ucspi-tcp_0.88-10_i386.deb now? [Yn]
Y
Do you want to install ucspi-tcp_0.88-10_i386.deb now? [Yn] Y
Do you want to purge ucspi-tcp-src now? [yN] N

Construimos el Qmail.
> build-qmail
Do you want to install qmail_1.03-45iuculano2_i386.deb now? [Yn] Y
Do you want to purge qmail-src now? [yN] N

Nos aparecerá un error de dependencias similar a éste:
dpkg: acerca de qmail_1.03-45iuculano2_i386.deb que contiene qmail:
 qmail entra en conflicto con mail-transport-agent
  exim4-daemon-light proporciona mail-transport-agent y es instalado.
dpkg: error al procesar qmail_1.03-45iuculano2_i386.deb (--install):
 paquetes en conflicto - no se instalará qmail
Se encontraron errores al procesar:
 qmail_1.03-45iuculano2_i386.deb


Solucionaremos este conflicto de dependencias eliminando el agente de correo que trae Debian por defecto.
> dpkg --force-depends --purge exim4 exim4-base exim4-config exim4-daemon-light
> dpkg -i /tmp/qmail/qmai*.deb


En el fichero llamado “me", pondremos los nombres de los dominios de correo.
> echo miki.net > /etc/qmail/me

Posteriormente editamos el fichero de configuración de vpopmail y pondremos los datos de acceso a la base de datos vpopmail . Quedará similar a lo siguiente:
> vim /etc/vpopmail/vpopmail.mysql
localhost|0|vpopmail|yyy|vpopmail


Reiniciaremos los demonios :
> /etc/init.d/qmail restart && /etc/init.d/vpopmail-mysql restart

Ya tenemos qmail y vpopmail funcionando, checkearemos que todo va bien.
> apt-get install recode nmap
> vadddomain miki.net      (añadimos dominio miki.net)

Please enter password for postmaster:
enter password again:
Entry is out of order: abus
Entry is out of order: anonymou

> ls -la /var/lib/vpopmail/domains/
total 12
drwxr-xr-x 3 vpopmail vchkpw 4096 2007-06-07 22:50 .
drwxr-xr-x 6 root     root   4096 2007-06-07 22:39 ..
drwx------ 3 vpopmail vchkpw 4096 2007-06-07 22:50 miki.net

> telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 miki.net ESMTP

HELO
250 miki.net
EHLO
250-miki.net
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6


Opcionalmente podemos instalar paquete de soporte al correo, cómo la administración via Web (qmailadmin) o un antivirus (clamav). Recomiendo buscar más información en internet. Hay mucha referente a estos paquetes.
> apt-get install apache2
> apt-get install qmailadmin autorespond ezmlm-src clamav clamav-daemon clamav-freshclam


También opcionalmente podemos restaurar el sources.list, pero no dispondremos de actualizaciones.
> cp /etc/apt/sources.list.bak /etc/apt/sources.list
> apt-get update


Cómo ya he dicho, instalar courier-imap es un proceso más lento ya que tendremos que compilar el paquete desde las fuentes. Bajamos y compilaremos el paquete manualmente, por ejemplo, utilizando la recopilación de este software que ha hecho qmailrocks y lo instalaremos como si se tratara de la distribución red-hat. Si lo hacemos como Debian No funcionará. Descomprimiremos el software e instalamos courier-auth:
> wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
> tar -zxvf qmailrocks.tar.gz
> cd qmailrocks
> apt-get install bzip2
> tar jxvf courier-authlib-0.55.tar.bz2
> cd courier-authlib-0.55
> apt-get install g++
> apt-get install libgdbm-dev libqdbm14
> ./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authvchkpw --without-authldap --without-authmysql --disable-root-check --with-ssl --with-authchangepwdir=/usr/local/libexec/authlib --with-redhat
> make && make check
> make install-strip && make install-configure
> ln -s /usr/local/sbin/authdaemond /etc/init.d/authdaemond
> update-rc.d authdaemond defaults
> /etc/init.d/authdaemond start


Seguimos a instalar el paquete courier-imap. Veremos como el paquete couirer-imap no se puede compilar con permisos de root, así que tendremos que crear un usuario en caso de que no tengamos ninguno.
> cd ..
> tar jxvf courier-imap-4.0.2.tar.bz2
> adduser temporal
> chown -R temporal:temporal ./courier-imap-4.0.2*
> su temporal
> cd /root/qmailrocks/courier-imap-4.0.2/
> ./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authvchkpw --without-authldap --without-authmysql --disable-root-check --with-ssl --with-authchangepwdir=/usr/local/libexec/authlib --with-redhat
> exit
> deluser temporal
> cd courier-imap-4.0.2
> make install-strip && make install-configure
> /usr/local/sbin/mkimapdcert
> vim /usr/local/etc/imapd    (Nos aseguramos que en el fichero aparezca esta línea)
IMAPDSTART=YES
> vim /usr/local/etc/imapd-ssl  (Nos aseguramos que en el fichero aparezca esta línea)
IMAPDSSLSTART=YES  
TLS_CERTFILE=/usr/local/share/imapd.pem


En el siguiente archivo, modificaremos la línea que contiene la variable “authmodulelist" (alrededor de la línea 27)
> vim /usr/local/etc/authlib/authdaemonrc
> authmodulelist="authvchkpw"


Por último ponemos arranque el automático..
> cp /usr/local/libexec/imapd.rc /etc/init.d/imapd
> update-rc.d imapd defaults
> /etc/init.d/imapd start
> cp /usr/local/libexec/imapd-ssl.rc /etc/init.d/imapd-ssl
> update-rc.d imapd-ssl defaults
> /etc/init.d/imapd-ssl start


Comprobaciones del funcionamiento:
> apt-get install telnet
>telnet localhost 143  

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc.  See COPYING for distribution information.

a login postmaster@miki.net miki
a OK LOGIN Ok.

Fin de la instalación del servidor de correo.

Nota: Mis gracias para el equipo de Qmailrocks(http://www.qmailrocks.org/) y el blog de Iuculano (http://wiki.debian.iuculano.it/).

Mostrar o escribir comentarios (dudas) sobre este artículo