SquirrelMail  
Donations
News
About
Support
Screen shots
Download
Plugins
Documentation
Sponsors
Bounties



SquirrelMail Administrator's Manual: Overview Next Previous Contents

1. Overview

SquirrelMail is a standards-based webmail package written in PHP. It includes built-in pure PHP support for the IMAP and SMTP protocols, and all pages render in pure HTML 4.0 (with no JavaScript required) for maximum compatibility across browsers. It has few requirements and is easy to configure and install. SquirrelMail has all the functionality you would want from an email client, including strong MIME support, address books, and folder manipulation.

This manual supports SquirrelMail 1.4.0 and up. The 1.2.x series has been obsoleted, and is only referenced in the upgrading notes of this manual.

1.1 Server requirements

There are only two requirements for SquirrelMail:

  • A web server with PHP installed. PHP needs to be at least 4.1.0. PHP 4, PHP 5 and PHP 6 are all supported.
  • Access to an IMAP server which supports IMAP 4 rev 1.

It doesn't really matter what OS or web server you use, as long as the combination thereof supports PHP in a stable way. Read the instructions and suggestions in the PHP documentation to see what they recommend.

If you're building your mail system from scratch, it might be a good idea to install and test all components one by one. If you install everything at once and things don't work, the troubleshooting will be more complex. If the web server doesn't work there's not much point in trying to install PHP, for instance. Make sure that everything is working before trying to install SquirrelMail.

Choosing an IMAP server

You don't actually have to run an IMAP server yourself, but you need to be able to connect to one for SquirrelMail to work. Since IMAP is an open standard, all IMAP products should be able to communicate with each other. SquirrelMail requires that the server supports IMAP 4 rev 1, but that's the only requirement there is.

Some IMAP servers support various extensions, which are developed as a complement to IMAP. Those extensions aren't required by SquirrelMail, but many of them are supported. It's recommended to have an IMAP server that supports SORT and THREAD if possible. The SORT extension allows for server side sorting, which is a lot more efficient than having to rely on PHP for sorting. This will improve SquirrelMail's performance. If the server doesn't support the THREAD extension, SquirrelMail can't show mail conversation as threads.

If possible, the IMAP server should support Unicode. Without it some translations might be unable to use sorting and threading. Courier IMAP must be compiled with the --enable-unicode option to have Unicode support.

SquirrelMail doesn't care about how the server stores the mails, but it's generally a good idea not to have an IMAP server that store mails in the mailbox (mbox) format. Mailbox performance is low when there are many mails in the same folder and it doesn't allow both mails and subfolders at the same time in the same folder.

Another good idea is to have an IMAP server that allows the use of virtual accounts. Virtual users don't have to be system users, which usually is a good thing. Again, this is not a SquirrelMail requirement, but something that you might want to consider when choosing an IMAP server.

Some systems are delivered with an IMAP server, but if it doesn't measure up to the suggestions above, you might want to replace it. There are plenty of IMAP servers at the market, so it might be difficult to decide which one to choose. It is also difficult to recommend something, since every organization has unique demands. The IMAP Connection has a searchable database of IMAP servers, as well as more information about IMAP, but that list may not cover the entire market. There are also several sites offering advice and opinions on this matter. Read them, but make your own decision since the information at some of those sites might be outdated or biased. Remember that some of the open source alternatives are well matured products that can compete, and even surpass, the commercial servers.

Configuring PHP

  • Without the PHP gettext extension you lose in performance.
  • The PHP mbstring extension is required for translations that use multibyte or character sets but ISO-8859-1. Without the PHP mbstring extension the interface will remain usable, but some internationalization features and fixes won't be enabled. It's a must if you want to read and write Japanese emails, and users who whish to do that must also set their language option to Japanese.
  • The PHP XML extension is required if the DIGEST-MD5 authentication is used.

1.2 Optional server programs

  • Perl. SquirrelMail is shipped with some Perl scripts. One of the most useful is config/conf.pl, which will help you configure your SquirrelMail installation.
  • An SQL database supported by the PEAR DB library, and the PEAR DB library itself. See Using database backends for more information.
  • Aspell or Ispell to be able to use the SquirrelSpell plugin.

These are not a must have, since SquirrelMail will function without them, but they are adding to the experience so you might want to consider them.

1.3 Client requirements

  • Cookies must be enabled in your browser.
  • It might be hard to use SquirrelMail on a display smaller then 15" and with less resolution than 1024 x 768, and some customizations are required to make it usable.

1.4 Scalability

SquirrelMail is known to scale well for large installations with thousands of users. It's recommended to have a lot of free memory available at the web server. Another common problem with larger systems is the connections per minute limitation. Suggested reading is Optimizing SquirrelMail, SquirrelMail performance, and the speed section in the wiki.

An example of a large SquirrelMail installation (with peaks of 225 concurrent IMAP connections) is described in the article HEC Montréal: Deployment of a Large-Scale Mail Installation from the May 2004 edition of Linux Journal.


Next Previous Contents
© 1999-2010 by The SquirrelMail Project Team