SquirrelMail English Site Danish Site French Site Russian Site Japanese Site 
News
About
Support
Screen shots
Download
Plugins
Documentation
Sponsors



SquirrelMail Administrator's Manual: Installing SquirrelMail Next Previous Contents

3. Installing SquirrelMail

3.1 Quick and Dirty install

In order to use SquirrelMail, you should take the following steps.

Download all required software

You can find SquirrelMail package on SquirrelMail site. PHP can be found on PHP site.

Install webserver and PHP (at least 4.1.0).

SquirrelMail needs a webserver with PHP support. Check PHP install manual for information about supported web servers and install procedures.

Some Linux and Unix distributions provide precompiled web server and php packages.

We recommend the following PHP settings:

  • register_globals off - a dangerous setting, not needed. We do not release security advisories for issues only exploitable with this setting on. Note that you can easily enable it only for some legacy site that may need it and turn it off globally.
  • magic_quotes_{runtime,gpc,sybase} off - SquirrelMail may work with any of these on, but if you experience stray backslashes in your mail or other strange behaviour, it may be advisable to turn them off.
  • file_uploads on - needed if your users want to attach files to their mails.
  • safe_mode on or off - safe_mode on is only a tiny bint more secure, in the SquirrelMail case. There may be some incompatibilities with some functionality (see Safe mode).

Install IMAP server

It depends on used email system. Email server needs IMAP service that knows used email system layout. If you use Unix with standard sendmail server, you might have to install UW IMAP, Dovecot or other IMAP server, that can use email stored in /var/spool/mail/ directory. If you use Windows, you might have to enable IMAP service that is bundled with your email server. If your email server does not support IMAP, you might have to find some other email server product.

Unpack SquirrelMail package

Unpack the SquirrelMail package in a web-accessible location.

Prepare data and attachment directories

Select a data-dir and attachment dir, outside the webtree (e.g. in /var). The data-dir (for user prefs) should be owned by the user the webserver runs as (e.g. www-data). The attachment dir (for uploading files as attachments) should be file mode 0730 and in the same group as the webserver.

If you use PHP with safe mode enabled, check chapter about safe mode.

Configure SquirrelMail

Run config/conf.pl from the command line. Use the D option to load predefined options for specific IMAP servers, and edit at least the Server Settings and General Options (datadir).

Check your SquirrelMail configuration

Browse to http://example.com/yourwebmaillocation/src/configtest.php to test your configuration for common errors.

Log into SquirrelMail

Browse to http://example.com/yourwebmaillocation/ to log in.

3.2 Installing SquirrelMail on Unix and Linux systems

This chapter covers installation of SquirrelMail on generic Unix or Linux system. It does not cover installation of operating system or tools required to install web server or PHP.

Any version numbers used in examples are specific to the time when this documentation is written. If current version numbers differ, make sure that you are not using old, obsolete or vulnerable software.

Guide uses UW IMAP server as example. This IMAP server can be used in generic email setup when incoming mail is stored in /var/spool/mail directory. If you are planning to use webmail with big number of users or with bigger mailboxes, consider using different IMAP server and redesign entire email system.

Download required software

You will need:

# install -d /usr/local/src/downloads
# cd /usr/local/src/downloads
# wget http://some-apache-mirror-server/apache/httpd/httpd-2.0.54.tar.gz
# wget http://some-php-mirror-server/get/php-4.3.11.tar.bz2/from/this/mirror
# wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
# wget http://some-sourceforge-mirror/some-path/squirrelmail-1.4.5.tar.bz2

Unpack and install apache

# cd /usr/local/src
# tar -xzvf /usr/local/src/downloads/httpd-2.0.54.tar.gz
# cd httpd-2.0.54
# ./configure --prefix=/usr/local/apache --enable-module=so
# make
# make install

Unpack and install php

# cd /usr/local/src
# tar --bzip2 -xvf /usr/local/src/downloads/php-4.3.11.tar.bz2
# cd php-4.3.11
# ./configure --prefix=/usr/local/php \
> --with-apxs2=/usr/local/apache/bin/apxs
# make
# make install

If you configure PHP compilation with --disable-all option, you must add --enable-session and --with-pcre-regex options.

Add PHP support to apache

<IfModule mod_php4.c>
  AddType application/x-httpd-php .php
</IfModule>

Restart apache and check if php is working

