Webmail using Roundcube

This page deals with the installation of Roundcube as a web mail interface. Roundcube is the software that was also used in the previous versions of this guide. So if your users are used to it… just stay with it.

Installation

Start by installing the software packages:

apt install -y roundcube roundcube-plugins roundcube-plugins-extra roundcube-mysql

Roundcube stores user settings in the database. So you will get asked to set up database access:

When asked for a password just press ENTER.

Configure Apache

Do you remember that earlier in this guide I asked you how want to name your mail server? Whether you want to use one common name like “webmail.example.org” for all your domains? Or if you prefer different host names for each domain like “webmail.domain1.com” and “webmail.domain2.com”? If you want to use just more then you will have to create one virtual host configuration per domain. The following instructions will just deal with one common host name.

To get Apache to serve the Roundcube application you need to edit the /etc/apache2/sites-available/webmail.example.org-https.conf file. I suggest you change the DocumentRoot line to:

DocumentRoot /var/lib/roundcube/public_html

All URLs are relative to that directory. So if you go to https://webmail.example.com/ then files are looked up in that directory.

Also add this line within the same VirtualHost section to add a couple of prepared security settings:

Include /etc/roundcube/apache.conf

And as usual Apache needs to be restarted after the configuration change:

systemctl restart apache2

Check that Apache is running properly:

systemctl status apache2

In case of a problem run “apache2ctl configtest” to find the cause.

Limit access to localhost

The main configuration file of Roundcube is located at /etc/roundcube/config.inc.php. Feel free to customize the file. However I suggest that you make these changes:

$config['default_host'] = 'tls://webmail.example.org';

If you do not set the default_host here then Roundcube will ask the user for the name of the mail server at login. We don’t want that.

Also for sending emails you should use the same submission port as other email clients use:

$config['smtp_server'] = 'tls://webmail.example.org';
$config['smtp_port'] = 587;

So now when your users enter https://webmail.example.org/ in their browser they should get the Roundcube login form:

Login failed? Storage server can’t be reached?

In that case please double check your Dovecot 10-ssl.conf file if you set the path to your Let’s Encrypt certificate correctly. Also check the /var/lib/roundcube/logs/errors.log file for errors.

Username == email address

Keep in mind that we are using the email address as the account name of the user. So when logging in please enter the email address as the user name. E.g. ‘john@example.org’ and password ‘summersun’.

Plugins

Roundcube comes with various plugins that you can offer your users. I suggest to use at least these two:

  • password: Let the user change their access password.
  • managesieve: Let the user manage rules that apply to incoming email. They can move mails to specific folders automatically for example.

Again edit the /etc/roundcube/config.inc.php file and look for the plugins configuration. To enable the recommended plugins change it to:

$config['plugins'] = array(
     'managesieve',
     'password',
 );

password plugin

Plugins are configured through files located in the /etc/roundcube/plugins directory. Let’s begin with the password plugin. Edit the /etc/roundcube/plugins/password/config.inc.php file.

Oops, that file looks pretty empty. But it refers us to an example file at /usr/share/roundcube/plugins/password/config.inc.php.dist. There are many different methods to let users change their passwords. As we store that information in the SQL database that is the part we need to set up.

No more doveadm

In previous versions of this guide I used the “doveadm pw” command to generate passwords. This is no longer needed. Roundcube can now generate the passwords in the right format to be understood by Dovecot.

Remove the empty definition line of $config from your config.inc.php file. Let’s go through the required settings one by one:

  • $config['password_driver'] = 'sql';
    Simple. Use SQL as a backend.
  • $config['password_minimum_length'] = 12;
    Allow no passwords shorter than 12 characters. I consider longer passwords more secure than short passwords with weird characters. You can even choose a larger minimum.
  • $config['password_force_save'] = true;
    This will overwrite the password in the database even if it hasn’t changed. It helps us improve the strength of the password hash by re-encoding it with a better algorithm even if the user chooses to keep his old password.
  • $config['password_algorithm'] = 'blowfish-crypt';
    The cryptographic algorithm to encode the password. This one is considered very secure and supported by Dovecot.
  • $config['password_algorithm_prefix'] = '{CRYPT}';
    Prepend every password with this string so that Dovecot knows how we encrypted the password.
  • $config['password_db_dsn'] = 'mysql://mailadmin:gefk6lA2brMOeb8eR5WYaMEdKDQfnF@localhost/mailserver';
    Connection information for the local database. Use your own password for the mailadmin database user here. We cannot use the restricted mailserver user because we have to write to the database if the user changes his password.
  • $config['password_query'] = "UPDATE virtual_users SET password=%P WHERE email=%u";
    The SQL query that is run to write the new password hash into the database. %P is a placeholder for the new password hash. And %u is the logged-in user and conveniently matches the email address.

