Roundcube webmail

18 marzo 2026 by Roberto Puzzanghera 4 commenti

Roundcube è una webmail avanzata con una bella interfaccia grafica.

Changelog

  • Feb 8, 2026
    version 1.6.13
  • Mar 9, 2025
    added $config['quota_zero_as_unlimited'] = true; to show quota unlimited instead of unknown for accounts with unlimited quota

Leggere qui https://github.com/roundcube/roundcubemail/blob/master/CHANGELOG.md per maggiori informazioni.

Aggiornamento 

Il processo di aggiornamento è veramente semplice, notevolmente migliorato rispetto al passato. E' sufficiente decomprimere il pacchetto in una cartella temporanea, rinominare il vecchio Roundcube da sovrascrivere e lanciare lo script per l'aggiornamento dalla linea di comando come segue. Nella mia installazione la posizione della cartella di Roundcube è /var/www/htdocs/roundcube

RC_NEW=1.6.14
RC_OLD=1.6.13

cd /var/www/htdocs
wget https://github.com/roundcube/roundcubemail/releases/download/${RC_NEW}/roundcubemail-${RC_NEW}-complete.tar.gz
tar xzf roundcubemail-${RC_NEW}-complete.tar.gz
# spostiamo la cartella di RC appena creata in una directory temporanea, da cui lanceremo lo script per l'aggiornamento
mv roundcubemail-${RC_NEW} rc-temp
# rimuoviamo il link simbolico
rm roundcube
# spostiamo la vecchia installazione. Questa cartella verrà sovrascritta durante il processo di upgrade
mv roundcubemail-${RC_OLD} roundcubemail-${RC_NEW}
# ripristiniamo il link simbolico
ln -s roundcubemail-${RC_NEW} roundcube
chown -R root:apache roundcube
# pronti per il lancio..
./rc-temp/bin/installto.sh /var/www/htdocs/roundcube/

Seguire le istruzioni. Questo processo richiede che i comandi php e rsync siano nel PATH.

Ora è possibile cancellare la cartella temporanea usata in precedenza:

cd ..
rm -r rc-temp roundcubemail-${RC_OLD}

Se si è soliti aggiornare i propri plugin via composer, è anche necessario aggiornare il file composer.json. Dopo aver fatto un backup del proprio composer.json e rinominato il file distribuito...

mv composer.json composer.json.bak
mv composer.json-dist composer.json

...aggiungere alla sezione "require" i propri plugin, ad esempio:

    "require": {
       ... altri plugin distribuiti da RC ...

       "sagredo-dev/qmailforward": ">=1.0.4",
       "johndoh/sauserprefs": ">=1.21",
       .....
    }

Prerequisiti

Prima di iniziare si vedano i prerequisiti di installazione qui.

Di seguito mostrerò come installare roundcube in un ambiente Linux/Apache/MySQL/PHP + qmail.

Configurazione di php

Questa è una configurazione di php minimale che soddisfa tutti i prerequisiti di Rouncube di cui sopra nel mio virtual server Slackware:

./configure \
        --with-libdir=lib64 \
        --with-mysqli=/usr/bin/mysql_config \
        --with-pdo-mysql=/usr \
        --disable-mysqlnd \
        --with-mcrypt \
        --enable-gd \
        --enable-mbstring \
        --with-zip \
        --with-zlib \
        --with-bz2 \
        --enable-sockets \
        --with-openssl \
        --enable-intl \
        --with-ldap

Notare che una estensione addizionale raccomandata è intl, che è già inclusa e abilitata in PHP-5.3 e successivi, e che a sua volta richiede le ICU headers and libraries.

Installazione di Roundcube

Scaricare la tarball da http://roundcube.net/download, scompattare e settare i privilegi per la cartella come segue:

RC_VERSION=1.6.14

cd /var/www/htdocs
wget https://github.com/roundcube/roundcubemail/releases/download/${RC_VERSION}/roundcubemail-${RC_VERSION}-complete.tar.gz
tar xzf roundcubemail-${RC_VERSION}-complete.tar.gz
ln -s roundcubemail-${RC_VERSION} roundcube
cd roundcube
chown -R root.apache .
chmod -R o-rx .
chmod g+w logs temp

