Los servicios de correo dentro de cualquier red son de los más utilizados por los usuarios debido a su caracter de intercomunicación de mensajes, de portador y catalizador de acciones entre las partes involucradas. El acceso a los servicios de correo en cualquier momento y en cualquier lugar se ha vuelto indispensable en cualquier organización, la manera más simple de lograr esto es utilizando una interfaz cliente corriendo sobre un servidor Web, los usuarios se conectan a una página que les brinda acceso a sus mensajes como si estuvieran en su terminal, con todas las funcionalidades que se esperan de un cliente de correo normal.
El software para este ejemplo es la versión de SquirrelMail contenida en los ports de FreeBSD 4.9-STABLE. Pero antes de poder realizar la instalación de SquirrelMail debemos contar con un servidor de web funcionando en el sistema, para eso utilizaremos el siempre confiable apache en conjunto con el módulo de SSL para proveer la seguridad necesaria cuando se necesita transmitir información sensible a través de la red.
infiernos# cd /usr/ports/www/apache13-modssl infiernos# make APACHE_HARD_SERVER_LIMIT=1024 infiernos# make install
Esta acción instalará los binarios del programa y los archivos de configuración de apache, el parámetro HARD SERVER LIMIT es autoexplicativo y puede ser adecuado al tráfico que se espera en el servidor.
SquirrelMail esta desarrollado en PHP, así que necesitamos incluir el módulo correspondiente en apache de la siguiente manera:
infiernos# cd /usr/ports/www/mod_php4 infiernos# make infiernos# make install
Al momento de lanzar la compilación aparece un menu con opciones, hay que seleccionar la casilla de IMAP, MySQL.
Ahora solo necesitamos instalar un servidor de correo IMAP que intercomunicará nuestro Webmail con el servidor de correo, independientemente del que sea. En este caso utilizaremos en servidor de la Universidad de Washington.
infiernos# cd /usr/ports/mail/cclient infiernos# make -DWITH_SSL_AND_PLAINTEXT install infiernos# cd /usr/ports/mail/imap-uw infiernos# make -DWITH_SSL_AND_PLAINTEXT install infiernos# make cert
Despues de cubrir todos las dependencias, pasemos a la instalación de SquirrelMail, como las demás, de mucha facilidad gracias a los ports del sistema de FreeBSD.
infiernos# cd /usr/ports/mail/squirrelmail infiernos# make infiernos# make install
SquirrelMail incluye su propio script de configuración dentro del directorio donde fué instalado y accedemos a el a través de un pequeño script llamado configure:
infiernos# cd /usr/local/www/squirrelmail infiernos# ./configure
SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books (LDAP) 7. Message of the Day (MOTD) 8. Plugins 9. Database D. Set pre-defined settings for specific IMAP servers C. Turn color on S Save data Q Quit Command >>
Vamos a ir a la primera opción para personalizar la entrada mediante un nombre de organización, un logo que debe estar contenido en el directorio de images, y el lenguaje por omisión con que cargará el programa, en este caso el español.
SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Organization Preferences 1. Organization Name : FreeBSD México 2. Organization Logo : ../images/bienvenida.jpg 3. Org. Logo Width/Height : (308/111) 4. Organization Title : FreeBSD México 5. Signout Page : 6. Default Language : es_ES 7. Top Frame : _top 8. Provider link : http://www.freebsd.org.mx 9. Provider name : FreeBSD México R Return to Main Menu C. Turn color on S Save data Q Quit Command >>
En Server Settings cambiaremos el dominio por el nuestro y el servidor IMAP que estamos utilizando eligiendo Update IMAP Settings.
SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Server Settings General ------- 1. Domain : freebsd.org.mx 2. Invert Time : false 3. Sendmail or SMTP : Sendmail IMAP Settings -------------- 4. IMAP Server : localhost 5. IMAP Port : 993 6. Authentication type : login 7. Secure IMAP (TLS) : true 8. Server software : uw 9. Delimiter : detect B. Change Sendmail Config : /usr/sbin/sendmail H. Hide IMAP Server Settings R Return to Main Menu C. Turn color on S Save data Q Quit Command >>
Despues de guardar los cambios salimos de la utilidad de configuración y deshabilitamos el acceso de ejecución al archivo
infiernos# chmod -x configure
Debemos activar el servicio IMAP en el archivo inetd del servidor:
infiernos# cd /etc infiernos# ee inetd.conf
Agregando esta línea:
imaps stream tcp nowait root /usr/local/libexec/imapd imapd pop3s stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
Hay que reiniciar el servicio de inetd mandando una orden HUP al pid del proceso para activar los cambios.
Como el directorio en donde se ha instalado Squirrelmail no es el directorio por omisión donde apache carga las páginas vamos a modificar un par de líneas para lograr esto.
infiernos# cd /usr/local/etc/apache/ infiernos# ee httpd.conf
Y hay que dejar en la directiva DocumentRoot la ruta de Squirrelmail
DocumentRoot "/usr/local/www/squirrelmail"
De paso activamos el módulo de PHP para que cargue al inciar apache en la sección LoadModule y para que reconozca archivos php como nos lo advirtió el sistema de ports
LoadModule php4_module libexec/apache/libphp4.so
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Iniciamos el servicio de http desde el script de arranque
infiernos# /usr/local/etc/rc.d/apache.sh start
Ahora ya podemos lanzar nuestro navegador favorito para accesar a nuestra página de webmail y empezar a probar el nuevo servicio.
Hasta ahora el servicio esta arriba y funcionando, pero en materia de seguridad todavía deja que desear, así que vamos a hacer algo para remediarlo y poder dormir mejor.
Emepcemos por activar un dominio SSL en apache para que forcemos a nuestros usuarios a utilizar el servicio de webmail unicamente a través del protocolo seguro de http.Dentro de httpd.conf activamos Virtual Hosts:
NameVirtualHost *:80
<VirtualHost *>
ServerAdmin acosta at freebsd.or.mx
DocumentRoot /usr/local/www/data
ServerName www.freebsd.org.mx
</VirtualHost>
Y en SSL Virtual Host Context definimos nuestro webmail
## SSL Virtual Host Context ## <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/usr/local/www/squirrelmail" ServerName webmail.freebsd.org.mx ServerAdmin acosta at freebsd.org.mx ErrorLog /var/log/httpd-error.log TransferLog /var/log/httpd-access.log
Para lograr esta funcionalidad webmail debe estar definido en el DNS del del dominio apuntando a la misma IP que www. Ahora los usuarios deberán utilizar forzosamente https://webmail.dominio para accesar a los servicios de correo desde la web.
Es mucho más sencillo mantener el correo centralizado de los usuarios desde un servidor http que individualmente en cada estación de trabajo con la ventaja de poder brindar movilidad y acceso remoto independientemente del navegador y sistema operativo utilizado.
acosta at freebsd.org.mx