The Perfect Server - Ubuntu 12.04 LTS (Apache2, BIND, Dovecot, ISPConfig 3) - Page 6
This tutorial exists for these OS versions
- Ubuntu 20.04 (Focal Fossa)
 - Ubuntu 18.04 (Bionic Beaver)
 - Ubuntu 17.10 (Artful Aardvark)
 - Ubuntu 17.04 (Zesty Zapus)
 - Ubuntu 16.10 (Yakkety Yak)
 - Ubuntu 16.04 (Xenial Xerus)
 
On this page
21 Install SquirrelMail
To install the SquirrelMail webmail client, run
apt-get install squirrelmail
Then configure SquirrelMail:
squirrelmail-configure
We must tell SquirrelMail that we are using Dovecot-IMAP/-POP3:
SquirrelMail Configuration : Read: config.php (1.4.0)
 ---------------------------------------------------------
 Main Menu --
 1.  Organization Preferences
 2.  Server Settings
 3.  Folder Defaults
 4.  General Options
 5.  Themes
 6.  Address Books
 7.  Message of the Day (MOTD)
 8.  Plugins
 9.  Database
 10. Languages
 
 D.  Set pre-defined settings for specific IMAP servers
 
 C   Turn color on
 S   Save data
 Q   Quit
 
 Command >> <-- D
 
 
 SquirrelMail Configuration : Read: config.php
 ---------------------------------------------------------
 While we have been building SquirrelMail, we have discovered some
 preferences that work better with some servers that don't work so
 well with others.  If you select your IMAP server, this option will
 set some pre-defined settings for that server.
 
 Please note that you will still need to go through and make sure
 everything is correct.  This does not change everything.  There are
 only a few settings that this will change.
 
 Please select your IMAP server:
     bincimap    = Binc IMAP server
     courier     = Courier IMAP server
     cyrus       = Cyrus IMAP server
     dovecot     = Dovecot Secure IMAP server
     exchange    = Microsoft Exchange IMAP server
     hmailserver = hMailServer
     macosx      = Mac OS X Mailserver
     mercury32   = Mercury/32
     uw          = University of Washington's IMAP server
     gmail       = IMAP access to Google mail (Gmail) accounts
 
     quit        = Do not change anything
 Command >> <-- dovecot
 
 
 SquirrelMail Configuration : Read: config.php
 ---------------------------------------------------------
 While we have been building SquirrelMail, we have discovered some
 preferences that work better with some servers that don't work so
 well with others.  If you select your IMAP server, this option will
 set some pre-defined settings for that server.
 
 Please note that you will still need to go through and make sure
 everything is correct.  This does not change everything.  There are
 only a few settings that this will change.
 
 Please select your IMAP server:
     bincimap    = Binc IMAP server
     courier     = Courier IMAP server
     cyrus       = Cyrus IMAP server
     dovecot     = Dovecot Secure IMAP server
     exchange    = Microsoft Exchange IMAP server
     hmailserver = hMailServer
     macosx      = Mac OS X Mailserver
     mercury32   = Mercury/32
     uw          = University of Washington's IMAP server
     gmail       = IMAP access to Google mail (Gmail) accounts
 
     quit        = Do not change anything
 Command >> dovecot
 
               imap_server_type = dovecot
          default_folder_prefix = <none>
                   trash_folder = Trash
                    sent_folder = Sent
                   draft_folder = Drafts
             show_prefix_option = false
           default_sub_of_inbox = false
 show_contain_subfolders_option = false
             optional_delimiter = detect
                  delete_folder = false
 
 Press any key to continue... <-- press a key
 
 
 SquirrelMail Configuration : Read: config.php (1.4.0)
 ---------------------------------------------------------
 Main Menu --
 1.  Organization Preferences
 2.  Server Settings
 3.  Folder Defaults
 4.  General Options
 5.  Themes
 6.  Address Books
 7.  Message of the Day (MOTD)
 8.  Plugins
 9.  Database
 10. Languages
 
 D.  Set pre-defined settings for specific IMAP servers
 
 C   Turn color on
 S   Save data
 Q   Quit
 
 Command >> <-- S
 
 
 SquirrelMail Configuration : Read: config.php (1.4.0)
 ---------------------------------------------------------
 Main Menu --
 1.  Organization Preferences
 2.  Server Settings
 3.  Folder Defaults
 4.  General Options
 5.  Themes
 6.  Address Books
 7.  Message of the Day (MOTD)
 8.  Plugins
 9.  Database
 10. Languages
 
 D.  Set pre-defined settings for specific IMAP servers
 
 C   Turn color on
 S   Save data
 Q   Quit
 
 Command >> <-- Q
