| | |
| | | * The Apache or Lighttpd Webserver |
| | | * .htaccess support allowing overrides for DirectoryIndex |
| | | * PHP Version 5.2 or greater including |
| | | - PCRE (perl compatible regular expression) |
| | | - DOM (xml document object model) |
| | | - PCRE, DOM, JSON, XML, Session, Sockets (required) |
| | | - libiconv (recommended) |
| | | - mbstring (optional) |
| | | * php.ini options: |
| | | - mbstring, fileinfo, mcrypt (optional) |
| | | * PEAR packages distributed with Roundcube or external: |
| | | - MDB2 2.5.0 or newer |
| | | - Mail_Mime 1.6.0 or newer |
| | | - Net_SMTP 1.4.1 or newer |
| | | * php.ini options (see .htaccess file): |
| | | - error_reporting E_ALL & ~E_NOTICE (or lower) |
| | | - memory_limit (increase as suitable to support large attachments) |
| | | - memory_limit > 16MB (increase as suitable to support large attachments) |
| | | - file_uploads enabled (for attachment upload features) |
| | | - session.auto_start disabled |
| | | - zend.ze1_compatibility_mode disabled |
| | | - suhosin.session.encrypt disabled |
| | | - mbstring.func_overload disabled |
| | | * PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker |
| | | * A MySQL or PostgreSQL database engine or the SQLite extension for PHP |
| | | * A MySQL, PostgreSQL or MSSQL database engine or the SQLite extension for PHP |
| | | * One of the above databases with permission to create tables |
| | | * An SMTP server or PHP configured for mail delivery |
| | | * An SMTP server (recommended) or PHP configured for mail delivery |
| | | |
| | | |
| | | INSTALLATION |
| | |
| | | - /logs |
| | | 3. Create a new database and a database user for RoundCube (see DATABASE SETUP) |
| | | 4. Point your browser to http://url-to-roundcube/installer/ |
| | | 5. Follow the instructions of the install script (or see MANUAL CONFINGURATION) |
| | | 5. Follow the instructions of the install script (or see MANUAL CONFIGURATION) |
| | | 6. After creating and testing the configuration, remove the installer directory |
| | | 7. Done! |
| | | |
| | | |
| | | CONFIGURATION HINTS |
| | | =================== |
| | | |
| | | RoundCube writes internal errors to the 'errors' log file located in the logs |
| | | directory which can be configured in config/main.inc.php. If you want ordinary |
| | | PHP errors to be logged there as well, enable the 'php_value error_log' line |
| | | in the .htaccess file and set the path to the log file accordingly. |
| | | |
| | | By default the session_path settings of PHP are not modified by Roundcube. |
| | | However if you want to limit the session cookies to the directory where |
| | | Roundcube resides you can uncomment and configure the according line |
| | | in the .htaccess file. |
| | | |
| | | |
| | | DATABASE SETUP |
| | | ============== |
| | | |
| | | Note: Database for RoundCube must use UTF-8 character set. |
| | | |
| | | * MySQL |
| | | ------- |
| | |
| | | recommended you replace this with a more secure password. Please keep in |
| | | mind: You need to specify this password later in 'config/db.inc.php'. |
| | | |
| | | Note 2: For MySQL version 4.1 and up, it's recommended to create the database for |
| | | RoundCube with utf-8 charset. |
| | | |
| | | |
| | | * SQLite |
| | | -------- |
| | | Sqlite requires specifically php5 (sqlite in php4 currently doesn't |
| | | work with roundcube), and you need sqlite 2 (preferably 2.8) to setup |
| | | the sqlite db (sqlite 3.x also doesn't work at the moment). Here is |
| | | You need sqlite 2 (preferably 2.8) to setup the sqlite db |
| | | (sqlite 3.x also doesn't work at the moment). Here is |
| | | an example how you can setup the sqlite.db for roundcube: |
| | | |
| | | # sqlite -init SQL/sqlite.initial.sql sqlite.db |
| | | Loading resources from SQL/sqlite.initial.sql |
| | | SQLite version 2.8.16 |
| | | Enter ".help" for instructions |
| | | sqlite> .exit |
| | | # chmod o+rw sqlite.db |
| | | |
| | | Make sure your configuration points to the sqlite.db file and that the |
| | | webserver can write to the file and the directory containing the file. |
| | |
| | | please refer to the instructions in UPGRADING guide. |
| | | |
| | | |
| | | OPTIMISING |
| | | ========== |
| | | |
| | | There are two forms of optimisation here, compression and caching, both aimed |
| | | at increasing an end user's experience using RoundCube Webmail. Compression |
| | | allows the static web pages to be delivered with less bandwidth. The index.php |
| | | of RoundCube Webmail already enables compression on its output. The settings |
| | | below allow compression to occur for all static files. Caching sets HTTP |
| | | response headers that enable a user's web client to understand what is static |
| | | and how to cache it. |
| | | |
| | | The caching directives used are: |
| | | * Etags - sets at tag so the client can request is the page has changed |
| | | * Cache-control - defines the age of the page and that the page is 'public' |
| | | This enables clients to cache javascript files that don't have private |
| | | information between sessions even if using HTTPS. It also allows proxies |
| | | to share the same cached page between users. |
| | | * Expires - provides another hint to increase the lifetime of static pages. |
| | | |
| | | For more information refer to RFC 2616. |
| | | |
| | | Side effects: |
| | | ------------- |
| | | These directives are designed for production use. If you are using this in |
| | | a development environment you may get horribly confused if your webclient |
| | | is caching stuff that you changed on the server. Disabling the expires |
| | | parts below should save you some grief. |
| | | |
| | | If you are changing the skins, it is recommended that you copy content to |
| | | a different directory apart from 'default'. |
| | | |
| | | Apache: |
| | | ------- |
| | | To enable these features in apache the following modules need to be enabled: |
| | | * mod_deflate |
| | | * mod_expires |
| | | * mod_headers |
| | | |
| | | The optimisation is already included in the .htaccess file in the top |
| | | directory of your installation. |
| | | |
| | | If you are using Apache version 2.2.9 and later, in the .htaccess file |
| | | change the 'append' word to 'merge' for a more correct response. Keeping |
| | | as 'append' shouldn't cause any problems though changing to merge will |
| | | eliminate the possibility of duplicate 'public' headers in Cache-control. |
| | | |
| | | Lighttpd: |
| | | --------- |
| | | With Lightty the addition of Expire: tags by mod_expire is incompatible with |
| | | the addition of "Cache-control: public". Using Cache-control 'public' is |
| | | used below as it is assumed to give a better caching result. |
| | | |
| | | Enable modules in server.modules: |
| | | "mod_setenv" |
| | | "mod_compress" |
| | | |
| | | Mod_compress is a server side cache of compressed files to improve its performance. |
| | | |
| | | $HTTP["host"] == "www.example.com" { |
| | | |
| | | static-file.etags = "enable" |
| | | # http://redmine.lighttpd.net/projects/lighttpd/wiki/Etag.use-mtimeDetails |
| | | etag.use-mtime = "enable" |
| | | |
| | | # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModSetEnv |
| | | $HTTP["url"] =~ "^/roundcubemail/(plugins|skins|program)" { |
| | | setenv.add-response-header = ( "Cache-Control" => "public, max-age=2592000") |
| | | } |
| | | |
| | | # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModCompress |
| | | # set compress.cache-dir to somewhere outside the docroot. |
| | | compress.cache-dir = var.statedir + "/cache/compress" |
| | | |
| | | compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml", "image/gif", "image/png") |
| | | } |
| | | |
| | | |