|
Server Side \ Manual de instalación de Qmail Manual de instalación de Qmail
Este artículo ha sido consultado en 1,681 ocasiones.
Este manual está basado en la documentación de Life with Qmail: http://www.lifewithqmail.org. El sistema operativo que utilizamos para pruebas fue Debian GNU/Linux.
- Bajar de http://qmail.org los paquetes:
- netqmail-x.x.x.tar.gz
- ucspi-tcp-x.x.tar.gz
- daemontools-x.x.tar.gz
Nota: Al momento de escribir este documento la versión más reciente de netqmail es la 1.05, la de ucspi-tcp es la 0.88, y la de daemontools es la 0.76
- Suponiendo que los paquetes anteriores se descargaron en /usr/local/, desempacarlos y descomprimirlos:
SERVER:~# cd /usr/local
SERVER:/usr/local# tar -zxvf netqmail-1.05.tar.gz
(Según el README, antes de comenzar la instalación se debe de aplicar el patch ejecutando el script collate.sh que viene ahí)
SERVER:/usr/local# cd netqmail-1.05
SERVER:/usr/local/netqmail-1.05# ./collate.sh
SERVER:/usr/local/netqmail-1.05# mv netqmail-1.05 ../qmail-1.05
SERVER:/usr/local/netqmail-1.05# cd ..
SERVER:/usr/local# tar -zxvf ucspi-tcp-0.88.tar.gz
SERVER:/usr/local# tar -zxvf daemontools-0.76.tar.gz
- Creamos el directorio donde va a quedar instalado qmail:
SERVER:~# mkdir /var/qmail
- Crear los usuarios y los grupos bajo los que correrán los procesos de qmail. La forma de hacerlo es mediante un script que viene con el código fuente del qmail llamado INSTALL.ids. Es importante verificar ese archivo para ver cuáles son los comandos que nos sirven. Primero le hacemos una copia:
SERVER:~# cd /usr/local/qmail-1.05
SERVER:/usr/local/qmail-1.05# cp INSTALL.ids INSTALL.ids.old
Después con algún editor borrar las lí que no vamos a usar (en nuestro caso sólo dejamos los de la
sección de Linux), lo hacemos ejecutable y corremos:
SERVER:/usr/local/qmail-1.05# chmod 700 INSTALL.ids
SERVER:/usr/local/qmail-1.05# ./INSTALL.ids
Verificar en /etc/group y en /etc/passwd que se hayan creado los grupos y usuarios correctamente.
-
Realizarla compilación de qmail:
SERVER:/usr/local/qmail-1.05# make setup check
-
Realizar la configuración post-instalación ejecutando el script config. Lo que hace este script es detectar el hostame y el nombre de dominio del servidor para que nuestro servidor de correo sólo acepte mensajes SMTP de estos hosts.
SERVER:/usr/local/qmail-1.05# ./config
Nota: Si el servidor no está dado de alta en el DNS server, tendremos que pasar como parámetro el nombre
completo de nuestra máquina, utilizando:
./config-fast host.dominio
-
Instalar ucspi-tcp. El paquete ucspi-tcp (Unix Client-Server Program Interface) es un conjunto de herramientas que sirve para crear aplicaciones cliente-servidor TCP.
SERVER:/usr/local/qmail-1.05# cd ../ucspi-tcp-0.88
SERVER:/usr/local/ucspi-tcp-0.88# patch < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.a_record.patch
SERVER:/usr/local/ucspi-tcp-0.88# patch < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
SERVER:/usr/local/ucspi-tcp-0.88# patch < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.nodefaultrbl.patch
SERVER:/usr/local/ucspi-tcp-0.88# make
SERVER:/usr/local/ucspi-tcp-0.88# make setup check
-
Instalar daemon-tools. Este paquete es un conjunto de herramientas para administrar servicios (demonios) en Unix.
SERVER:/usr/local/ucspi-tcp-0.88# cd ../admin/daemontools-0.76/src/
SERVER:/usr/local/admin/daemontools-0.76/src# patch <
/usr/local/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
SERVER:/usr/local/admin/daemontools-0.76/src# cd ..
SERVER:/usr/local/admin/daemontools-0.76# package/install
-
Crear el archivo de inicio /var/qmail/rc que contenga lo siguiente:.
#!/bin/sh
# /var/qmail/rc : Script que inicia qmail
# Usamos control/defaultdelivery (que en nuestro caso es ./Maildir/) como default para entregar mensajes.
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
Le damos permisos de ejecución:
SERVER:/var/qmail# chmod 755 rc
-
Crear el directorio donde estarán los logs generados por qmail:
SERVER:/var/qmail# mkdir /var/log/qmail
- Definir el tipo de buzón que se utilizará por default. El que más se recomienda para qmail es Maildir:
SERVER:/var/qmail#
echo ./Maildir/ > /var/qmail/control/defaultdelivery
Para crearle su inbox a cada usuario, se utiliza el comando maildirmake, y se tiene que ejecutar con el id de cada usuario. Por
ejemplo, para crearle su inbox al usuario juan se ejecutarían los siguientes comandos:
SERVER:/var/qmail# su - juan
juan@SERVER:~$ /var/qmail/bin/maildirmake $HOME/Maildir
-
Crear el script de inicio para qmail. Crear el script /var/qmail/bin/qmailctl que contenga las líneas que se encuentran
aquí. Luego de esto, hacerlo ejecutable y hacerle un link simbólico a /usr/bin/:
SERVER:/var/qmail/bin# chmod 755 qmailctl
SERVER:/var/qmail/bin# ln -s /var/qmail/bin/qmailctl /usr/bin/
Copiar este mismo script a /etc/init.d/ y hacerle los respectivos links a los directorios de los runlevels (o hacer la configuración correspondiente en rc.local si su distribución utiliza el estilo BSD y no System-V):
SERVER:/var/qmail/bin# cp qmailctl /etc/init.d/qmail
SERVER:/var/qmail/bin# cd /etc/init.d/
SERVER:/etc/init.d# update-rc.d qmail start 99 2 3 4 5 . stop 99 0 1 6 .
Nota: Si la distribución que están utilizando no tiene la utilería update-rc.d, hacer los link manualmente en los directorios
correspondientes.
-
Crear los scripts de supervise. Primero crear los directorios supervise para los servicios de qmail:
SERVER:~/# mkdir -p /var/qmail/supervise/qmail-send/log
SERVER:~/# mkdir -p /var/qmail/supervise/qmail-smtpd/log
Crear el script /var/qmail/supervise/qmail-send/run que contenga las siguientes líneas:
#!/bin/sh
exec /var/qmail/rc
Crear el script /var/qmail/supervise/qmail-send/log/run que contenga las siguientes líneas:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
Crear el script /var/qmail/supervise/qmail-smtpd/run que contenga las siguientes líneas:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Nota: tcpserver acepta por default 40 conexiones concurrentes. Si se requiere de un número mayor, especificarlo aquí. Por ejemplo, si se desean tener un máximo de 200 conexiones concurrentes: tcpserver -v -R -c200 -l "$LOCAL" -x /etc/tcp.smtp.cdb ...
Crear el archivo de control /var/qmail/control/concurrencyincoming y cambiarle los permisos:
SERVER:~/# echo 20 > /var/qmail/control/concurrencyincoming
SERVER:~/# chmod 644 /var/qmail/control/concurrencyincoming
Crear el script /var/qmail/supervise/qmail-smtpd/log/run que contenga las siguientes líneas:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
Hacer ejecutables los cuatro archivos run que acabamos de crear:
SERVER:~/# chmod 755 /var/qmail/supervise/qmail-send/run
SERVER:~/# chmod 755 /var/qmail/supervise/qmail-send/log/run
SERVER:~/# chmod 755 /var/qmail/supervise/qmail-smtpd/run
SERVER:~/# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
Configurar los directorios de log que especificamos en los scripts:
SERVER:~/# mkdir -p /var/log/qmail/smtpd
SERVER:~/# chown qmaill /var/log/qmail /var/log/qmail/smtpd
Hacer links simbólicos de los directorios supervise al directorio /service:
SERVER:~/# ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
Después de que estos links hayan sido creados, automáticamente iniciará qmail. Para seguir con el resto de la configuración lo detendremos:
SERVER:~/# qmailctl stop
- Editar el archivo /etc/tcp.smtp para permitir que los usuarios locales inyecten mail vía SMTP, y recrear
el archivo cdb para smtp:
SERVER:~/# echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
SERVER:~/# qmailctl cdb
Nota: Si se quiere permitir a alguna otra computadora que utilice nuestro servicio de SMTP, se agrega de
una
manera similar. Por ejemplo, para permitir a la IP 192.168.1.240 que tenga relay:
SERVER:~/# echo
'192.168.1.240.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
- Crear los alias. Definir a qué cuenta local o remota deberán de redirigirse los correos enviados a postmaster, mailer-daemon y root y definir los alias (en este ejemplo supondremos que decidimos que al usuario juan le llegarán estos correos):
SERVER:~/# echo juan > /var/qmail/alias/.qmail-root
SERVER:~/# echo juan > /var/qmail/alias/.qmail-postmaster
SERVER:~/# ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
SERVER:~/# chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
Nota: Si se requieren más alias, crearlos de la misma manera. Por ejemplo, si queremos un alias para
webmaster:
SERVER:~/#
echo juan > /var/qmail/alias/.qmail-webmaster
- Iniciar qmail y checar si se levantaron los servicios:
SERVER:~/# qmailctl start
SERVER:~/# qmailctl stat
/service/qmail-send: up (pid 5490) 11 seconds
/service/qmail-send/log: up (pid 5491) 11 seconds
/service/qmail-smtpd: up (pid 5492) 11 seconds
/service/qmail-smtpd/log: up (pid 5493) 11 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0
SERVER:~/# ps -efl | grep "service errors" | grep -v grep
100 S root 4844 4841 0 76 0 - 309 pipe_w Nov15 ? 00:00:00 readproctitle service errors: .........................................................................................................................................................................
.........................................................................................................................................................................
..............................................................
Los cuatro servicios deberán de estar arriba ("up") por más de un segundo, y el readproctitle no nos deberá de reportar algún error (el programa readproctitle mantiene un log de los mensajes de error generados por los servicios administrados por svscan).
- Pruebas. Ver los archivos TEST.deliver y TEST.receive que están en el directorio donde se descompactó el .tar.gz del qmail:
Mandar un correo a una cuenta local y verificar que se haya entregado en el inbox:
SERVER:~/# echo to: juan | /var/qmail/bin/qmail-inject
SERVER:~/# ls /home/juan/Maildir/new/
1100637402.5643.SERVER
SERVER:~/# more /home/juan/Maildir/new/1100637402.5643.SERVER
Return-Path: <root@dominio>
Delivered-To: juan@dominio
Received: (qmail 5640 invoked by uid 0); 16 Nov 2004 20:36:42 -0000
Date: 16 Nov 2004 20:36:42 -0000
Message-ID: <20041116203642.5639.qmail@dominio>
From: root@dominio
to: juan@dominio
SERVER:~/# tail /var/log/qmail/current
@40000000419a64e411198e4c new msg 2812883
@40000000419a64e411199a04 info msg 2812883: bytes 211 from <root@dominio> qp 5640 uid 0
@40000000419a64e4151d8674 starting delivery 1: msg 2812883 to local juan@dominio
@40000000419a64e4151e651c status: local 1/10 remote 0/20
@40000000419a64e416c5c3ec delivery 1: success: did_1+0+0/
@40000000419a64e416c7b7ec status: local 0/10 remote 0/20
@40000000419a64e416c7bbd4 end msg 2812883
Mandar un correo a una cuenta externa y verificar que se haya entregado:
SERVER:~/# echo to: cuenta@hotmail.com | /var/qmail/bin/qmail-inject
SERVER:~/# tail /var/log/qmail/current
@40000000419a81fe1967e9f4 new msg 2812883
@40000000419a81fe1967f5ac info msg 2812883: bytes 210 from <root@dominio> qp 5755 uid 0
@40000000419a81fe1d055c04 starting delivery 5: msg 2812883 to remote cuenta@hotmail.com
@40000000419a81fe1d0632dc status: local 0/10 remote 1/20
@40000000419a8200346717ac delivery 5: success: 64.4.50.99_accepted_message./Remote_host_said:_250__<20041116224052.5754.qmail@dominio>_Queued_mail_for_delivery/
@40000000419a82003467274c status: local 0/10 remote 0/20
@40000000419a820034672b34 end msg 2812883
Mandar un correo desde una cuenta externa a una cuenta local y verificar que se haya recibido:
SERVER:~/# tail /var/log/qmail/current
@40000000419b8597346c576c new msg 2812883
@40000000419b8597346c6324 info msg 2812883: bytes 886 from <cuenta@dominio2> qp 6181 uid 1007
@40000000419b8597380898cc starting delivery 8: msg 2812883 to local juan@dominio
@40000000419b8597380967d4 status: local 1/10 remote 0/20
@40000000419b859739b54ae4 delivery 8: success: did_1+0+0/
@40000000419b859739b717d4 status: local 0/10 remote 0/20
@40000000419b859739b71fa4 end msg 2812883
Mandar un correo desde una cuenta externa a una cuenta local inexistente y verificar se haya enviado un mail a la cuenta remota diciendo que ese buzón no existe:
SERVER:~/# tail /var/log/qmail/current
@40000000419bdbe12214bd34 new msg 2812883
@40000000419bdbe12214c8ec info msg 2812883: bytes 862 from <cuenta@dominio2> qp 6331 uid 1007
@40000000419bdbe12615e69c starting delivery 9: msg 2812883 to local juan33@dominio
@40000000419bdbe12616e484 status: local 1/10 remote 0/20
@40000000419bdbe126356134 delivery 9: failure: Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/
@40000000419bdbe12637e1d4 status: local 0/10 remote 0/20
@40000000419bdbe12a7383fc bounce msg 2812883 qp 6334
@40000000419bdbe12a738fb4 end msg 2812883
@40000000419bdbe12a75491c new msg 2812889
@40000000419bdbe12a763b4c info msg 2812889: bytes 1409 from <> qp 6334 uid 1012
@40000000419bdbe12e6f90cc starting delivery 10: msg 2812889 to remote cuenta@dominio2
@40000000419bdbe12e701d6c status: local 0/10 remote 1/20
@40000000419bdbe534597f34 delivery 10: success: 66.98.170.56_accepted_message./Remote_host_said:_250_2.0.0_iAHMHvYj009257_Message_accepted_for_delivery/
@40000000419bdbe534598ed4 status: local 0/10 remote 0/20
@40000000419bdbe5345992bc end msg 2812889
-
Ya tenemos funcionando nuestro servidor de correo qmail!!. Lo que seguiría sería instalar un servidor de POP3 o IMAP. En esta
página se encuentran las instrucciones para incorporar courier-imap con qmail. Finalmente, también se podría instalar un webmail. Uno muy bueno es
Squirrelmail.
Fuentes consultadas:
Última actualización: 2007-04-29 10:56:59-05
|