Now we will configure SquirrelMail so that you can use it from within your web sites (created through ISPConfig) by using the /squirrelmail or /webmail aliases. So if your website is www.example.com, you will be able to access SquirrelMail using www.example.com/squirrelmail or www.example.com/webmail.
SquirrelMail's Apache configuration is in the file /etc/squirrelmail/apache.conf, but this file isn't loaded by Apache because it is not in the /etc/apache2/conf.d/ directory. Therefore we create a symlink called squirrelmail.conf in the /etc/apache2/conf.d/ directory that points to /etc/squirrelmail/apache.conf and reload Apache afterwards:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Now open /etc/apache2/conf.d/squirrelmail.conf...
vi /etc/apache2/conf.d/squirrelmail.conf
... and add the following lines to the <Directory /usr/share/squirrelmail></Directory> container that make sure that mod_php is used for accessing SquirrelMail, regardless of what PHP mode you select for your website in ISPConfig:
[...]
<Directory /usr/share/squirrelmail>
  Options FollowSymLinks
  <IfModule mod_php5.c>
    AddType application/x-httpd-php .php
    php_flag magic_quotes_gpc Off
    php_flag track_vars On
    php_admin_flag allow_url_fopen Off
    php_value include_path .
    php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
    php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname:/var/spool/squirrelmail
    php_flag register_globals off
  </IfModule>
  <IfModule mod_dir.c>
    DirectoryIndex index.php
  </IfModule>
  # access to configtest is limited by default to prevent information leak
  <Files configtest.php>
    order deny,allow
    deny from all
    allow from 127.0.0.1
  </Files>
</Directory>
[...]
 | 
Create the directory /var/lib/squirrelmail/tmp...
mkdir /var/lib/squirrelmail/tmp
... and make it owned by the user www-data:
chown www-data /var/lib/squirrelmail/tmp
Reload Apache again:
/etc/init.d/apache2 reload
That's it already - /etc/apache2/conf.d/squirrelmail.conf defines an alias called /squirrelmail that points to SquirrelMail's installation directory /usr/share/squirrelmail.
You can now access SquirrelMail from your web site as follows:
http://192.168.0.100/squirrelmail
http://www.example.com/squirrelmail
You can also access it from the ISPConfig control panel vhost (after you have installed ISPConfig, see the next chapter) as follows (this doesn't need any configuration in ISPConfig):
http://server1.example.com:8080/squirrelmail
If you'd like to use the alias /webmail instead of /squirrelmail, simply open /etc/apache2/conf.d/squirrelmail.conf...
vi /etc/apache2/conf.d/squirrelmail.conf
... and add the line Alias /webmail /usr/share/squirrelmail:
Alias /squirrelmail /usr/share/squirrelmail Alias /webmail /usr/share/squirrelmail [...]  | 
Then reload Apache:
/etc/init.d/apache2 reload
Now you can access Squirrelmail as follows:
http://192.168.0.100/webmail
 http://www.example.com/webmail
 http://server1.example.com:8080/webmail (after you have installed ISPConfig, see the next chapter)
If you'd like to define a vhost like webmail.example.com where your users can access SquirrelMail, you'd have to add the following vhost configuration to /etc/apache2/conf.d/squirrelmail.conf:
vi /etc/apache2/conf.d/squirrelmail.conf
[...] <VirtualHost 1.2.3.4:80> DocumentRoot /usr/share/squirrelmail ServerName webmail.example.com </VirtualHost>  | 
Make sure you replace 1.2.3.4 with the correct IP address of your server. Of course, there must be a DNS record for webmail.example.com that points to the IP address that you use in the vhost configuration. Also make sure that the vhost webmail.example.com does not exist in ISPConfig (otherwise both vhosts will interfere with each other!).
Now reload Apache...
/etc/init.d/apache2 reload
... and you can access SquirrelMail under http://webmail.example.com!
					