/usr/local/apache/bin/apachectl graceful

<?php phpinfo(); ?>

Unpack and install imap server

Unpack UW IMAP archive.

# cd /usr/local/src
# tar -xzvf /usr/local/src/downloads/imap.tar.Z

Compile UW IMAP

cd /usr/local/src/imap-<someversion>
make port-name EXTRADRIVERS='' SSLTYPE=unix

Replace port-name with name that matches your system. Check Makefile for possible values. If you haven't installed OpenSSL libraries and headers, use SSLTYPE=none instead of SSLTYPE=unix.

Install IMAP server binary

strip imapd/imapd
install -d /usr/local/libexec/
cp imapd/imapd /usr/local/libexec/

Enable IMAP server in inetd.conf

imap2 stream tcp nowait root /usr/sbin/tcpd /usr/local/libexec/imapd

Restart inetd

Prepare SquirrelMail directories

# mkdir /usr/local/squirrelmail
# cd /usr/local/squirrelmail
# mkdir data temp
# chgrp nogroup data temp
# chmod 0730 data temp

Unpack SquirrelMail

# cd /usr/local/squirrelmail
# tar --bzip2 -xvf /usr/local/src/downloads/squirrelmail-1.4.5.tar.bz2
# mv squirrelmail-1.4.5 www

Configure SquirrelMail

Start SquirrelMail configuration utility. Configure SquirrelMail with UW preset. Set data and attachment directories.

Configure access to SquirrelMail in Apache

Modify httpd.conf

Alias /squirrelmail /usr/local/squirrelmail/www
<Directory /usr/local/squirrelmail/www>
  Options Indexes
  AllowOverride none
  DirectoryIndex index.php
  Order allow,deny
  allow from all
</Directory>

Log into SquirrelMail

After you add alias to SquirrelMail in apache configuration and restart apache, you should be able to access SquirrelMail by going to http://your-server/squirrelmail.

3.3 Installing SquirrelMail on a hosted service without shell access

How to install SquirrelMail on a server where you do not have shell access or administrative access.

Requirements

First, check the general SquirrelMail requirements.

Additionally, you should be able to:

  • add files to your web server's document directory
  • execute PHP scripts (see the wiki page about testing PHP settings).
  • PHP scripts should be able to connect to your IMAP, SMTP and any other servers that are used by SquirrelMail.

Optional features:

  • Control of PHP settings with .htaccess files
  • PHP access to a SQL database.

You will need:

  • the address and type of the IMAP server you plan to use
  • the address of the SMTP server you plan to use

Installation

SquirrelMail is installed by copying all of its files to the web server. You should be able to do that with a FTP, SFTP or FTP-SSL client program.

Configuration

You need to create a configuration file for SquirrelMail. If you have Perl on your own computer, you can run the SquirrelMail configuration script (conf.pl, found in the config/ directory) on your computer, using it to adjust your configuration, choose save when done, and then upload the resultant config.php file to the web server. Be sure to put this file into the SquirrelMail config/ directory on your web server. You can now skip to the next step below - testing your configuration.

If you don't have Perl on your computer, you'll need to create the configuration file by hand. Make a copy of config_default.php (also found in the config/ directory), naming it config.php, then open it in your favorite text editor or PHP editor (see below). You must save the file as plain text - do not use a word processor's document format. When you're done with it, put it in the SquirrelMail config/ directory on your web server.

Editing the configuration file is fairly easy: the comments in the default configuration file that you are starting with do a good job of explaining what each setting is for. Keep in mind that the configuration file is actually a PHP script and must contain valid PHP syntax. This means that you should only change values that are (usually but not always) in quotes, making sure not to alter anything else. It is especially important that you leave the semicolons at the end of each line. Always save a copy of the original file in case you make a mistake and need to start over.

When editing the configuration file by hand, you don't have to change ALL the settings in the default configuration file, but there are several that are mandatory:

1. Default Domain: This is set in the $domain setting and is the part after the "@" sign in the mail addresses on your mail server. For example:

$domain = 'example.org';

