Instalando Qmail.
Bueno podemos tomar las fuentes de Qmail y compilar a mano o podemos utilizar los ebuilds que provee Gentoo, para efectos prácticos mejor utilizamos lo que Gentoo ya provee y esta probado.
Veamos esta lista, son los paquetes sugeridos por la guía de QmailRocks:
- qmail
- ucspi-tcp
- daemon-tools
- qmail's pop3d
- qmail SMTP authentication patch
- qmail SMTP TLS patch
- ezmlm mailing list
- autoresponder
- qmailanalog
- vpopmail
- vqadmin
- maildrop
- qmailadmin
- courier IMAP & IMAP SSL
- SquirrelMail WebMail
- qmail-scanner
- qms-analog
- SpamAssassin
- ClamAv
- qtrap
Es una gran lista de software por instalar pero no todos funcionan sobre Gentoo, por lo menos no sin los parches adecuados. Tenemos otra referencia sobre como instalar Qmail sobre Gentoo en gentoo-wiki aquí se detalla mucho la instalación, bueno si aquí hay un howto porque estamos haciendo este?, fácil, porque me dio la gana y además porque tenemos una pequeña variante nuestra plataforma de hardware es un equipo Sparc y no todo el software que esta disponible para x86 lo esta para Sparc así que veremos como hacer funcionar este.
Siguiendo la lista de paquetes que aparecen en gentoo-wiki tendríamos que instalar:
- NetQmail (ya que Qmail es ahora un paquete virtual y proveen lo mismo).
- net-mail/queue-repair
- net-mail/dot-forward
- sys-process/daemontools
- sys-apps/ucspi-tcp
- net-mail/cmd5checkpw
- net-mail/checkpassword
- mail-mta/netqmail
En este paso la guía indica que habilitemos el uso de SSL mediante la bandera USE=ssl" para utilizar encriptación en los mensajes enviados, bien esto ya no es necesario especificarlo porque por default lo maneja de esa forma, hacemos el emerge:
# emerge --ask --verbose netqmail
# env-update
El siguiente paso es crear el certificado que nos da autenticidad de ser quienes decimos que somos (¬¬). Antes de generarlo tenemos que editar el archivo de configuración personalizada para openssl, los datos a modificar son claros:
# nano -w /var/qmail/control/servercert.cnf
# /var/qmail/bin/mkservercert
Esto nos crea un archivo "servercert.pem" y un enlace simbólico suave al mismo llamado "clientcert.pem" en el directorio "/var/qmail/control/".
El certificado tiene una duración de 365 días por lo tanto no tendremos que hacer uno nuevo pronto pero pasa que a muchos se nos olvida renovarlo, en la documentación viene una forma de checar día a día si nuestro certificado ya caduco y en caso de que así sea volver a generarlo.
Primero hacemos una copia en el mismo lugar del script que genera el certificado y despues comentamos la parte interactiva.
# cp -a /var/qmail/bin/mkservercert /var/qmail/bin/mkservercert-noprompt
# nano -w /var/qmail/bin/mkservercert-noprompt
En este archivo que estamos editando comentamos las siguientes lineas que lo único que hacen es mandar un aviso y pedir un ENTER como confirmación el cual es leído de la linea de comandos y después continua con el proceso de hacer el certificado.
#ewarn "Please customize ${conffile} before continuing!"
#einfo "Press ENTER to continue, or CTRL-C to stop now."
#read
Procedemos ahora a hacer una nueva tarea cron esta la creamos en el directorio "/etc/cron.daily" todo lo que esta ahí se ejecuta todos los días por lo tanto todos los días va a checar que el certificado este vigente de lo contrario lo borra y genera uno nuevo, así lo hacemos:
# nano -w /etc/cron.daily/qmail-update-certificate
El contenido del archivo debe ser este:
#!/bin/sh
COUNT=`openssl verify /var/qmail/control/servercert.pem |grep expired|wc -c`
if [[${COUNT} -gt 1]] ; then
rm /var/qmail/control/servercert.pem
/var/qmail/bin/mkservercert-noprompt
/etc/init.d/svscan restart
fi
Guardamos y cerramos el archivo, con esto esta parte queda lista.
Lo siguiente que vamos a hacer es decirle al sistema que cada ves que realicemos una actualización o instalemos algo que modifique la configuración personalizada de "netqmail" nos diga que se á cambiado y/o que tenemos que cambiar la configuración del paquete "netqmail" después de que termino el emerge, eso lo hacemos con el siguiente comando:
# ebuild /var/db/pkg/mail-mta/netqmail-1.05-r8/netqmail-1.05-r8.ebuild config
Esto nos tirara en la terminal algo parecido a esto:
Appending /var/db/pkg to PORTDIR_OVERLAY...
Your fully qualified host name is correo.acatlan.unam.mx.
Putting correo.acatlan.unam.mx into control/me...
Putting acatlan.unam.mx into control/defaultdomain...
Putting unam.mx into control/plusdomain...
Putting correo.acatlan.unam.mx into control/locals...
Putting correo.acatlan.unam.mx into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to correo.acatlan.unam.mx.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
* Accepting relaying by default from all ips configured on this machine.
* Generating RSA keys for SSL/TLS, this can take some time ... [ ok ]
* Creating a self-signed ssl-certificate:
* /var/qmail/control/servercert.pem already exists.
* If you want to have a properly signed certificate
* instead, do the following:
* openssl req -new -nodes -out req.pem \
* -config /var/qmail/control/servercert.cnf \
* -keyout /var/qmail/control/servercert.pem
* Send req.pem to your CA to obtain signed_req.pem, and do:
* cat signed_req.pem >> /var/qmail/control/servercert.pem
Con esto casi estamos listo para empezar a mandar correos.
Aquí voy a escribir información de mi segundo intento de instalar Qmail, en su combinación con varias herramientas para utilizar dominios virtuales, antivirus, antispam al estilo QmailRocks, sobre un equipo Sun Ultra-10 Sparc con sistema operativo GNU/Linux Gentoo.
La primera ocasión lo intente sobre un equipo similar una Sun Ultra Enterprise 250 con sistema operativo Sun Solaris 9. A pesar de seguir todos los pasos como se detalla en la guía de QmailRocks tuve muchos problemas en la compilación de los paquetes, la falta de tiempo para completar con éxito la tarea y la necesidad inmediata del servicio me obligo a elegir otra solución... un Windows Server 2003 con Microsoft Exchange .... ja ja ja no no es cierto uff, la solución en ese momento fue un rápido y eficiente GNU/Linux Slackware V12.0 con QmailRocks siguiendo la guía paso a paso y con una que otra modificación que hasta este momento no ha dado ningún problema o a requerido modificaciones extras.
Vayamos al grano, primero necesitamos instalar el sistema operativo, en este caso Gentoo, para los interesados pueden ir al HandBook de Gentoo para Sparc, ya saben primero ponemos el disco en la unidad óptica presionamos "Stop + a" luego en el prompt del OpenProm escribimos "boot cdrom" tecleamos "enter" después seguimos el manual de instalación hasta terminar teniendo un bonito Gentoo que optimizara todos nuestros recursos de hardware y de paso nos quitara el tiempo (como si tuviéramos mucho) con el proceso de instalación de todos y cada uno de los paquetes que instalemos.
Seguimos la guía hasta finalizar la instalación base, no agregamos nada raro, mis opciones de compilación en el archivo "make.conf":
CFLAGS="-O2 -mcpu=ultrasparc -pipe"
MAKEOPTS="-j2"
USE="bzip2 ncurses nls zlib -selinux"
Realice una actualización por todo aquello de los fallos de seguridad, exploits, software inestable etc, etc.
# emerge --sync
# emerge portage
# emerge gentoolkit
# emerge world
Al momento de actualizar haciendo el "emerge world" tuve un problema con el paquete "setarch" estaba bloqueando el paquete "util-linux" que se supone lo remplaza y suministra lo mismo que este. Lo corregimos de la siguiente manera:
# emerge -C setarch
# FEATURES=-unmerge-orphans emerge cracklib
# emerge -uavt util-linux
Después procedemos con normalidad con el "emerge world", y con otros pasos más:
# etc-update
# revdep-rebuild
Y solo si presenta problemas actualizar "python" borramos/movemos este archivo.
# mv /usr/sbin/python-updater /usr/sbin/python-updater.otro
Si con lo anterior también hay problemas entonces no duden en recurrir a los foros de gentoo, son de lo mejor para curar una que otra gripe y de vez en cuando encontrar la solución a conflictos tan raros.
Hasta aquí tengo un sistema bastante funcional ya, lo siguiente en teoría si el mundo fuera perfecto y los paquetes nunca tuvieran conflictos o dependencias de plataforma, compilador, bibliotecas de funciones etc, etc., seria instalar y configurar el servidor HTTP Apache, el lenguaje PHP y qmail con sus agregados, configurarlos y ser felices por siempre mandando correo. Que lastima no es así, pues primero procedemos a los simple que es instalar y configurar Apache y PHP.
Ponemos esto en el "/etc/portage/package.use" si no existe hay que crearlo desde la cuenta de root:
www-servers/apache ssl
dev-lang/php apache2 gd zip
Así instalamos con este comando lo necesario para que todo funcione correctamente:
# emerge -av php
# /etc/init.d/apache2 start
# rc-update add apache2 default
Si todo termina si problemas entonces ya podemos navegar a la URL http://localhost o la dirección IP asociada a la tarjeta de red del equipo que estamos instalando y podemos ver la página de prueba del servidor HTTP Apache como ven no es necesario hacer más configuración puesto que la predeterminada de momento funciona bien.
Con esto terminamos lo que seria la instalación base incluyendo el software para poner contenido en Internet lo siguiente sera entonces instalar y configurar correctamente Qmail, si se deja ¬¬.