Make sure that this config file is not world-readable:

chown root:www-data /etc/roundcube/plugins/password/config.inc.php
chmod u=rw,g=r,o= /etc/roundcube/plugins/password/config.inc.php

Try it. Log into Roundcube as ‘john@example.org’ with password ‘summersun’. Go to the Settings. Choose Password. Enter a new password twice. You should get a success message at the bottom right (yeah, it’s a bit hidden). Now logout and login with the new password. Does it work? Great.

sieve plugin

Sieve is a simple programming language to be used for server-side rules. Dovecot executes these rules every time a new email comes in. There are global rules that are executed for every email. And of course every user/mailbox can have its own rules. To manage sieve rules Dovecot offers the managesieve interface that you enabled earlier. So we just need to tell Roundcube how to access it.

The configuration file for Roundcube’s managesieve plugin is found at /etc/roundcube/plugins/managesieve/config.inc.php. Edit the file and again remove the empty or comment the $config line. You can again find all possible configuration options in the /usr/share/roundcube/plugins/managesieve/config.inc.php.dist file.

This time just one setting is required to tell Roundcube which server to talk to:

$config['managesieve_host'] = 'localhost';

Sieve rules are stored in a special syntax on the server. This is an example that moves all incoming emails to the test folder that “test” in the subject:

require ["fileinto"];
if header :contains "subject" "test"
{
  fileinto "INBOX/test";
}

You do not need to learn this syntax though. Roundcube’s sieve rule editor is way more user-friendly.

Try adding a sieve rule for john@example.org in Roundcube. That feature is located in Settings/Filters. You will find the machine-readable sieve code at /var/vmail/example.org/john/sieve/roundcube.sieve.

