Renuncia de responsabilidad: Este documento está aún en desarrollo y no debería ser condiderado todavía cómo oficial. |
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.
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 |
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.
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
|
Importante: Esta guía está basada en horde-2.2.x y horde-imp-3.2.x. Las versiones del CVS (y por tanto versiones superiores), probablemente tengan configuraciones diferentes a las que usamos aquí. También hay que fijarse que php-5.x probablemente traiga grandes problemas al horde-2.x. |
Actualmente Horde no tiene una configuración fácil, a menos que sepa exactamente qué hacer. Afortunadamente, yo se exactamente que hacer, de forma que muy pronto también lo sabrá.
Listado de Código 6.2: Configuración por defecto de Horde |
# cd /var/www/localhost/htdocs/horde/config/ # for f in *.dist ; do mv ${f} ${f/.dist} ; done # nano horde.php (En 'Horde Authentication':) $conf['auth']['driver'] = 'imap'; $conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}'; (En 'Horde Logging':) $conf['log']['name'] = '/var/log/apache2/horde.log'; (En 'Problem Reporting':) $conf['problems']['enabled'] = true; $conf['problems']['email'] = 'webmaster@wh0rd.org'; # nano registry.php (En 'Handlers':) $this->registry['auth']['login'] = 'imp'; $this->registry['auth']['logout'] = 'imp'; (En 'Application registry':) Configura al elemento 'status' de la aplicación['imp'] de 'inactive' a 'active' # touch /var/log/apache2/horde.log # chown apache:apache /var/log/apache2/horde.log |
Nota: Debe cambiar la cuenta de correo del 'webmaster' a otra cosa. Si quiere usar esa dirección de correo, entonces recuerde que tendrá que agregarlo vía vpopmail (o vea a continuación como lo hacemos con el qmailadmin). |
Ahora rápidamente configuraremos el IMP.
Listado de Código 6.3: Configuración por defecto del IMP |
# cd /var/www/localhost/htdocs/horde/imp/config/ # for f in *.dist ; do mv ${f} ${f/.dist} ; done # 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.4: Iniciando apache |
# nano /etc/conf.d/apache2 (Descomenta 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.
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.
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.
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 estan 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.
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.
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.
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.
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ácteme o reporte errores al Bugzilla Gentoo. Si tiene algún consejo para mejorar esta guía, envíemelo para ver si lo incluimos enla guía. Adoro netqmail y gustosamente agregaré algo que mejore la experiencia de los usuarios de este mta.
El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual