Resumen
"Postman" es un cliente de Correo con interfaz Web diseñado y programado en el Servicio de Informática de la Universitat de València. El programa ha sido desarrollado en respuesta a las necesidades planteadas en nuestra universidad en materia de correo electrónico fácil, seguro, accesible y de alto rendimiento, necesidades que no encontraron solución adecuada en los distintos programas freeware disponibles en ese momento en Internet. La implementación de Postman ha intentado combinar a la vez la facilidad de uso con las máximas prestaciones exigibles a un programa de correo moderno. Postman está siendo ampliamente usado desde principio de año en nuestra institución sin ningún problema.
Palabras clave: cliente de correo web, interfaz Web, IMAP, SMTP, MIME
Summary
"Postman" is a webmail client designed and written in the Computer Center of the University of Valencia. This software has been developed to address the need, raised by our users, of a friendly, safe and widely accessible high performance electronic mail interface. To the best of our knowledge no product in the freeware domain fulfills all those requirements. The goals of the implementation of Postman are easy to use and maximum performance, as expected in a modern e-mail program. Postman has been widely used in our University since the beginning of this year, and the experience has been very successful.
Keywords: web mail client, webmail, Web interface, IMAP, SMTP, MIME
A principios de 1998 en la Universitat de València varias circunstancias nos llevaron a pensar en la conveniencia de ofrecer un servicio de correo accesible por Web. Éstas eran:
Gran aumento del número de usuarios y de uso del correo electrónico, con el consiguiente incremento en el soporte técnico. Una sola instalación en nuestro servidor http podría dar soporte a todos los usuarios y estos no tendrían que preocuparse de la configuración.
Tras las búsquedas pertinentes en la red, y tras varias pruebas con algunos de los pocos clientes de correo que encontramos en ese momento (ver http://www.rediris.es/mail/webmail.es.html ó http://sourcepole.com/sources/reviews/webmail.xml), pronto llegamos a la conclusión que ninguno sastifacía nuestras necesidades. La mayoría eran clientes sencillos de POP3 escritos en lenguajes interpretados (ASP, Perl, Php, Mod_Perl) con muy bajo o nulo rendimiento cuando se hablaba de centenares de conexiones simúltaneas al servidor, al que sobrecargaban requiriendo enormes recursos de memoria y procesador. Otros hacían uso de características innecesarias, como necesidad de accesos a bases de datos; otros abusaban del uso de javascripts, u obligaban al uso de cookies para su buen funcionamiento (donde almacenaban las contraseñas). En la mayoría no funcionaba bien el soporte MIME y/o se requería una conexión/desconexión a la cuenta en el servidor de correo en cada transacción. Todo esto, y con la experiencia adquirida tras casi un año de funcionamiento en pruebas con alguno de los clientes que prometían funcionar, nos convenció que deberíamos programarnos nuestro propio cliente de correo, al que decidimos llamar "Postman". La experiencia nos había servido para tener claras las principales características que nuestro programa o cgi cliente debería tener:
Además, se decidió que los fuentes del cliente que se ha desarrollado estuvieran disponibles en la red.
Uno de los mayores escollos con los que tropiezan los clientes de aplicaciones con interfaz www sin el uso de java, es el mantenimiento del estado del programa. Para aumentar la eficacia, sobre todo con servidores de correo como el que utilizaba nuestra Universidad (IMAP-Univ. Washington) que en cada conexión-desconexión analizan el buzón entero, se decidió que entre el navegador Web y el servidor IMAP debería haber un servidor intermedio (que llamamos InterDaemon) que serviría para mantener la conexión entre el servidor Web y el servidor IMAP, además de almacenar el estado de la sesión. El verdadero cliente de correo es, pues, el InterDaemon y mantiene la conexión abierta con el servidor IMAP hasta que el usuario hace un "logout" o se produce un "timeout". Cada transacción es enviada por el servidor www al InterDaemon, el cual contesta consultando previamente al servidor IMAP, si es necesario. Este diseño, aunque en principio complicado, tiene las ventajas de reducir mucho la carga en el servidor donde reside (el CGI ó módulo a ejecutar por el servidor www es mínimo), así como del servidor IMAP. Este diseño también posibilita, si fuera necesario, tener cada servidor en una máquina distinta. El esquema sería:
TCP/80 stdin/stdout sockUNIX TCP/143 navegador <--> servidor web <--> cgi <--> InterDaemon <--> servidor IMAP | | ---------- POSTMAN -------------
Postman, por tanto, se compone de dos elementos: un pequeño cgi llamado cada vez por el servidor Web y un "daemon" permanente, encargado de lanzar los servidores (uno por sesión de usuario) que atienden a los cgi y que mantienen las conexiones con los servidores IMAP. El navegador se comunica por el puerto 80 de TCPIP con el servidor Web, éste lanza el cgi que envía la petición al InterDaemon usando sockets de UNIX y el InterDaemon habla por el puerto TCPIP estándar de IMAP con el servidor IMAP.
El soporte IMAP y MIME se ha implementado haciendo uso de la librería estándar c-client de la Universidad de Washington (escrita por Mark Crispín, el autor de la especificación IMAP). Se ha usado como referencia para el cumplimiento del estándar MIME el "mime-torture-test-mailbox", el cual es leído completamente sin problemas.
Para el envío de adjuntos se ha hecho uso de la especificación "Form-based File Upload" descrita en el rfc1867. Esta especificación es cumplida por la mayoría de los navegadores actuales.
Aparte de estas características principales, Postman también
Puede funcionar bajo servidor seguro (SSL).
Soporte de agenda con múltiples direcciones por alias, firma y múltiples buzones en el servidor.
Desde principios del año 2000, Postman está funcionando a pleno rendimiento en la Universitat de València en un servidor HP-D230 con sistema operativo HP-UX 10.20 con 256 MB de RAM sin ningún problema. Ha llegado a alcanzar más de cien conexiones simultáneas con una carga máxima del sistema de dos. Uno de los clientes anteriores probados, que hacía uso de tecnología mod_perl, agotaba los recursos del servidor con 60 o menos usuarios (1 Gb de swap, 300 procesos, carga 30).
Postman se puede usar con cualquier navegador (Internet Explorer, Netscape, ...), incluído el lynx (navegador sólo texto).
Postman ha sido compilado y probado con éxito en Linux y HP-UX. No se espera que tenga problemas graves de portabilidad a otros "sabores" de UNIX. Ha sido probado también con los servidores IMAP de la Universidad de Washington y el Cyrus.
En la siguiente referencia podemos ver las estadísticas de usuarios ue hacen uso de la interfaz Web de correo: http://www.uv.es/Estadisticas/MRTG/Correo/numwingpostal.html Se pueden ver volcados de pantalla de Postman en la siguiente URL: http://correo.uv.es/postman/screenshots/screenshots.html Para descargar el programa: http://ftp.uv.es/pub/unix/postman/postman.html ó ftp://ftp.uv.es/pub/unix/postman/postman.tar.gz
ABERNERS-LEE, T., FIELDING, R., FRYSTYK, H. "Hypertext Transfer Protocol - HTTP/1.0" RFC 1945,Mayo 1996.