Roundcube webmail

Roundcube è una webmail avanzata con una bella interfaccia grafica.

RoundCube 0.8 con il nuovo tema

 

Aggiornare Roundcube all'ultima versione 1.2.3

Leggere qui https://github.com/roundcube/roundcubemail/wiki/Changelog#RELEASE1.2.3 per maggiori informazioni.

NB: è necessario abilitare il supporto mysql a pdo compilando il php con l'opzione --with-pdo-mysql

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 è /usr/local/www/htdocs/roundcube

cd /usr/local/www/htdocs
tar xzf roundcubemail-1.2.3-complete.tar.gz
# spostiamo la cartella di RC appena creata in una directory temporanea, da cui lanceremo lo script per l'aggiornamento
mv roundcubemail-1.2.3 rc-temp
# rimuoviamo il link simbolico
rm roundcube
# spostiamo la vecchia installazione. Questa cartella verrà sovrascritta durante il processo di upgrade
mv roundcubemail-1.2.2 roundcubemail-1.2.3
# ripristiniamo il link simbolico
ln -s roundcubemail-1.2.3 roundcube
# pronti per il lancio..
rc-temp/bin/installto.sh /usr/local/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-1.2.2

Notare che il file .htaccess è stato modificato:

< Options +FollowSymLinks
> Options +SymLinksIfOwnerMatch

Pertanto, al fine di evitare un errore 500 nel mio server ho cambiato il mio apache .conf come segue:

< AllowOverride Indexes Options FileInfo
> AllowOverride All

Prerequisiti

* The Apache, Lighttpd, Cherokee or Hiawatha web server
* .htaccess support allowing overrides for DirectoryIndex
* PHP Version 5.2.1 or greater including
   - PCRE, DOM, JSON, XML, Session, Sockets (required)
   - PHP Data Objects (PDO) with driver for either MySQL, PostgreSQL or SQLite (required)
     Note: MySQL database driver requires PHP 5.3 or newer.
   - Libiconv, Zip (recommended)
   - Fileinfo, Mcrypt, mbstring (optional)
* PEAR packages distributed with Roundcube or external:
   - Mail_Mime 1.8.1 or newer
   - Mail_mimeDecode 1.5.5 or newer
   - Net_SMTP (latest from https://github.com/pear/Net_SMTP/)
   - Net_IDNA2 0.1.1 or newer
   - Auth_SASL 1.0.6 or newer
* php.ini options (see .htaccess file):
   - error_reporting E_ALL & ~E_NOTICE (or lower)
   - 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
   - magic_quotes_runtime disabled
   - magic_quotes_sybase disabled
* PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker
* A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer) database engine
  or SQLite support in PHP
* One of the above databases with permission to create tables
* An SMTP server (recommended) or PHP configured for mail delivery

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-mysql=/usr/local/mysql \
        --with-mysqli=/usr/local/mysql/bin/mysql_config \
        --with-pdo-mysql=/usr/local/mysql \
        --with-mcrypt \
        --enable-mbstring \
        --with-zlib \
        --with-bz2 \
        --enable-sockets \
        --with-openssl \
        --enable-intl \
        --prefix=/usr/local/php \
        --with-apxs2=/usr/local/apache/bin/apxs

Estensioni opzionali

Rispetto alla versione 0.4.2, una estensione addizionale raccomandata è intl, che è già inclusa e abilitata in PHP-5.3, e che sulla mia Slackware richiede le ICU headers and libraries. Infatti, durante la configurazione, è possibile avere questo errore:

checking for icu-config... no
checking for location of ICU headers and libraries... not found
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.

Installazione di ICU

ICU dovrebbe essere disponibile come pacchetto compilato per la vostra distribuzione (su Slackware è presente nella 14.2). In caso contrario configurare, compilare e installare come al solito:

cd /usr/local/src
wget http://download.icu-project.org/files/icu4c/4.8.1/icu4c-4_8_1-src.tgz
tar xzvf icu4c-4_8_1-src.tgz
cd icu
chown -R root.root .
cd source
./configure
make
make install

Abilitare intl con php>=5.3

Installare ICU, quindi configurare php con --enable-intl

Installazione di Roundcube

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

cd /usr/local/www/htdocs
tar xzf roundcubemail-0.5.x.tar.gz
ln -s roundcubemail-0.5.x 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:

# /usr/local/mysql/bin/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 'localhost' naturalmente.

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:

// Log successful/failed logins to <log_dir>/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'; 
// default setting if preview pane is enabled $rcmail_config['preview_pane'] = true; 
// declaring the auth type speeds up the imap connection with 0.5 version!! 
$config['imap_auth_type'] = NULL; 
// 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 $rcmail_config['check_all_folders'] = true;

Commenti

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

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

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>

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/