A couple of days ago, the Roundcube project announced the Release Candidate of version 1.0 of my favorite open source webmail.
I've been using Roundcube for several years now for almost 2500 mailboxes.
A quick look into my deployment history:
drwxr-xr-x 10 root root 4096 Oct 23 2009 roundcube-0.2.1
drwxr-xr-x 11 root root 4096 Oct 23 2009 roundcube-0.3
drwxr-xr-x 11 root root 4096 Jul 9 2010 roundcube04-beta
drwxr-xr-x 11 root root 4096 Sep 7 2010 roundcube-0.3.1
drwxr-xr-x 11 root root 4096 Sep 8 2010 roundcube04
drwxr-xr-x 12 root root 4096 Feb 10 2011 roundcube-0.5.1
drwxr-xr-x 11 501 80 4096 Nov 9 2011 roundcube-0.5.2
drwxr-xr-x 10 501 80 4096 Dec 13 2011 roundcube-0.6
drwxr-xr-x 12 501 80 4096 Dec 29 2011 roundcube-0.7
drwxr-xr-x 10 501 80 4096 Mar 9 2012 roundcube-0.7.1-test
drwxr-xr-x 10 501 80 4096 Apr 13 2012 roundcube-0.7.2
drwxr-xr-x 10 501 80 4096 Apr 14 2012 roundcube-0.7.1
drwxr-xr-x 11 501 80 4096 May 9 2012 roundcube-0.7.2-svn
drwxr-xr-x 10 501 80 4096 May 22 2012 roundcube-0.8-rc-20120522
drwxr-xr-x 10 501 80 4096 Jul 26 2012 roundcube-0.8-rc
drwxr-xr-x 10 501 80 4096 Aug 24 2012 roundcube-0.8.1
drwxr-xr-x 10 501 80 4096 Oct 27 2012 roundcube-0.8.2
drwxr-xr-x 10 501 80 4096 Dec 7 2012 roundcube-0.8.4
drwxr-xr-x 10 501 80 4096 Mar 1 2013 roundcube-0.8.5
drwxr-xr-x 10 501 80 4096 May 7 2013 roundcube-0.8.6
drwxr-xr-x 11 501 80 4096 Jul 11 2013 roundcubemail-0.9.2
drwxr-xr-x 11 501 80 4096 Jan 31 13:28 roundcube-1.0-rc
The new version 1.0 comes with a lot of changes. Especially some changes of the config (file) demand for a closer look...
Most important change is the merge of several config files into one. Previously there was main.inc.php for general config options and db.inc.php for data base access settings.
There are now two templates ready for usage:
- config.inc.php.sample (a minimal config file)
- defaults.inc.php.sample (all config options used)
Choose the one you prefer and rename it to config.inc.php
The config options have a slightly different name. In older versions, an option was called $rcmail_config['array']. This is now simply 'config'.
0.8.6: $rcmail_config['log_driver'] = 'file';
1.0-rc: $config['log_driver'] = 'file';
Several new options are available. I'll try to explain the most important ones (at least imho).
The following options are new in 1.0-rc compared to an installation running 0.8.6.
This option is very cool. It allows to create a separate log dir and therefore separate log file per user.
// Activate this option if logs should be written to per-user directories.
// Data will only be logged if a directry <log_dir>/<username>/ exists and is writable.
$config['per_user_logging'] = false;
In case you run an IMAP server with broken CAPABILITIES, you can set a kind of a "blacklist" that the broken capability functions should not be used. I hope you won't ever have to use that option. If you do, you should consider to install a working IMAP server ;-).
// List of disabled imap extensions.
// Use if your IMAP server has broken implementation of some feature
// and you can't remove it from CAPABILITY string on server-side.
// For example UW-IMAP server has broken ESEARCH.
// Note: Because the list is cached, re-login is required after change.
$config['imap_disabled_caps'] = array();
imap_cache_ttl, messages_cache_ttl and messages_cache_threshold
Message (mail) caching in the database was possible since - I think - the very beginning of Roundcube. But these new options allow to define how long and with what maximum size the messages should stay in the cache.
// Lifetime of IMAP indexes cache. Possible units: s, m, h, d, w
$config['imap_cache_ttl'] = '10d';
// Lifetime of messages cache. Possible units: s, m, h, d, w
$config['messages_cache_ttl'] = '10d';
// Maximum cached message size in kilobytes.
// Note: On MySQL this should be less than (max_allowed_packet - 30%)
$config['messages_cache_threshold'] = 50;
Roundcube of course allows that some default settings can be overwritten on a user basis (e.g. the skin/layout). This option is a "blacklist" of options which cannot be overwritten by the user's personal preferences.
// don't allow these settings to be overriden by the user
$config['dont_override'] = array();
Allows the possiblity to create an "advanced settings menu". The settings mentioned in this array will appear under the advanced settings menu.
// define which settings should be listed under the 'advanced' block
// which is hidden by default
$config['advanced_prefs'] = array();
This is something I would have wanted from the beginning. This option allows that a user can log in by any e-mail address which was added in one of his identities. Imagine a user has a real smtp authentication called "mailbox1". To this mailbox1 there are several e-mail addresses assigned. Now the user probably wants to log in with one of these e-mail addresses instead of the mailbox name/smtp user name.
// Enables possibility to log in using email address from user identities
$config['user_aliases'] = false;
I probably won't ever need that option because there are always multiple domain names on my servers, but this option allows to force a domain name as user login. So if a user types in "firstname.lastname@example.org" in the user login field, example.com will be overwritten by the domain defined in this option.
// Force domain configured in username_domain to be used for login.
// Any domain in username will be replaced by username_domain.
$config['username_domain_forced'] = false;
This of course is one of the oldest options - and one of the reasons why Roundcube became so successful (the possibility to have several identities under one account). What's new is the 4th identity level. 0-3 already existed a long time ago.
// Set identities access level:
// 0 - many identities with possibility to edit all params
// 1 - many identities with possibility to edit all params but not email address
// 2 - one identity with possibility to edit all params
// 3 - one identity with possibility to edit all params but not email address
// 4 - one identity with possibility to edit only signature
$config['identities_level'] = 0;
The size of a thumbnail size can now be defined.
// Size of thumbnails from image attachments displayed below the message content.
// Note: whether images are displayed at all depends on the 'inline_images' option.
// Set to 0 to display images in full size.
$config['image_thumbnail_size'] = 240;
In case you don't want to save a sent mail in the Sent mail folder (for whatever reason...), you can set this option to true.
// Disables saving sent messages in Sent folder (like gmail) (Default: false)
// Note: useful when SMTP server stores sent mail in user mailbox
$config['no_save_sent_messages'] = false;
The real foldernames (by default INBOX, Drafts, Sent, Junk, Trash) may have a different name in a different language. This option allows you to display the folders with their real name, no matter what translation they would have in another language.
// Disable localization of the default folder names listed above
$config['show_real_foldernames'] = false;
Honestly, I have no clue yet what this is supposed to do. I will have to do some tests.
// A static list of canned responses which are immutable for the user
$config['compose_responses_static'] = array(
// array('name' => 'Canned Response 1', 'text' => 'Static Response One'),
// array('name' => 'Canned Response 2', 'text' => 'Static Response Two'),
This option disabled popups and instead uses the browser's standard windows like a new tab (instead of opening a popup).
// Enables using standard browser windows (that can be handled as tabs)
// instead of popup windows
$config['standard_windows'] = false;
message_extwin and compose_extwin
If set to true, an opened message/mail is shown in a new browser window. Same when composing a new mail.
But who wants that nowadays...
// open messages in new window
$config['message_extwin'] = false;
// open message compose form in new window
$config['compose_extwin'] = false;
It seems that this option has overwritten the previously named option keep_alive. Here the default refresh interval of the webmail can be set. A refresh of course triggers a recheck of the mailbox.
// Default interval for auto-refresh requests (in seconds)
// These are requests for system state updates e.g. checking for new messages, etc.
// Setting it to 0 disables the feature.
$config['refresh_interval'] = 60;
Big option! Actually not big. But this topic was highly discussed a couple of years ago. I remember that pretty well because I was also part in that discussion.
In the past, Roundcube only allowed to reply below the text of an e-mail (mailing list style). Many people are however used to Outlook and other mail client's behaviors by replying above the previous mail's text.
Several hacks were required in old Roundcube versions to give the user a setting where he can decide himself. The required and then introduced options in the config file were called top_posting and sig_above. These two options were now removed and, so it seems, replaced by reply_mode.
// When replying:
// -1 - don't cite the original message
// 0 - place cursor below the original message
// 1 - place cursor above original message (top posting)
$config['reply_mode'] = 0;
The default_font was always possible to set. Now the font size can be set, too.
// Default font size for composed HTML message.
// Supported sizes: 8pt, 10pt, 12pt, 14pt, 18pt, 24pt, 36pt
$config['default_font_size'] = '10pt';
I'm not quite sure if I understood that correctly but I will have to do a test to confirm. But it looks like this option allows the display of e-mail address and name instead of just the name (e.g. Foo Bar email@example.com).
// Enables display of email address with name instead of a name (and address in title)
$config['message_show_email'] = false;
This is a geek setting. If you are subscribed to some mailing lists, you might be aware that some of them always show the sender of the post as reply-to. So by accident if you click reply it could happen that you only answer to the last person who wrote in that mailing list thread instead to the whole list. This option doesn't cover that, but at least allows to detect a mailing list. If someone wants to reply to a mailing list post, clicks on Reply-All and this option is set to 1, only the mailing list will be added in the To field.
// Default behavior of Reply-All button:
// 0 - Reply-All always
// 1 - Reply-List if mailing list is detected
$config['reply_all_mode'] = 0;