Roundcube webmail

1 dicembre 2019 Roberto Puzzanghera4 commenti

Roundcube è una webmail avanzata con una bella interfaccia grafica.

Aggiornare Roundcube all'ultima versione 1.4.1

Leggere qui https://github.com/roundcube/roundcubemail/wiki/Changelog#RELEASE1.4.1 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

tar xzf roundcubemail-1.4.1-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.4.1 rc-temp
# rimuoviamo il link simbolico
rm roundcube
# spostiamo la vecchia installazione. Questa cartella verrà sovrascritta durante il processo di upgrade
mv roundcubemail-1.3.1 roundcubemail-1.4.1
# ripristiniamo il link simbolico
ln -s roundcubemail-1.4.1 roundcube
# pronti per il lancio..
rc-temp/bin/installto.sh /path/to/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.3.1

La versione 1.4 aggiunge alcune nuove impostazioni per quanto riguarda SMTP, quindi è necessario dare uno sguardo alla configurazione più sotto.

Problemi

L'installazione dei vari plugin è ora centralizzata nella repository https://plugins.roundcube.net/ e il processo di aggiornamento è gestito da composer, che deve aggiornato per primo quando si migra da una versione precedente. Infatti ho ricevuto questo messaggio di avviso quando ho lanciato l'aggiornamento dei plugin:

# sudo -u apache php composer.phar update -no-dev
Warning: This development build of composer is over 30 days old. It is recommended to update it by running "composer.phar self-update" to get the latest version

Sfortunatamente la versione di composer che era installata non era compatibile con php-7.2, quindi ho dovuto scaricarlo e aggiornarlo manualmente andando a sostituire il file composer.phar file. E dal momento che composer deve essere lanciato da apache, è necessario fare in modo che apache possa sovrascrivere questo file per i futuri auto-aggiornamenti (nel mio caso era un file con privilegi root:apache):

chmod g+w composer.phar

Nel corso dei miei tentativi di aggiornamento dalla linea di comando, mi è risultato chiaro che la cartella /srv dovesse avere i privilegi di scrittura da parte dell'utente apache, dal momento che esso cerca di creare una sotto cartella "httpd", pertanto:

chown -R apache /srv/

Per evitare altri errori ricordarsi di assegnare privilegi di scrittura ad apache nelle cartelle "plugins" e "vendor" e anche ai file composer.lock e composer.phar:

chown -R vendor plugins composer.lock composer.phar
crypt_gpg caused me problems because of broken links that I solved in this way:

cd vendor/bin
rm crypt-gpg-pinentry
ln -s ../pear/crypt_gpg/scripts/crypt-gpg-pinentry crypt-gpg-pinentry

Un'altra richiesta rispetto al passato è che php necessita del supporto ldap al fine di gestire gli aggiornamenti via composer, compilandolo in questo modo:

--with-ldap

Prerequisiti

* An IMAP, HTTP and SMTP server
* .htaccess support allowing overrides for DirectoryIndex
* PHP Version 5.4 or greater including:
- PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required)
- PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required)
- Iconv, Zip, Fileinfo, Intl, Exif (recommended)
- LDAP for LDAP addressbook support (optional)
- GD, Imagick (optional thumbnails generation, QR-code)
* PEAR and PEAR packages distributed with Roundcube or external:
- Mail_Mime 1.10.0 or newer
- Net_SMTP 1.8.1 or newer
- Net_Socket 1.0.12 or newer
- Net_IDNA2 0.1.1 or newer
- Auth_SASL 1.0.6 or newer
- Net_Sieve 1.4.3 or newer (for managesieve plugin)
- Crypt_GPG 1.6.3 or newer (for enigma plugin)
- Endroid/QrCode 1.6.0 or newer (https://github.com/endroid/QrCode)
- Kolab/Net_LDAP3 1.0.6 or newer (for LDAP addressbook)
- Masterminds/HTML5 2.5.x (optional HTML parser)
* php.ini options:
- error_reporting E_ALL & ~E_NOTICE & ~E_STRICT
- memory_limit > 16MB
- file_uploads enabled (for uploading attachments and import files)
- session.auto_start disabled
- suhosin.session.encrypt disabled
- mbstring.func_overload disabled
- pcre.backtrack_limit >= 100000
* A MySQL, PostgreSQL, MS SQL Server (2005 or newer), Oracle database
or SQLite support in PHP - with permission to create tables
* Composer installed either locally or globally (https://getcomposer.org)

I will show how install it in a Linux/Apache/MySQL/PHP + qmail environment.

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-mysqli=/usr/bin/mysql_config \
        --with-pdo-mysql=/usr \
        --disable-mysqlnd \
        --with-mcrypt \
        --enable-mbstring \
        --with-zlib \
        --with-bz2 \
        --enable-sockets \
        --with-openssl \
        --enable-intl \
        --with-ldap

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.4

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-x.x.x.tar.gz
ln -s roundcubemail-x.x.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 /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
$config['preview_pane'] = true;
// 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_server'] = 'tls://smtp.sagredo.eu';// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;
$config['smtp_auth_type'] = 'LOGIN';// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '%p';

// 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'

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 /path/to/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 | Permalink

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 | Permalink

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 | Permalink

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 | Permalink