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
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 |
# 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
|
¡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
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
# 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
# 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 |
# source /etc/profile
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain wh0rd.org postpass
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id`
3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
# 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
# cd /etc/courier-imap
# nano pop3d.cnf
# 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
# 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
# nano servercert.cnf
# 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
$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
# 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
# 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
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
|
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
# nano /etc/clamav.conf
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
# nano /var/qmail/control/conf-common
|
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.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logo y nombre de Gentoo.
|