|
|
|
A Webmail Solution Using IMPCopyright © 1999 Jon Parise
Abstract
History Already being familiar with PHP (http://www.php.net/), I started to investigate pre-existing solutions and immediately stumbled upon IMP (http://horde.org/imp). Developed by Chuck Hagenbuch for use at Williams College (http://wso.williams.edu/), it fit our needs exactly. IMP was in active development and already contained most of the features for which I was looking, so I began to toy with the distribution and soon found myself contributing back to the project. Within the past year since my first introduction to IMP and the Horde Project, the product has advanced phenomenally. Features such as LDAP directory searches, individual user preferences, spell checking, session management, MIME handling, folder management, address books, internationalization, ease of installation, and user interface have all undergone vast improvements. IMP has been adopted by universities, corporations, and web presences all over the world to fill the need for a scalable web-based email client, and its development is more active than ever.
Background An IMAP server is, of course, required. Several IMAP servers are available for BSD, but the two most popular are Washington University's IMAP server (http://www.washington.edu/imap/) and Carnegie Mellon's Project Cyrus (http://asg.web.cmu.edu/cyrus/). In order to allow users to store personal preferences and address books, an SQL database is required. MySQL (http://www.mysql.com/) seems to get the best support, as that is what most of the developers use, but most major SQL implementations are supported. Additional storage solutions are currently being explored. The newest IMP code supports fairly advanced session management. This requires some sort of backend storage, preferably an SQL database, although dbm, shared memory (SysV), and LDAP also work at the moment. The user will only need a web browser. We've traditionally had better luck with Netscape Navigator's handling of cookies and Javascript, but we make a strong attempt to ensure compatibility with Internet Explorer, too. Lynx support is marginal, although every so often someone will go on a crusade to improve it. For further information on designing a highly scalable webmail system, consult the Scalable Webmail HOW-TO (http://www.horde.org/papers/Scalable_webmail_HOWTO.html), written by Jason Belich (macmaster@pobox.com). It details the construction of large webmail installation using IMP and goes into more design particulars than I've covered here.
Implementation If you have doubts as to whether a PHP module was correctly installed, a handy trick is to create a simple web page (phpinfo.php3) containing: <?php phpinfo(); ?> Viewing phpinfo.php3 will call the phpinfo() function and display PHP's current configuration in the browser. This is useful for various debugging tasks. (Note: 'mod_imap' refers to Apache's image mapping support, not PHP's IMAP (mail protocol) module.) Assuming you have a PHP-enabled Apache binary up and running, you're ready to install IMP. You'll need to download both the latest Horde and IMP packages to get IMP to work correctly. Both are available from ftp.horde.org or from the mirror sites listed on www.horde.org. Assuming you want to have IMP available as webmail.domain.com (as most administrators apparently seem to prefer, judging by the number of questions asked on the IMP mailing list), you'll want to install the distribution similar to:
/var/www/horde You'll want to point your DocumentRoot at '/var/www/horde/imp' and set an Alias of '/horde' to '/var/www/horde'. This structure is required because Horde is, in fact, the logical and functional parent of IMP. You'll want to consult the distributed INSTALL document to complete the installation process. I won't detail here because IMP is rapidly evolving and the installation procedure often undergoes revisions. Most of the installation process is encapsulated in the provided web-based setup.php3 script to help make your life easier, though.
Configuration
Customization International language support has been added in IMP. Numerous translations are already available, and new localizations are constantly being contributed back to the project. Administrators can even override some or all of the language strings by using the locale/local/ directory.
Conclusion
Acknowledgments
References http://horde.org
Jon Parise, jon@csh.rit.edu
|
||