- Overview - What is the roundcube module?
- Module Description - What does the module do?
- Setup - The basics of getting started with the roundcube module
- Usage - Configuration options and additional functionality
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
The roundcube module allows you to easilly manage a roundcube webmail instance. Please see the roundcube project page for details about the service: www.roundcube.net
Roundcube is a browser-based IMAP client. This module consists of the classes to implement roundcube. The default behaviour of the roundcube package installation on Debian, is to install the web frontend packages (and all the dependent packages) and mysql as the default backend service on the same host. This module was compiled in a way that allows the frontend and backend to be installed on the same or on different hosts. The frontend classes will install all the required packages on the host that will serve the roundcube web frontend. The backend classes will ensure that the required data store is configured and ready to serve data to the frontend. Note that the module, though very configurable by using parameterised classes, makes some assumptions and defaults about the environment that it runs on.
- package/service/configuration files for RoundCube
- package/service/configuration files for Apache (optional, but set as default)
- package/service/configuration files for PostgreSQL (optional, but set as default)
- puppet master's runtime (via plugins)
- listened-to ports
Pluginsync is required if you haven't got all the dependent modules already installed on your puppet implementation. The following additional modules are installed from the forge as dependencies
- puppetlabs/apache
- puppetlabs/stdlib
- puppetlabs/apt
- puppetlabs/postgresql
- puppetlabs/inifile
Whether you choose a single node or a multi-node setup, a basic setup of Roundcube will cause:
- PostgreSQL to install on the node if it’s not already there.
- Roundcube postgres database instance and user account to be created
- the postgres connection to be validated and, if successful, Roundcube to be installed and configured
- Roundcube connection to be validated
- Apache to install on the node if it's not already there, mod-php installed and activated
- roundcube virtualhost configuration created with default directories and options
- roundcube-pgsql, roundcube-core and roundcube-plugins packages to be installed
Apply the roundcube::roundcubeweb as well as the roundcube::webservice::apache class on the host that will serve the roundcube web site. Apply the roundcube::database::postgresql class to the host where you want the database installed.
The roundcubeweb class is the main class that will get your frontend up and running
Parameters within roundcube::roundcubeweb
What apt mirror to use for package installs (defaults to 'http://ftp.debian.org/debian')
The path containing the roundcube configuration files: db.inc.php and main.inc.php (defaults to /etc/roundcube).
The webserver technology used to host the roundcube site (defaults to apache)
This toggles whether or not to force roundcube to use https (defaults to false) Note: When set to true, you should set the roundcube::webservice::apache::port value to '443'.
The database technology used to host the roundcube database (defaults to postgresql)
The hostname of the server that will host the roundcube database (defaults to $::fqdn
)
The port for the database to listen on (defaults to 5432)
What to call the roundcube database (defaults to roundcubedb)
What user to create for access to the roundcube database (defaults to roundcubedb)
The password to use to access the roundcube database as the database_username (defaults to roundcubedb)
Whether or not to connect to the database via ssl (defaults to false)
The default_host value to override in main.inc.php (defaults to '')
The des_key value to use in the main.inc.php file (defaults to 'rcmail-!24ByteDESkey*Str')
The imap auth type to use in the main.inc.php file (defaults to 'null')
What ip(s) postgresql should listen on (default to $::fqdn
)
Whether or not set log_logins in main.inc.php (defaults to false)
Firewall options for the postgresql host (defaults to undef)
The location of the main.inc.php.erb template file (defaults to 'roundcube/main.inc.php.erb')
Any additional plugins to load in the main.inc.php file (default undef)
The skin to use in main.inc.php (defaults to 'larry')
The smtp_server set in main.inc.php (defaults to '')
The smtp_port to use in main.inc.php (defaults to 25)
The smtp_user setting in main.inc.php (defaults to '')
The smtp pass setting in main.inc.php (defaults to '')
The smtp_auth_type setting in main.inc.php (defaults to '')
The timezone setting in main.inc.php (defaults to 'auto')
Override the default 'googie' (Google) spellchecker engine, the only alternative at the moment is aspell
An optional array of languages to be used with aspell, for example ['en','uk','de'] (defaults to 'en')
Parameters within roundcube::webservice::apache
These are the parameters used to configure apache to server the roundcube web
Whether or not to create a default virtual host with the apache installation (defaults to false)
What servername to set in the roundcube virtualhost file (defaults to $::fqdn
)
An array of serveraliases to add to the virtualhost file (defaults to [])
The documentroot for the roundcube virtual host (defaults to '/var/lib/roundcube')
An array of handlers to add to the defined directory section in the virtual host (defaults to [])
Removes all other apache configs and vhosts (defaults to true)
Whether or not to install OS specific default modules (defaults to false)
Whether to purge the default configuration files in the apache conf.d directory (defaults to false)
What mpm module to use for apache (defaults to prefork)
Command to trigger roundcube reconfiguration after setting db configuration (defaults to '/usr/sbin/dpkg-reconfigure')
Boolean you can set to have a vhost on non-ssl redirect to your ssl enabled vhost
Boolean to enable ssl in the vhost file.
The path to the ssl ca used
The path to the ssl certificate
The path to the ssl key
Scriptaliases to include in the virtual host file (defaults to [ { alias => '/program/js/tiny_mce/', path => '/usr/share/tinymce/www/' } ]
)
The port to bind the apache process to (defaults to '80')
What directories to configure for the virtualhost (defaults are as below)
{ path => $documentroot,
options => '+FollowSymLinks',
allow_override => 'All',
order => 'allow,deny',
allow => 'from all' },
{ path => "${documentroot}/config",
options => '-FollowSymLinks',
allow_override => 'None' },
{ path => "${documentroot}/temp",
options => '-FollowSymLinks',
allow_override => 'None',
order => 'allow,deny',
deny => 'from all' },
{ path => "${documentroot}/logs",
options => '-FollowSymLinks',
allow_override => 'None',
order => 'allow,deny',
deny => 'from all' },
{ path => '/usr/share/tinymce/www/',
options => 'Indexes MultiViews FollowSymLinks',
allow_override => 'None',
order => 'allow,deny',
allow => 'from all' }
Parameters within roundcube::database::postgresql
The address that the web server should bind to for HTTP requests (defaults to $::fqdn
)
The host that runs the roundcube database (defaults to $::fqdn
)
The name of the database that roundcube uses (defaults to 'roundcubedb')
The name of the user configured to access the roundcube database (defaults to 'roundcubedb')
The password used to access the roundcube database (defaults to 'roundcubedb')
- The module has only been tested and built on Debian7 (Wheezy).
- The wheezy-backports roundcube packages are required and installed, making use of the puppetlabs/apt module to pin them.
- The module defaults to using apache as the web server and uses the puppetlabs/apache module to configure it.
- The module defaults to using mod-php with apache.
- The module defaults to using postgresql as the database server and uses the puppetlabs/postgresql module to configure it.
- The database configuration is modified by using the puppetlabs/inifile module resources and updating the /etc/dbconfig-common/roundcube file with all the relevant database config options, then calling dpkg-reconfigure roundcube-core, as per the package documentation/recommendation.
- So far no support for adding and installing additional roundcube plugins has been done, but this will probably happen in the next iteration of the module.
Feel free and please add compatibility with other platforms, databases and webservers, but please adhere to the puppet modules
You can read the complete module contribution guide on the Puppet Labs wiki.