Gentoo Logo

Renuncia de responsabilidad: Este documento está aún en desarrollo y no debería ser considerado como oficial.


Guía para el sistema de hosting virtual de mail netqmail/vpopmail

Contenido:

1.  Introducción

Ya sea que estemos manejando el correo solamente para los demonios del sistema, un simple servidor, un dominio o varios dominios virtuales, netqmail puede fácilmente ser configurado para tus necesidades. Esta guía ayudará a configurar el netqmail para todos estos escenarios con un enfoque en acceso remoto y comunicaciones encriptadas punto a punto.

En particular, los paquetes que nos serán de ayuda para esta guía son netqmail, courier-imap, vpopmail y horde/imp. Estos paquetes elementales también nos brindarán daemontools, ucspi-tcp, mysql, apache y mod_php. netqmail nos provee de las funciones elementales de un mta, courier-imap de los servicios de acceso remoto, vpopmail nos ayudará en el manejo de los dominios virtuales y horde/imp nos brindará acceso al webmail.

Antes que nada, se deben tener activados los siguientes parámetros USE. Si ha hecho un emerge de cualquiera de estos paquetes, tal vez tenga que re-instalarlos. USE="maildir ssl imap mysql". Además, si desea usar horde/imp para webmail, entonces tendrá que usar USE="nls" al realizar el emerge de mod_php.

Nota: Esta guía fue escrita en pasos, por lo que si en cualquier momento cree que la configuración ha sido "completada", no es necesario continuar.

El último paso será obviamente dedicarse al sistema netqmail. Hay muchos otros paquetes con los cuales puede construir un sistema de correo electrónico. Ahora es el momento para investigar y decidir que netqmail es la solución adecuada. Tenemos otra guía muy buena centrada en Postfix, o podría echarle un vistazo a exim. La decisión es totalmente propia, nosotros mostraremos cómo usar el netqmail.

2.  netqmail (hablando solo)

Listado de Código 2.1: Emerge netqmail

# emerge mail-mta/netqmail

Importante: Esta guía está diseñada para funcionar con la versión netqmail-1.05-r4 o posterior. ¿Funcionará con versiones anteriores? Puede ser. ¿Tendría que actualizar el sistema? Si quiere estar seguro que esta guía funcione, si.

Aviso: Si obtiene un mensaje como el paquete virtual/mta está en conflicto con otro paquete entonces asegúrese de desinstalar el otro MTA del sistema. Para saber cuál es dicho paquete, ejecute emerge netqmail -p

El hacer emerge netqmail, también se instalará ucspi-tcp y daemontools. Para más información acerca de ucspi-tcp vaya a http://cr.yp.to/ucspi-tcp.html y para información acerca de daemontools vaya a http://cr.yp.to/daemontools.html. Básicamente, daemontools maneja a netqmail como servicio, mientras que ucspi-tcp maneja las conexiones TCP entrantes al servicio de netqmail.

Luego de la instalación, debemos configurar algunas cosillas.

Listado de Código 2.2: Configuración por defecto de netqmail