Creare l'utente mysql e il database; assegnare a tale utente privilegi limitati:

# mysql -u root -p

CREATE USER 'roundcube'@'[yout-IP]' IDENTIFIED BY '***';
GRANT USAGE ON * . * TO 'roundcube'@'[your-IP]' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE DATABASE IF NOT EXISTS `roundcube` ;
GRANT ALL PRIVILEGES ON `roundcube` . * TO 'roundcube'@'[your-IP]';

[your-IP] rappresenta qui l'IP del server httpd. Se esso coincide con il server MySQL si può usare '127.0.0.1' naturalmente. E' stato fatto presente da qualcuno nei commenti che quando si usa 'localhost' si genera un segfault in php-7.4.33 lanciando il programma /install

Creare un virtual host like su apache, per esempio:

LOGDIR=/var/www/error
HTDOCS=/var/www/htdocs
DOMAIN=webmail.yourdomain.tld

<VirtualHost *:80> 
       ServerName ${DOMAIN}
       RedirectMatch permanent ^/$ https://${DOMAIN}
</VirtualHost> 

<VirtualHost *:443> 
       Include <certs stuff>

       DocumentRoot ${HTDOCS}/roundcube/ 
       ServerName ${DOMAIN}

       CustomLog ${LOGDIR}/roundcube.f2b_SSL.log combined 
       ErrorLog  ${LOGDIR}/roundcube_error_SSL.log 

       <Directory ${HTDOCS}/roundcube/> 
               Require all granted 
               AllowOverride All 
       </Directory> 

#       <Directory ${HTDOCS}/roundcube-enigma-home/> 
#               Require all granted 
#       </Directory> 

       <IfModule mod_autoindex.c> 
               Options -Indexes 
       </ifModule> 
</VirtualHost>

Ora puntare il browser su http://url-to-roundcube/installer/ e seguire le istruzioni. Io ho lasciato le impostazioni predefinite ad eccezione dell'interfaccia per mysql di php (selezionare mysqli se disponibile nel vostro httpd server). Non dimenticare di copiare i parametri del database e di impostare l'indirizzo IP del server IMAP. Impostare username_domain al vostro dominio di defalut per evitare di loggarsi digitando anche la parte dopo la @ del vostro indirizzo email.

Copiare il file default.inc.php in config.inc.php nella cartella config. Impostare poi i privilegi per mettere in sicurezza Roundcube:

cd config
chown root.apache *
chmod o-r *

Se tutti i test sono andati bene rimuovere la cartella installer come raccomandato e disabilitare l'installazione nel file di configurazione:

$config['enable_installer'] = false;

Suggerisco di abilitare queste opzioni; la prima abilita la creazione delle cartelle di default (Posta inviata, Cestino, Spam etc.) la prima volta che vi loggate:

// Name your service. This is displayed on the login screen and in the window title
$config['product_name'] = 'My Organization Name - Webmail';

// Log successful/failed logins to /userlogins or to syslog (important to activate fail2ban later)
$config['log_logins'] = true;
// Automatically add this domain to user names for login
$config['username_domain'] = 'yourdomain.net';
// declaring the auth type speeds up the imap connection with 0.5 version!!
$config['imap_auth_type'] = NULL;

// ----------------------------------
// SMTP
// ----------------------------------
// SMTP server host (for sending mails).
// Enter hostname with prefix tls:// to use STARTTLS, or use
// prefix ssl:// to use the deprecated SSL over SMTP (aka SMTPS)
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_host'] = 'localhost:25'; 
// leave user and pwd empty to disable the authentication on port 25
$config['smtp_user'] = ''; 
$config['smtp_pass'] = '';