2. Paths to Data and Attachment Directories: These are set in the $data_dir and $attachment_dir settings. These should usually be the full path from the root directory of your hard disk, not a path that is relative to your web or FTP directory. However, it is possible to specify a relative path from the SquirrelMail src/ directory (for example, ../data might work for $data_dir), but this is discouraged in favor of more robust full path specification and placing these directories apart from the SquirrelMail code itself. The web server must have write permission to these directories (your FTP access permissions are not the same as the web server's access permissions). See the comments in the configuration file for more information about setting the correct directory permissions (you may need to ask your hosting service to do this for you). For example:

$data_dir = '/var/lib/squirrelmail/data/';
$attachment_dir = '/var/spool/squirrelmail/attachments/';

3. Address of the IMAP Server: This is set in the $imapServerAddress variable. For example:

$imapServerAddress = 'imap.example.org';

4. IMAP Encryption: You may use encryption for your IMAP connections if desired or necessary. If you don't know what this means, chances are that you may not need it and can skip this step. To do this, you will have to modify the $imapPort and $use_imap_tls settings. For example:

$imapPort = 993;
$use_imap_tls = true;

5. Address of the SMTP Server, SMTP Port and SMTP Encryption Settings: You must set the $smtpServerAddress, $smtpPort and $use_smtp_tls settings. These are similar to the IMAP settings explained above. Encrypted SMTP typically uses port 465, and may not be necessary if you are unaware of whether your SMTP server supports encryption. For example:

$smtpServerAddress = 'smtp.example.org';
$smtpPort = 25;
$use_smtp_tls = false;

6. IMAP Server Settings: Check the file presets.txt in the SquirrelMail doc/ directory to see if your IMAP server type is listed there. If so, adjust the settings in your configuration file according to the ones that match your server type.

7. Optional: It is easier to continue to configure SquirelMail using a web interface (the "administrator" plugin), however this requires that the web server is able to overwrite the configuration file - some hosting environments do not allow this or require you to ask them to do it for you. This can also be a security risk that you may wish to weigh against the trouble of continuing to edit other configuration settings by hand. If you decide to (and are able to) proceed in this fashion, you'll add "administrator" as the first plugin in the configuration file. Find this part of the configuration file:

/**
 * To install plugins, just add elements to this array that have
 * the plugin directory name relative to the /plugins/ directory.
 * For instance, for the 'sqclock' plugin, you'd put a line like
 * the following.
 *    $plugins[0] = 'sqclock';
 *    $plugins[1] = 'attachment_common';
 */
// Add list of enabled plugins here

Just after that, you'll add this line:

$plugins[0] = 'administrator';

Next, you'll need to tell the administrator plugin who the administrator is (so that only you have access to it and your normal users do not). Create a file named admins with your IMAP user name in it and upload it to the SquirrelMail config/ directory. When you have logged in to SquirrelMail (see below), click on the "Options" link at the top of the page. If your user name matches the one that is in admins file, you should now see an "Administration" block on the SquirrelMail options page which can be used to further configure SquirrelMail.

Test your configuration

After you have uploaded config.php to the SquirrelMail config/ directory, go to http://your-server/path-to-squirrelmail/src/configtest.php and check if the configuration is correct so far. Every time you change your configuration file, it is a good idea to re-visit this page to make sure everything is working correctly. This page includes making a test connection to the IMAP server, so make sure it is working correctly and accepting connections.

First login

Go to http://your-server/path-to-squirrelmail/src/login.php and try logging in. You should use a user name and password that are known to work with your IMAP server.

3.4 Prepackaged SquirrelMail installs

If your operating system distribution provides prepackaged SquirrelMail, it might be a good idea to use that. The drawback is that you probably don't have the latest and greatest version. But on the plus side: the whole installation step is managed for you, it integrates better with the rest of your system and you're provided with security updates automatically.

SquirrelMail provides RPM packages. There are two packaging flavors. Standard package that can be used on RedHat 8.x or later. 7.x.noarch.rpm package is designed for RedHat 7.x systems. Main difference between packages - standard package contains standard Apache configuration file with /webmail/ alias in /etc/httpd/conf.d and different package dependencies. There are other SquirrelMail packages created by RedHat, Fedora, SuSE and other RPM distributions.

Debian packages can be downloaded from the Debian website or you can install them with your favorite Debian package manager. For example: apt-get install squirrelmail. If you use Debian stable and SquirrelMail package is a little bit outdated, you might be able to install newer SquirrelMail package from testing or unstable. This is not guaranteed to work though.

FreeBSD includes two different SquirrelMail packages in their ports collection.


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