(Editar para tu sistema en particular
# nano /var/qmail/control/servercert.cnf
# emerge --config netqmail

El diseño de netqmail ha sido completamente enfocado hacia la seguridad. Para ello, el correo electrónico jamás es enviado al usuario 'root'. Ahora debe elegir un usuario que recibirá el correo de 'root'. A partir de ahora, me referiré a dicho usuario como lo tengo configurado en mi sistema, 'vapier'.

Listado de Código 2.3: Configurando el usuario que recibirá el correo de root

# cd /var/qmail/alias
# echo vapier > .qmail-root
# echo vapier > .qmail-postmaster
# echo vapier > .qmail-mailer-daemon

Ahora ejecutaremos el servicio de envío de netqmail.

Listado de Código 2.4: Comenzar el servicio de envío de netqmail

# rc-update add svscan default
# /etc/init.d/svscan start
# cd /service
# ln -s /var/qmail/supervise/qmail-send qmail-send

Nos aseguraremos de que netqmail se está ejecutando correctamente. Para ello, una pequeña prueba.

Listado de Código 2.5: Prueba del servicio de envío

# ssh vapier@localhost
# maildirmake .maildir
# qmail-inject root << EOF
test root e-mail!
EOF
# qmail-inject postmaster << EOF
test postmaster e-mail!
EOF
# qmail-inject vapier << EOF
test vapier e-mail!
EOF
# mutt
(En este momento tendría 3 mensajes nuevos en la bandeja
de entrada)

¡Y eso es todo! Ahora tenemos un sistema de correo que manejará el correo en la computadora local y el correo de los usuarios y demonios de sistema que hagan uso de él.

Aviso: Si no ha recibido correo o si ha visto errores raros en los archivos de registro (échele un vistazo a /var/log/qmail/) relacionados con 'localhost.localhost', esto quiere decir que la información relacionada al dominio y hostname del sistema no ha sido configurada correctamente. netqmail utiliza por defecto la salida de hostname --fqdn. Si la ejecución de dicho comando devuelve 'localhost', entonces debe revisar el contenido de /etc/hostname, /etc/hosts y la configuración del dns. Dicho esto, deberá de editar algunos de los archivos de configuración que se encuentran en /var/qmail/control/. Utilice los siguientes ejemplos como guía.

Listado de Código 2.6: Ejemplo de los archivos en /var/qmail/control/ para un dominio de segundo nivel

# hostname --fqdn
wh0rd.org
# cat me
wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
wh0rd.org
# cat rcpthosts
wh0rd.org

Listado de Código 2.7: Ejemplo de los archivos en /var/qmail/control/ para un dominio de tercer nivel

# hostname --fqdn
mail.wh0rd.org
# cat me
mail.wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
mail.wh0rd.org
# cat rcpthosts
mail.wh0rd.org

3.  vpopmail

Listado de Código 3.1: Emerge vpopmail

# emerge vpopmail

Importante: Esta guía fue diseñada alrededor de vpopmail-5.4.6 o más reciente. ¿Funcionará con versiones anteriores? Posiblemente. ¿Debería actualizar? Si, si quiere estar seguro de que esta guía funcione.

La configuración de vpopmail requiere de un esfuerzo un poco mayor que los paquetes anteriores. Como vpopmail trabaja con mysql, es necesario asegurar que está funcionando. Luego de esto, realizaremos la configuración y continuaremos. Antes de seguir nos aseguraremos de haber realizado el emerge y configurado mysql. Fíjese que la contraseña que uso para la base de datos de vpopmail será 'vpoppw', obviamente tendrá que seleccionar otra.

Listado de Código 3.2: Configurando el vpopmail en mysql

# rc-update add mysql default
Si esta es la primera vez que hace el emerge de mysql,
antes de levantar al servidor de mysql, asegúrese de ejecutar ebuild
<mysql.ebuild> config y siga las instrucciones presentadas en
pantalla.
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
(Cambiando la contraseña de 'secret' a 'vpoppw')
# mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF
(Los siguientes pasos podrían no ser necesarios, pero los
ejecutaremos simplemente para estar seguros)
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw

Aviso: Si surgen problemas de permisos con mysql/vpopmail, reinicie el servidor mysql con /etc/init.d/mysql restart.

En este momento, vpopmail está listo para ejecutar. En esta guía, estaremos proporcionando hosting virtual a 'wh0rd.org'. Esto significa que necesitaremos decirle a vpopmail acerca del dominio. También agregaremos una cuenta para el usuario 'vapier'.

Listado de Código 3.3: Agregando un dominio

(Solamente tendrá que hacerlo si la ejecución del comando
vadddomain resulta en "comando no encontrado")
# source /etc/profile

(Mientras estemos depurando al vpopmail, échelo un
vistazo a los registros)
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;

# vadddomain wh0rd.org postpass
(Ahora rápidamente verificamos la correcta configuración del dominio)
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id`
3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
(Si observa algo diferente a lo de arriba, quiere decir que
en algún lugar hay problemas de permisos)
# vadduser vapier@wh0rd.org vappw

Cada dominio que vpopmail genera, viene con una cuenta 'postmaster'. Aquí le hemos dicho a vpopmail que la contraseña de la cuenta de 'postmaster' es 'postpass'. Antes de que vpopmail sea realmente útil, necesitaremos recibir el correo vía courier y enviarlo vía netqmail y SMTP.

4.  Courier POP/IMAP

Listado de Código 4.1: Emerge courier-imap

# emerge net-mail/courier-imap

Importante: Debe hacer emerge courier-imap después de instalar vpopmail. Así será construido el módulo authvchkpw

Importante: Esta guía está basada net-mail/courier-imap-3.0.7 o versiones superiores. ¿Funcionará con versiones anteriores? Tal vez. ¿Tendrías que actualizar? Si quiere estar seguro que esta guía funcione, entonces debe actualizarlo.

A continuación se detallarán los pasos de configuración post-instalación. Estos son solamente necesarios si quiere realizar comunicaciones con SSL (que por cierto, ¡tendría que hacerlo!). En caso contrario, puede saltar esta etapa y continuar con los últimos dos pasos del siguiente código, quitando '-ssl' al nombre del guión.

Listado de Código 4.2: Configuración por defecto del POP3/SSL

# nano /etc/courier/authlib/authdaemonrc
(Asignamos solamente el valor "authvchkpw" a la variable authmodulelist
)
# cd /etc/courier-imap
# nano pop3d.cnf
(Editar la sección [ req_dn ] )
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start

Listado de Código 4.3: Configuración por defecto del IMAP/SSL

# cd /etc/courier-imap
# nano imapd.cnf
(Editar la sección [ req_dn ] )
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start

El cliente de mail debería poder hacer login al anfitrión ejecutando courier (con nombre de usuario y contraseña) y descargar correo del host virtual. En mi caso, ahora puedo entrar como el usuario 'vapier@wh0rd.org' y con la contraseña 'vappw'.

5.  netqmail (hablando con el mundo)

Pongamos a funcionar SMTP, aegurándonos de no crear un conducto de spam para que otros abusen.

Listado de Código 5.1: Iniciando servicio netqmail SMTP

# cd /var/qmail/control/
# nano conf-smtpd
(Descomente las variables SMTP-AUTH y asigne a QMAIL_SMTP_CHECKPASSWORD
el valor "/var/vpopmail/bin/vchkpw")
# nano servercert.cnf
(Edite la sección [ req_dn ] )
# mkservercert
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd
# /etc/init.d/svscan restart

Teniendo en cuenta que no hemos modificado los archivos de control de netqmail, ahora se encontrará aceptando correo para el dominio virtual wh0rd.org y para los usuarios de la máquina local. Es más, netqmail hará función de transmitir para cualquiera que mande correo a 127.0.0.1 y a cualquiera que se autentifique con vpopmail. Al configurar el cliente de correo para el envío, asegúrese de seleccionar opciones como 'Servidor requiere autentificación'. En mi caso, configuré el usuario como 'vapier@wh0rd.org' y mi contraseña como 'vappw'. El último detalle es asegurar que el cliente de correo use SSL/TLS para comunicarse. netqmail no dejará que se autentifique si la sesión no está cifrada.

6.  Horde / El cliente Webmail IMP

Aunque existen muchos clientes de webmail, (y uno es libre de usar cualquiera), prefiero usar el cliente IMP Webmail , parte de la infraestructura de Horde. La razón más importante de mi elección, es que Horde puede proveer acceso al webmail y además puede agregarle cierta funcionalidad como la libreta de direcciones, el calendario, tareas, etc. Si esto no le convence todavía, probablemente quiera estudiar un poquito acerca de Horde.

Ahora realizaremos el emerge del IMP.

Listado de Código 6.1: Realizando el emerge del IMP

# emerge horde-imp

Ahora configuraremos rápidamente el IMP.

Listado de Código 6.2: Configuración por defecto del IMP

# cd /var/www/localhost/htdocs/horde/imp/config/
# nano servers.php

(Editamos el arreglo de $servers['imap']:)
$servers['imap'] = array(
  'name' => 'wh0rd.org',
  'server' => 'localhost',
  'protocol' => 'imap/ssl/novalidate-cert',
  'port' => 993,
  'folders' => '',
  'namespace' => 'INBOX.',
  'maildomain' => 'wh0rd.org',
  'smtphost' => 'localhost',
  'realm' => '',
  'preferred' => ''
);

Finalmente, iniciamos apache para empezar a usar el webmail.

Listado de Código 6.3: Iniciando apache

# nano /etc/conf.d/apache2
(Descomente APACHE2_OPTS="-D SSL -D PHP5")
# rc-update add apache2 default
# /etc/init.d/apache2 start

Aviso: Considere obligar a los usuarios de horde a usar https. No es un asunto trivial, pero échele un vistazo por el bien de la seguridad del sistema.

Para probar la nueva configuración de IMP, visite http://localhost/horde/ con el navegador (o cambie localhost al servidor configurado). Debería ver el mensaje de bienvenida de Horde, en el cual puedes hacer login. Nuevamente, en mi configuración, simplemente me autentifico con el nombre de usuario 'vapier@wh0rd.org' y contraseña 'vappw'.

En este momento, Horde e IMP están configurados. Si quiere, modifique los archivos de configuración al gusto.

7.  Paquetes adicionales

qmailadmin

El primer paquete que sugeriría es qmailadmin. Es un interfaz para manejar dominios virtuales desde el navegador. Simplemente ejecute emerge net-mail/qmailadmin para usarlo vaya a http://localhost/cgi-bin/qmailadmin. Hace la vida más sencilla.

qmHandle

Si tiene problemas con las colas de netqmail y le ocasiona molestias tratar de solucionar el problema, sugiero ver qmHandle. Es un programa sencillo en Perl que permite ver y manejar la cola de mensajes de netqmail. Nuevamente, lo único que debemos hacer es emerge net-mail/qmhandle.

Aplicaciones adicionales para horde

Recomiendo que veas algunas aplicaciones para Horde, tales como Turba, Kronolith y Nag. Su configuración es muy similar al de IMP, de manera que no debería tener problemas al configurarlos. Solamente recuerde modificar el archivo registry.php en el directorio de configuración de horde para que las nuevas aplicaciones aparezcan al pie del sitio web de horde.

ucspi-tcp

netqmail usa ucspi-tcp para manejar las conexiones entrantes de netqmail. Si quiere modificar las reglas de filtrado, entonces échele un vistazo a los archivos de configuración en /etc/tcprules.d/ (en versiones anteriores estos archivos están en /etc). Allí encontrará dos archivos por cada servicio, el archivo de configuración (por ej. tcp.qmail-smtp) y la versión compilada del mismo, que es el que usa ucspi-tcp (ej. tcp.qmail-smtp.cdb). Cuando actualice el archivo de configuración, tendrá que reconstruir la versión binaria. Simplemente ejecute tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp < tcp.qmail-smtp. Cada vez que entre una conexión al servicio de netqmail, el archivo de reglas compiladas será releída, de manera que no hace falta reiniciar el servicio.

qmail-scanner

Si quiere hacer filtraje de contenido en el servidor de correo (spam y virus), debe usar un manejador de cola distinto a la opción por defecto. Un manejador de cola bueno es qmail-scanner. Instálelo con emerge qmail-scanner y modifique el archivo /etc/tcprules.d/tcp.qmail-smtp.

Importante: El proceso para construir qmail-scanner es bastante feo. Para dar soporte a ciertos paquetes, estos ya deben existir en el sistema. Esto quiere decir que tendrá que instalar SpamAssasin y/o Clam Antivirus antes de instalar qmail-scanner. Siga leyendo para mayor información.

Listado de Código 7.1: Cambiando el gestor de la cola

# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
(Agrega QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" a la regla
por defecto del allow)
# tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp

Las siguientes secciones explican cómo configurar el filtrado de spam y virus. Para una configuración más personalizada, puedes editar el archivo /var/qmail/bin/qmail-scanner-queue.pl.

SpamAssassin

Uno de los mejores programas de código abierto para el filtrado de spam es SpamAssassin. Instálelo con emerge mail-filter/spamassassin. Este paquete viene en dos versiones, una para la línea de comandos y otra de tipo cliente/servidor. Para servidores que manejarán cantidades pequeñas de correo, el uso de la versión de línea de comando es aceptable, pero en caso de manejar cantidades importantes de correo debería usarse la versión cliente/servidor.

Listado de Código 7.2: Configuración por defecto del SpamAssassin

# nano /etc/mail/spamassassin/local.cf
(Al menos, agrega estas opciones:)
required_hits 6
skip_rbl_checks 1

# rc-update add spamd default
# /etc/init.d/spamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Asegúrese que la variable $spamc_binary contenga el valor
 '/usr/bin/spamc'.)
(Si no tiene valor, entonces fíjese en la siguiente
nota.)

Importante: Si no tenía SpamAssassin en tu sistema antes instalar qmail-scanner, tendrá que reinstalar qmail-scanner. El proceso de construcción solamente agregará soporte de cierta funcionalidad de acuerdo a la detección en el momento de construcción.

Llegado a este punto, el correo entrante será enviado a qmail-scanner y será pasado por SpamAssassin.

Clam AntiVirus

Al igual que SpamAssassin, Clam AntiVirus viene en versiones, una para la línea de comandos y la otra del tipo cliente/servidor. Mostraré como configurarlo. Primero ejecute emerge app-antivirus/clamav.

Listado de Código 7.3: Configuración por defecto de Clam AntiVirus

# nano /etc/conf.d/clamd
(Configurar START_CLAMD=yes)
# nano /etc/clamav.conf
(Configure las cosas de la manera deseada)
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Asegúrese que la variable $clamscan_binary contenga el valor
'/usr/bin/clamscan'.)
(En caso contrario, lea la siguiente nota.)
# nano /var/qmail/control/conf-common
(Si ClamAV se queja acerca de problemas de memoria,
trate de aumentar el softlimit)

Importante: Si no tenía Clam Antivirus instalado al instalar qmail-scanner, debe reinstalar qmail-scanner. Como dije anteriormente, qmail-scanner solamente agrega las funcionalidades que detecta en el momento de la construcción.

En este momento, el correo entrante será enviado al qmail-scanner y será pasado por Clam Antivirus.

8.  Notas finales

No tengo más nada que decir a no ser que, si experimenta algún tipo de problema con esta guía, por favor contácte conmigo o reporte errores al Bugzilla Gentoo. Si tiene algún consejo para mejorar esta guía, envíemelo para ver si lo incluimos en la guía. Adoro netqmail y gustosamente agregaré algo que mejore la experiencia de los usuarios de este mta.



Imprimir

Página actualizada 14 de noviembre, 2010

Sumario: Este documento explica como crear un sistema de hosting de mail basado en netqmail, vpopmail, courier-imap, mysql y horde/imp.

Mike Frysinger
Autor

Joshua Saddler
Editor

John Christian Stoddart
Traductor

Nicolás Miyasato
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.