// enforce connections over https
// with this option enabled, all non-secure connections will be redirected.
// set the port for the ssl connection as value of this option if it differs from the default 443
$config['force_https'] = true;
// this key is used to encrypt the users imap password which is stored
// in the session record (and the client cookie if remember password is enabled).
// please provide a string of exactly 24 chars.
$config['des_key'] = '123456789123456789123456';
// Absolute path to a local mime.types mapping table file.
// This is used to derive mime-types from the filename extension or vice versa.
// Such a file is usually part of the apache webserver. If you don't find a file named mime.types on your system,
// download it from http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
$config['mime_types'] = '/absolute/path/to/apache/conf/mime.types';
// path to imagemagick identify binary
$config['im_identify_path'] = '/usr/local/bin/identify';
// path to imagemagick convert binary
$config['im_convert_path'] = '/usr/local/bin/convert';
// use this format for date display (date or strftime format)
$config['date_format'] = 'd-m-Y';
// automatically create the above listed default folders on first login
$config['create_default_folders'] = true;
// If true all folders will be checked for recent messages
$config['check_all_folders'] = true;

// the new 'elastic' theme is the default in 1.4.1 version
$config['skin'] = 'elastic'

// Automatically register user in Roundcube database on successful (IMAP) logon. 
// Set to false if only registered users should be allowed to the webmail. 
// Note: If disabled you have to create records in Roundcube users table by yourself. 
// Note: Roundcube does not manage/create users on a mail server. 
$config['auto_create_user'] = true;

// if in your system 0 quota means no limit set this option to true 
$config['quota_zero_as_unlimited'] = true;

Notare che stiamo utilizzando la porta 587 per fare comunque l'autenticazione SMTP. Ciò può essere importante se si vogliono usare le funzionalità di cui alla patch rcptcheck (limitare il numero massimo di email in uscita da parte di un utente), che deve identificare l'auth-user.

Se invece non si ha intenzione di usare queste funzionalità è possibile usare la porta SMTP 25 lasciando vuoti i parametri $config['smtp_user'] e $config['smtp_pass'] per disabilitare l'autenticazione. Ciò ovviamente andrebbe fatto solo se la comunicazione tra Roundcube e la nostra MTA avviene nella rete interna.

Setting up composer

La maggior parte dei plugin di Roundcube sono disponibili su https://plugins.roundcube.net/ e la maniera migliore di installarli e aggiornarli è usare composer. Dal momento che composer deve essere lanciato da apache, è necessario impostare opportunamente i privilegi in alcune cartelle e file ove l'utente apache deve poter scrivere.

cd /var/www/htdocs/roundcube
chown -R root:apache .

mkdir -p /srv/httpd
chown -R apache:apache /srv/httpd

touch composer.lock
chown apache:apache composer.lock composer.phar

chmod -R g+w plugins vendor

Vedremo come installare e aggiornare i plugin nella prossima pagina.

Commenti

Utilissimo!!!

Grazie mille, non sapevo come procedere all'installazione di intl (su PHP 5.2) e mi hai risolto il problema!!! Mitico!

Rispondi |

Aiuto please

Salve,

vorrei sapere come fare per accedere alla webmail senza passare dalla pagina di login, vorrei passare username e password tramite GET nella url

Grazie

Rispondi |

Re: aiuto please

Non credo proprio che sia possibile. Roundcube è programmato per leggere quei valori dalla variabile $_POST di php.

Però potresti replicare l'html del form in una pagina web qualunque, sempre che sia questo ciò che ti serve fare:

<form name="form" action="http://mail.tuodominio.it/" method="post">
<div>
Utente <input name="_user" id="rcmloginuser" size="12" autocomplete="off" value="" type="text" />
</div>
<div>
Password <input name="_pass" id="rcmloginpwd" size="12" autocomplete="off" type="password" />
</div>
<input type="submit" value="Invio" />
</form>

Rispondi |

Per accedere e loggarsi

Per accedere e loggarsi a roudcube dall'esterno, ti consiglio di utilizzare questa classe:

http://blog.philippheckel.com/2008/05/16/roundcube-login-via-php-script/

Rispondi |

Aggiungi un commento

qmail notes

Pay me a coffee:

PayPal - The safer, easier way to pay online.

LXC scripts
Other contents
Guide per gli utenti
Ultimi commenti
Articoli recenti

RSS feeds