commit | author | age
|
a89845
|
1 |
INTRODUCTION |
T |
2 |
============ |
|
3 |
|
e019f2
|
4 |
This file describes the basic steps to install Roundcube Webmail on your |
a89845
|
5 |
web server. For additional information, please also consult the project's |
83ce4b
|
6 |
wiki page at http://trac.roundcube.net/wiki |
T |
7 |
|
4e17e6
|
8 |
|
535da2
|
9 |
REQUIREMENTS |
T |
10 |
============ |
|
11 |
|
5d62d9
|
12 |
* The Apache, Lighttpd, Cherokee or Hiawatha web server |
535da2
|
13 |
* .htaccess support allowing overrides for DirectoryIndex |
78cf9c
|
14 |
* PHP Version 5.3.7 or greater including: |
8447ba
|
15 |
- PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required) |
78cf9c
|
16 |
- PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required) |
AM |
17 |
- Libiconv, Zip, Fileinfo, Intl, Exif (recommended) |
|
18 |
- LDAP for LDAP addressbook support (optional) |
91790e
|
19 |
* PEAR packages distributed with Roundcube or external: |
8c1c4f
|
20 |
- Mail_Mime 1.10.0 or newer |
d4df37
|
21 |
- Net_SMTP 1.7.1 or newer |
AM |
22 |
- Net_Socket 1.0.12 or newer |
50d7d3
|
23 |
- Net_IDNA2 0.1.1 or newer |
114cf1
|
24 |
- Auth_SASL 1.0.6 or newer |
52674e
|
25 |
- Net_Sieve 1.3.2 or newer (for managesieve plugin) |
6e4642
|
26 |
- Crypt_GPG 1.4.1 or newer (for enigma plugin) |
7d3406
|
27 |
* php.ini options (see .htaccess file): |
535da2
|
28 |
- error_reporting E_ALL & ~E_NOTICE (or lower) |
29640b
|
29 |
- memory_limit > 16MB (increase as suitable to support large attachments) |
067763
|
30 |
- file_uploads enabled (for attachment upload features) |
A |
31 |
- session.auto_start disabled |
7d3406
|
32 |
- suhosin.session.encrypt disabled |
A |
33 |
- mbstring.func_overload disabled |
140abb
|
34 |
- magic_quotes_runtime disabled |
0b6d02
|
35 |
- magic_quotes_sybase disabled |
0314bf
|
36 |
- register_globals disabled (PHP < 5.4) |
78cf9c
|
37 |
* A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer), Oracle |
AM |
38 |
database or SQLite support in PHP |
1fb2c8
|
39 |
* One of the above databases with permission to create tables |
7d3406
|
40 |
* An SMTP server (recommended) or PHP configured for mail delivery |
d4a820
|
41 |
* Composer installed either locally or globally (https://getcomposer.org) |
535da2
|
42 |
|
T |
43 |
|
4e17e6
|
44 |
INSTALLATION |
T |
45 |
============ |
|
46 |
|
|
47 |
1. Decompress and put this folder somewhere inside your document root |
1985eb
|
48 |
2. Install dependencies using composer: |
TB |
49 |
- get composer from https://getcomposer.org/download/ |
|
50 |
- rename the composer.json-dist file into composer.json |
408194
|
51 |
- if you want to use LDAP address books, enable the LDAP libraries in your |
TB |
52 |
composer.json file by moving the items from "suggest" to the "require" |
|
53 |
section (remove the explanation texts after the version!). |
0c137f
|
54 |
- run `php composer.phar install --no-dev` |
1985eb
|
55 |
3. Make sure that the following directories (and the files within) |
10a699
|
56 |
are writable by the webserver |
4e17e6
|
57 |
- /temp |
T |
58 |
- /logs |
1985eb
|
59 |
4. Create a new database and a database user for Roundcube (see DATABASE SETUP) |
TB |
60 |
5. Point your browser to http://url-to-roundcube/installer/ |
|
61 |
6. Follow the instructions of the install script (or see MANUAL CONFIGURATION) |
|
62 |
7. After creating and testing the configuration, remove the installer directory |
|
63 |
8. Check Known Issues section of this file |
42b113
|
64 |
|
T |
65 |
|
4b20e2
|
66 |
CONFIGURATION HINTS |
T |
67 |
=================== |
|
68 |
|
2c6951
|
69 |
IMPORTANT! Read all comments in defaults.inc.php, understand them |
AM |
70 |
and configure your installation to be not surprised by default behaviour. |
|
71 |
|
233622
|
72 |
Roundcube writes internal errors to the 'errors' log file located in the logs |
461a30
|
73 |
directory which can be configured in config/config.inc.php. If you want ordinary |
4b20e2
|
74 |
PHP errors to be logged there as well, enable the 'php_value error_log' line |
T |
75 |
in the .htaccess file and set the path to the log file accordingly. |
|
76 |
|
29640b
|
77 |
By default the session_path settings of PHP are not modified by Roundcube. |
T |
78 |
However if you want to limit the session cookies to the directory where |
|
79 |
Roundcube resides you can uncomment and configure the according line |
|
80 |
in the .htaccess file. |
|
81 |
|
4b20e2
|
82 |
|
10a699
|
83 |
DATABASE SETUP |
T |
84 |
============== |
|
85 |
|
233622
|
86 |
Note: Database for Roundcube must use UTF-8 character set. |
90c82e
|
87 |
Note: See defaults.inc.php file for examples of DSN configuration. |
0ba548
|
88 |
|
fa898a
|
89 |
* MySQL |
T |
90 |
------- |
10a699
|
91 |
Setting up the mysql database can be done by creating an empty database, |
T |
92 |
importing the table layout and granting the proper permissions to the |
|
93 |
roundcube user. Here is an example of that procedure: |
|
94 |
|
|
95 |
# mysql |
ad5600
|
96 |
> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; |
10a699
|
97 |
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost |
6ae6e4
|
98 |
IDENTIFIED BY 'password'; |
10a699
|
99 |
> quit |
fa898a
|
100 |
|
10a699
|
101 |
# mysql roundcubemail < SQL/mysql.initial.sql |
535da2
|
102 |
|
fa898a
|
103 |
Note 1: 'password' is the master password for the roundcube user. It is strongly |
3cf664
|
104 |
recommended you replace this with a more secure password. Please keep in |
T |
105 |
mind: You need to specify this password later in 'config/db.inc.php'. |
fa898a
|
106 |
|
1cded8
|
107 |
|
10a699
|
108 |
* SQLite |
T |
109 |
-------- |
8da072
|
110 |
Versions of sqlite database engine older than 3 aren't supported. |
AM |
111 |
Database file and structure is created automatically by Roundcube. |
|
112 |
Make sure your configuration points to some file location and that the |
83ce4b
|
113 |
webserver can write to the file and the directory containing the file. |
10a699
|
114 |
|
T |
115 |
|
1cded8
|
116 |
* PostgreSQL |
T |
117 |
------------ |
233622
|
118 |
To use Roundcube with PostgreSQL support you have to follow these |
a89845
|
119 |
simple steps, which have to be done as the postgres system user (or |
1cded8
|
120 |
which ever is the database superuser): |
T |
121 |
|
b91bc1
|
122 |
$ createuser -P roundcube |
ad5600
|
123 |
$ createdb -O roundcube -E UNICODE roundcubemail |
b91bc1
|
124 |
$ psql -U roundcube -f SQL/postgres.initial.sql roundcubemail |
1cded8
|
125 |
|
b91bc1
|
126 |
Note: in some system configurations you might need to add '-U postgres' to |
AM |
127 |
createuser and createdb commands. |
233622
|
128 |
|
T |
129 |
|
c72f69
|
130 |
* Microsoft SQL Server |
AM |
131 |
---------------------- |
|
132 |
Language/locale of the database must be set to us_english (1033). More info |
|
133 |
on this at http://trac.roundcube.net/ticket/1488918. |
|
134 |
|
|
135 |
|
233622
|
136 |
Database cleaning |
T |
137 |
----------------- |
c72f69
|
138 |
To keep your database slick and clean we recommend to periodically execute |
30aa4c
|
139 |
bin/cleandb.sh which finally removes all records that are marked as deleted. |
233622
|
140 |
Best solution is to install a cronjob running this script daily. |
1cded8
|
141 |
|
T |
142 |
|
190e97
|
143 |
MANUAL CONFIGURATION |
T |
144 |
==================== |
535da2
|
145 |
|
9bacb2
|
146 |
First of all, copy the sample configuration file config/config.inc.php.sample |
TB |
147 |
to config/config.inc.php and make the necessary adjustments according to your |
|
148 |
environment and your needs. More configuration options can be copied from the |
|
149 |
config/defaults.inc.php file into your local config.inc.php file as needed. |
|
150 |
Read the comments above the individual configuration options to find out what |
|
151 |
they do or read http://trac.roundcube.net/wiki/Howto_Install for even more |
|
152 |
guidance. |
535da2
|
153 |
|
4b9efb
|
154 |
You can also modify the default .htaccess file. This is necessary to |
S |
155 |
increase the allowed size of file attachments, for example: |
|
156 |
php_value upload_max_filesize 2M |
535da2
|
157 |
|
83ce4b
|
158 |
|
012555
|
159 |
SECURE YOUR INSTALLATION |
TB |
160 |
======================== |
|
161 |
|
|
162 |
Access through the webserver to the following directories should be denied: |
|
163 |
|
|
164 |
/config |
|
165 |
/temp |
|
166 |
/logs |
|
167 |
|
|
168 |
Roundcube uses .htaccess files to protect these directories, so be sure to |
|
169 |
allow override of the Limit directives to get them taken into account. The |
|
170 |
package also ships a .htaccess file in the root directory which defines some |
|
171 |
rewrite rules. In order to properly secure your installation, please enable |
|
172 |
mod_rewrite for Apache webserver and double check access to the above listed |
|
173 |
directories and their contents is denied. |
|
174 |
|
585ee9
|
175 |
NOTE: In Apache 2.4, support for .htaccess files has been disabled by |
TB |
176 |
default. Therefore you first need to enable this in your Apache main or |
|
177 |
virtual host config by with: |
|
178 |
|
|
179 |
AllowOverride all |
|
180 |
|
012555
|
181 |
|
42b113
|
182 |
UPGRADING |
T |
183 |
========= |
6ae6e4
|
184 |
|
233622
|
185 |
If you already have a previous version of Roundcube installed, |
42b113
|
186 |
please refer to the instructions in UPGRADING guide. |
4e17e6
|
187 |
|
T |
188 |
|
d7f49d
|
189 |
OPTIMISING |
T |
190 |
========== |
|
191 |
|
|
192 |
There are two forms of optimisation here, compression and caching, both aimed |
233622
|
193 |
at increasing an end user's experience using Roundcube Webmail. Compression |
d7f49d
|
194 |
allows the static web pages to be delivered with less bandwidth. The index.php |
233622
|
195 |
of Roundcube Webmail already enables compression on its output. The settings |
d7f49d
|
196 |
below allow compression to occur for all static files. Caching sets HTTP |
T |
197 |
response headers that enable a user's web client to understand what is static |
|
198 |
and how to cache it. |
|
199 |
|
|
200 |
The caching directives used are: |
|
201 |
* Etags - sets at tag so the client can request is the page has changed |
|
202 |
* Cache-control - defines the age of the page and that the page is 'public' |
|
203 |
This enables clients to cache javascript files that don't have private |
|
204 |
information between sessions even if using HTTPS. It also allows proxies |
|
205 |
to share the same cached page between users. |
|
206 |
* Expires - provides another hint to increase the lifetime of static pages. |
|
207 |
|
|
208 |
For more information refer to RFC 2616. |
|
209 |
|
|
210 |
Side effects: |
|
211 |
------------- |
|
212 |
These directives are designed for production use. If you are using this in |
|
213 |
a development environment you may get horribly confused if your webclient |
|
214 |
is caching stuff that you changed on the server. Disabling the expires |
|
215 |
parts below should save you some grief. |
|
216 |
|
|
217 |
If you are changing the skins, it is recommended that you copy content to |
|
218 |
a different directory apart from 'default'. |
|
219 |
|
|
220 |
Apache: |
|
221 |
------- |
|
222 |
To enable these features in apache the following modules need to be enabled: |
a5c2ad
|
223 |
* mod_deflate |
A |
224 |
* mod_expires |
d7f49d
|
225 |
* mod_headers |
T |
226 |
|
|
227 |
The optimisation is already included in the .htaccess file in the top |
|
228 |
directory of your installation. |
|
229 |
|
|
230 |
If you are using Apache version 2.2.9 and later, in the .htaccess file |
|
231 |
change the 'append' word to 'merge' for a more correct response. Keeping |
|
232 |
as 'append' shouldn't cause any problems though changing to merge will |
|
233 |
eliminate the possibility of duplicate 'public' headers in Cache-control. |
|
234 |
|
|
235 |
Lighttpd: |
|
236 |
--------- |
|
237 |
With Lightty the addition of Expire: tags by mod_expire is incompatible with |
|
238 |
the addition of "Cache-control: public". Using Cache-control 'public' is |
|
239 |
used below as it is assumed to give a better caching result. |
|
240 |
|
|
241 |
Enable modules in server.modules: |
|
242 |
"mod_setenv" |
|
243 |
"mod_compress" |
|
244 |
|
|
245 |
Mod_compress is a server side cache of compressed files to improve its performance. |
|
246 |
|
|
247 |
$HTTP["host"] == "www.example.com" { |
|
248 |
|
|
249 |
static-file.etags = "enable" |
|
250 |
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Etag.use-mtimeDetails |
|
251 |
etag.use-mtime = "enable" |
|
252 |
|
|
253 |
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModSetEnv |
|
254 |
$HTTP["url"] =~ "^/roundcubemail/(plugins|skins|program)" { |
|
255 |
setenv.add-response-header = ( "Cache-Control" => "public, max-age=2592000") |
|
256 |
} |
|
257 |
|
|
258 |
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModCompress |
|
259 |
# set compress.cache-dir to somewhere outside the docroot. |
|
260 |
compress.cache-dir = var.statedir + "/cache/compress" |
|
261 |
|
|
262 |
compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml", "image/gif", "image/png") |
|
263 |
} |
ed3e51
|
264 |
|
AM |
265 |
|
|
266 |
KNOWN ISSUES |
|
267 |
============ |
|
268 |
|
|
269 |
Installations with uw-imap server should set imap_disabled_caps = array('ESEARCH') |
|
270 |
in main configuration file. ESEARCH implementation in this server is broken (#1489184). |