36 thoughts on “Webmail using Roundcube”

  1. “$config[‘password_algorithm_prefix’] = ‘{CRYPT}’;
    Prepend every password with this string so that Dovecot knows how we encrypted the password.”

    Shouldn’t that be {BLF-CRYPT}?

  2. // Empty configuration for password
    // See /usr/share/roundcube/plugins/password/config.inc.php.dist for instructions
    // Check the access right of the file if you put sensitive information in it.

    // Use SQL as a backend
    $config[‘password_driver’] = ‘sql’;

    // Current password is required to change password
    $config[‘password_confirm_current’] = true;

    // Require the new password to contain a letter and punctuation character
    $config[‘password_require_nonalpha’] = true;

    // Do not allow passwords shorter than 10 characters
    $config[‘password_minimum_length’] = 10;

    // Force overwrite password in database
    $config[‘password_force_save’] = true;

    // Cryptographic algorithm to encode the password
    $config[‘password_algorithm’] = ‘blowfish-crypt’;

    // Prepend every password with this string so that Dovecot knows how we encrypted the password
    $config[‘password_algorithm_prefix’] = ‘{BLF-CRYPT}’;

    // Connection information for the local database
    $config[‘password_db_dsn’] = ‘mysql://mailadmin:hjOnvupb5vxzaCNtfO5kFyKANHosSr@localhost/mailserver’;

    // SQL query that writes the new password hash into the database
    $config[‘password_query’] = “UPDATE virtual_users SET password=%P WHERE email=%u”;

    1. Christoph Haas

      I was not sure either. Just checked /usr/share/roundcube/plugins/password/password.php lines 581 ff:

      case ‘blowfish-crypt’:
      $cost = (int) $rcmail->config->get(‘password_blowfish_cost’);
      $cost = $cost < 4 || $cost > 31 ? 12 : $cost;
      $prefix = sprintf(‘$2a$%02d$’, $cost);

      $crypted = crypt($password, $prefix . rcube_utils::random_bytes(22));
      $prefix = ‘{CRYPT}’;
      break;

      It seems that in this case CRYPT and BLF-CRYPT are interchangeable.

      By default the “doveadm pw” command creates “{CRYPT}$2y$…”. I read that “$2y$” is recommended due to a better salting complexity.

  3. First of all, thanks you very much for this excellent tutorial. Until here everything works fine. But during install of roundcube i got into trouble. The output during installation was:

    populating database via sql… done.
    dbconfig-common: flushing administrative password
    –> *** WARNING: ucf was run from a maintainer script that uses debconf, but
    the script did not pass –debconf-ok to ucf. The maintainer
    script should be fixed to not stop debconf before calling ucf,
    and pass it this parameter. For now, ucf will revert to using
    old-style, non-debconf prompting. Ugh!

    Please inform the package maintainer about this problem.
    apache2_invoke: Enable configuration roundcube.conf
    Setting up libgd3:amd64 (2.2.5-5.2ubuntu2.1) …

    aspell-autobuildhash: processing: en [en_US-w_accents-only].
    aspell-autobuildhash: processing: en [en_US-wo_accents-only].
    –> W: Operation was interrupted before it could finish

    Configured webmail.example.org-https.conf as described.
    Restarting apache says: [/var/lib/roundcube/public_html] does not exist

    I’ve to mention, i’m usung ubuntu 20.04 not debian, but would be happy to get some help, how to get roundcube running. Thank you very much.

    1. Christoph Haas

      Hi Jürgen. It’s been a few days already but if you are still stuck:

      dpkg –configure -a
      apt-get -f install
      apt purge roundcube
      apt install roundcube

      1. Hi Christoph,

        thank you very much. Indeed a simple reinstall and reconfigure solved the problem 🙂
        By the way, roundcube’s DocumentRoot with Ubuntu is just /var/lib/roundcube without public_html, but that was easy to lookup.
        Looking forward to go on now with the installation.

  4. I ran into issues with changing the password through roundcube. I was getting encryption method missing error messages when I tried the password change.

    Using info from here https://forum.iredmail.org/topic18494-roundcube-webmail-encryption-function-missing.html

    I changed this one line and password change worked in roundcube. The change is subtle password=%P (papa, not delta)

    ‘$config[‘password_query’] = “UPDATE virtual_users SET password=%P WHERE email=%u”;’

  5. Thanks for this tutorial, my mail server has been running without issue for over a year using the buster guide than updating to bullseye. But this time I decided to configure roundcube but I can’t seem to get DKIM signing to work from virtual domains in roundcube.

    My server is hosted on cameronkatri.com and I have a virtual domain of procurs.us, in roundcube if I send an email from me@cameronkatri.com it will have the proper DKIM header, but if I send it from support@procurs.us it won’t. This does not apply when sending email from thunderbird where both emails will have the proper DKIM header.

  6. Hi. Thank you for an excellent guide! I have one problem, though. I am getting the following error when trying to login to Roundcube: “Connection to storage server failed”. I have checked that I put the correct path to the certificates. I am able to connect to imaps using mutt, so I believe the password is correct.

    I still have a feeling that it has something to do with the password hash when Roundcube tries to authenticate the user, due to the following error message in /var/lib/roundcube/logs/errors.log:

    IMAP Error: Login failed for test@example.org against example.org from ip.ip.ip.ip. Could not connect to example.org:143: Connection refused in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)

    Do you have any clue what this could be?

    1. I added the following to the /etc/hosts file: 127.0.1.1 webmail.example.org
      Then it worked. Are there any issues in doing it this way?

      I could have changed the $config[‘default_host’] = ‘tls://webmail.example.org’; to $config[‘default_host’] = ‘localhost’; as well. I tested that and it worked.

      What is the benefit in using the tls:// instead of localhost when the webserver and mailserver are in the same host?

      1. Hi Ben,

        I’m struggling with a similar problem but editing the hosts file doesn’t help. My errors.log file shows 2 errors with each login attempt:

        PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
        error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1087

        IMAP Error: Login failed for bob@example.org against webmail.example.org from 127.0.0.1. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)

        So in my case it is TLS/certificate related. I am using self-signed certificates as my server does not have a public IP address. I’ve tried using ssl-cert-snakeoil.pem and .key, and tried creating my own certs using webmail.example.org and hostname.example.org as the common name, but so far nothing has worked. Like you, I am successful with mutt using imaps. I’ll keep working on it, but if anyone can shed light before I find the answer, that would be great!

        In the meantime, in response to your localhost query, when using…

        $config[‘default_host’] = ‘localhost’

        …as you mentioned, this disables tls altogether, so it works. But I get the same errors as above if using:

        $config[‘default_host’] = ‘tls://localhost’

        On the server itself, tls probably does not matter, but most users won’t be accessing their mail while at the server console, so it does seem important to solve this problem.

        1. I got it working! The crux of the problem was that roundcube would not accept ‘webmail’ as the site name when the computer’s self-signed cert had ‘mypc’, or the hostname in it. make-ssl-cert will create a new cert with a different name than the local machine’s hostname, but I could only find the certificate file it created, and never saw a key file. Eventually I opened the new cert file and found that the cert and the key were both there, and needed to be manually separated into different files. Once done, I updated my https.conf and 10-ssl.conf files, restarted apache2 and dovecot, and voila – it works!!

          Sadly the man page for make-ssl-cert fails to mention the requirement of manual extraction of the key from the resulting file it creates. This missing tidbit cost me hours of head scratching and hair pulling. Hopefully a soul or two will see this before sharing the same fate. 🙂

      2. Ben – I wrote 2 lengthy replies in the thread and neither has appeared here. I’ll try a short summary and hope it appears.

        Using localhost without tls is probably fine when logging in from the server console, but how many users will access it this way? IOW, fixing the tls issue is important and here is how I got mine to work using self-signed certificates (no public IP address available right now)…

        Roundcube will not accept a cert for a site with a different name than the one in the cert, e.g. webmail vs. actual hostname. make-ssl-cert can be used to create a new cert for the local host with a different name. Once the file is created, the key and cert need to be separated from the single file into 2 files (this part is not in the man page for make-ssl-cert!). Then update your https.conf and 10-ssl.conf files, restart apache2 and dovecot, and all is well. Hope that helps!

    2. I had the same issue. I’m doing an upgrade from an older server so I looked at the values there and noticed $config[‘default_host’] did not point to tls://webmail.example.org but simply localhost.

      $config[‘default_host’] = ‘localhost’;

      After this change I was able to login to roundcube. Not sure if I should troubleshoot why tls://webmail.example.org did not work or if localhost is fine too.

  7. Hi Christoph,

    with your help I was able to pull up my “stretch mailserver” on bullseye.
    Everything works except Roundcube.

    For the update I installed on a second virtual server the mailserver completely according to your instructions. It works perfectly. Before making a snapshot I changed all names, IPs I discovered with diff to the details of my production server. There mails work fine with Thunderbird on home computer and K-9 on smartphone. I get to the login screen of Roundcube, but can’t get a connection.

    /var/log/roundcube/errors.log gives the following error message.

    Login failed for dududu@dadada.de against mail.dididi.de from 84.xxx.xxx.xxx. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)

    An apt-get purge roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra followed by a reinstall did not change anything.

    Can you give me a hint? Google search did not bring any usable help.

    Thanks again for your work.

  8. Hi Christoph,

    I took another close look at Brad’s post above because he had the same error message. On my server I use a certificate from Letsencrypt. When I call Roundcube in the browser and check the certificate, it has the same name that I have set as myhostname. The certificate seems to be ok. Unfortunately the login does not work. I would be happy if you or someone else has an idea.

    1. Torsten – Immediately before the error you posted, I always got this error as well, i.e. they came as a pair:

      PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
      error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1087

      Both errors point to a problem with SSL/TLS negotiations, however the specific line numbers referenced are pretty useless (just say to post the error message as far as I can tell). There was another related log which I don’t recall the specifics of that clearly indicated a problem with the name in the certificate being unexpected and then led me to a solution. You might want to ‘tail -f’ some other logs while duplicating the problem – hopefully that’ll give you the clue you need.

  9. Hello Brad,

    thanks for your advice. With tail -f errors.log I get:

    [05-Feb-2022 12:20:36 Europe/Amsterdam] PHP Warning: stream_socket_enable_crypto(): Peer certificate CN=`mail.server02.de’ did not match expected CN=`mail.server01.de’ in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1087
    [05-Feb-2022 12:20:36 +0100]: IMAP Error: Login failed for torsten@x-online.de against mail.server01.de from 84.153.111.118. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)

    I have changed the server names accordingly.

    For both mail.server02.de’ and `mail.server01.de I have a valid Letsencrypt certificate.
    I would also like to exchange it, but have not yet found where.
    The certificate for mail.server02.de is still from when I set up the new mail server on my backup server. Before I made an image to clone, I thought I had moved all traces from mail.server02.de to mail.server01.de.
    So I continue to search.
    But if anyone has a tip?
    Any suggestion is welcome.

  10. Hello,

    For all intents and purposes :

    I did’nt set a Let’sEncrypt certificate. I’ve prefered a self-signed one.
    Apache work perfectly with …
    When I tested with mutt, I accepted the certificate and the negociation was good : mutt -f imaps://john@example.org@localhost

    But when I tried to authentificate from RoundCube I first had an error message “Connection to storage server failed”. This because my DNS zone is not yet configured. So I’ve modified my /etc/hosts adding 127.0.0.1 for serveur.mydomain.org.
    Then I got “Connection to IMAP server failed”.
    /var/lib/roundcube/logs/errors.log logged :

    IMAP Error: Login failed for john@example.org against serveur.do;qin.org from IP.IP.IP.IP. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)
    PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
    error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1087

    I checked /var/log/syslog and found :

    dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=, rip=127.0.0.1, lip=127.0.1.1, TLS handshaking: SSL_accept() failed: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca: SSL alert number 48, session=

    I’ve tried this command from the Dovecot documentation :

    # openssl s_client -servername serveur.domain.org -connect serveur.domain.org:pop3s
    CONNECTED(00000003)
    depth=0 C = NA, ST = Some-State, O = some, CN = serveur.domain.org
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 C = NA, ST = Some-State, O = some, CN = serveur.domain.org
    verify error:num=21:unable to verify the first certificate
    verify return:1
    depth=0 C = NA, ST = Some-State, O = some, CN = serveur.domain.org
    verify return:1

    Idem with
    # openssl s_client -CApath /etc/ssl/certs/ -connect serveur.domain.org:pop3s

    There was clearly a problem during the validation of the certification chain by Dovecot … It don’t achieve to get the CA.
    Nevertheless Apache uses this very same files from the same directories, with no problem …

    I’ve double checked configuration in 10-ssl.conf.

    The source of the problem was that, unlike Apache, Dovecot need the complete certification chain in the pointed certificate :
    https://stackoverflow.com/questions/44115217/unable-to-trust-self-signed-ssl-certificate

    Once fixed, no more problem !

    Thank you so much Christoph, for your tutorials ! They are accurate, exhaustive and pleasant to read.

  11. Hello Brad,

    unfortunately, my posting from 2022-02-05 did not appear here. Therefore I try again.

    [05-Feb-2022 12:20:36 Europe/Amsterdam] PHP Warning: stream_socket_enable_crypto(): Peer certificate CN=`mail.server02.de’ did not match expected CN=`mail.server01.de’ in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1087
    [05-Feb-2022 12:20:36 +0100]: IMAP Error: Login failed for torsten@x-online.de against mail.server01.de from 84.153.111.118. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 200 (POST /?_task=login&_action=login)

    For this post I have changed the server names accordingly.
    For both mail.server02.de’ and `mail.server01.de I have a valid Letsencrypt certificate.
    When I open mail.server01.de in Firefox and check the certificate it is correctly recognized as mail.server01.de.
    I have scanned the entire server. mail.server02.de does not appear in plain text.
    The certificate for mail.server02.de is still from when I set up the new mail server on my backup server. Before I made an image to clone, I thought I had moved all traces from mail.server02.de to mail.server01.de.

    apt-get purge roundcube did not bring success. Likewise deleting the roundcube database.

    So I continue to search.
    But if anyone has a tip?
    Any suggestion is welcome.

    1. Rest assured that the domain name is embedded in the certificate. You can investigate this by running this command (leave out the grep part if you want to see everything):

      openssl x509 -in /etc/letsencrypt/live/mail.server01.de/cert.pem -text -noout | grep CN

      Chances are pretty good that you’ll see a line that that looks like this:

      Subject: CN = mail.server02.de

      The carpet must match the drapes. 😉

      1. Hello harshness

        when I enter your command
        openssl x509 -in cert.pem -text -noout | grep CN

        I get the following result

        Issuer: C = US, O = Let’s Encrypt, CN = R3
        Subject: CN = mail.server01.de

        Do you have another idea

        1. Each server must report its own address and certificate and they CANNOT be the same. If you left a copy of the other machine’s certificates on either of the servers, you’re going to have problems.

          Have you verified that there is no certificate for mail.server01.de on mail.server02.de and vice versa?

          Consider using checktls.com to verify that the mail server isn’t configured to use the wrong cert.

          1. Hello harshness

            My two servers each have their own LetsEncrypt certificate.
            This certificate is entered on each server with postfix, dovecot and apache correct.
            When I call Roundcube in the browser, the page shows as encrypted with valid certificate.

            The fact is that Roundcube finds somewhere an entry where the server02 is specified.
            Unfortunately, however, this is not visible in plain text.

            I was also not asked anywhere during the installation to enter or specify a peer certificate.
            I don’t know at all what a peer certificate is supposed to be nor do I find anything helpful in my internet research.
            The only entries I find are related to php.

            Unfortunately it is not so simple that I “only” entered the wrong certificate in my conf files.

            The error lies rather somewhere else.

  12. Hey Torsten – Sorry I just now saw your post. Any chance there is a PTR record somewhere that is being checked and which points back to the old name?

  13. Hello Brad,

    even though I haven’t found a solution to my Roundcube problem yet, I’d like to get back to you.
    That Roundcube does not work for me is not nice. But the mailserver itself works 100%.
    So almost everything is good. I will check back from time to time if someone has found a solution.
    Until then I say “Thank you” to all who tried to help.
    Many greetings
    Torsten

    1. I don’t know if this is the issue or not, but I ran into it myself.

      When I changed the Let’s Encrypt certificate to remove a host name, an entirely new certificate name was created. So, if Apache or Nginx have a working certificate, check their config, and see WHICH certificate they are using, and make sure that both Postfix and Dovecot are configured to use that current certificate.

      Certbot will update your Apache or Nginx configuration files for you automatically, but Postfix and Dovecot require that you manually update when the certificate name changes.

  14. Yannis Charitakis

    Just a small recommendation :

    Perhaps,

    $config[‘password_confirm_current’] = true;

    should be inside the “required” fields in the documentation.

    So that, when leaving the keyboard for a while, no one can change the password without knowing the previous.

  15. Hello! I’m really loving this guide, nothing worked to make thunderbird and postfix work together… I hope this will do the job! At the moment, there is only one issue
    I’m using nginx as a webserver, and the css isn’t loading at all, i receive a very ugly page.
    After some research, is some issue with the mime type, i’ve tryed adding
    $config[‘mime-types’] = ‘/etc/roundcubes/mime.types’, but still nothing. I don’t really know which info to provide, please, help :’)
    (I don’t really know if you still check for questions, this would be perfect, have a nice day!)

    1. If you follow the instructions, Thunderbird should work out of the box with either POP3 or IMAP. Are you talking about Roundcube rather than Thunderbird?

      css shouldn’t depend on the server unless there is a permission problem with the skins subdirectories or the files themselves that prevents the server from accessing them.

  16. Hi I am a student and I try to bring this to work on a Ubuntu Server VM in a encapsulated environment. So there will be just self signed certificats. Sadly I can not login with the user. In the roundcube/logs/errors.log I receave this:

    [22-Sep-2022 23:04:33 Europe/Berlin] PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
    error:0A000086:SSL routines::certificate verify failed in /usr/share/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 1122
    [22-Sep-2022 23:04:33 +0200]: IMAP Error: Login failed for florian.kueng@cyber-range.ch against 127.0.0.1 from 192.168.2.9. Unable to negotiate TLS in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 211 (POST /?_task=login&_action=login)

    I can not figure out where I made the configuration error. Can sombudy help me out?

    1. See the previous comment from Mike, there is a link about how to get your self signed certificate to be trusted.

  17. Hi Christoph,
    I installed Roundcube using apt packages as instructed; however a note about the Enigma plugin I enabled to handle PGP keys: The plugin cannot works properly because the file openpgp.min.js is missing due to licensing issues; this issue doesn’t appears if you install Roundcube + Plugins downloading from the Roundcube website.
    Thanks again for your precious effort writing and maintaining this guide.

  18. I’m a bit stuck on getting Roundcube to display the sender’s email address instead of the “From” name in the mailbox view.

    (Noted that it can be enabled within the mail itself via Settings > Preferences > Displaying Messages > “Show email address with display name”)

    Powerfull feature to check for spam/malware at a quick glance.

  19. Hi,
    I was trying to setup roundcube and originally was able to login. After I tried to setup the password plugins I get his with this error every time I try to log in:
    [25-Aug-2023 05:29:14 UTC] PHP Warning: Undefined array key “localhost:143” in /usr/share/roundcube/program/include/rcmail.php on line 971
    [25-Aug-2023 05:29:16 +0000]: IMAP Error: Login failed for john@example.com against localhost from ip.ip.ip.ip. AUTHENTICATE PLAIN: Authentication failed. in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 211 (POST /?_task=login&_action=login)

    I reset the example user with adminer and it seems to do fine in mutt
    I’m using lets encrypt for the certificate.
    If I try to log in with mutt on the previous step it all works great.

    If anyone is able to help me getting it work with tls that would be great!

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top