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
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.
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 troubleshoting 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
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
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
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
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.
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