Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
Server Side \ Manual de instalación de Qmail
Server Side
Manual de instalación de Qmail

Este artículo ha sido consultado en 1,681 ocasiones.

Por: Ferruca <ferrucaso@nediam.com.mx> y Dargor <dargor@nediam.com.mx>


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.

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

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


  3. Creamos el directorio donde va a quedar instalado qmail:
    SERVER:~# mkdir /var/qmail


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


  5. Realizarla compilación de qmail:
    SERVER:/usr/local/qmail-1.05# make setup check


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


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


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


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


  10. Crear el directorio donde estarán los logs generados por qmail:
    SERVER:/var/qmail# mkdir /var/log/qmail


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


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


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


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


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


  16. 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).


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


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



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker