Configuración de servicios Webmail con SquirrelMail en FreeBSD

Alejandro Acosta

acosta at freebsd.org.mx

2004/03/22



1. Introducción

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.


2. Instalación

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

3. Configuración

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.


4. Agregando más seguridad

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.


5. Conclusiones

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