User Tools

Site Tools


doc:appunti:linux:sa:roundcube

This is an old revision of the document!


Roundcube web mail

Debian Lenny

Questi i pacchetti Debian necessari. Purtroppo non sono presenti in Debian Lenny, fortunatamente ha funzionato l'installazione dei pacchetti Sid su Lenny (2009-04-16).

  • php-mdb2
  • php-mdb2-driver-mysql
  • roundcube-mysql
  • roundcube-core
  • roundcube

Oltre a MySQL è disponibile anche il supporto a PostgreSQL e Sqlite, basta installare i pacchetti relativi.

Se si desidera modificare la configurazione (ad esempio il database di backend) eseguire dpkg-reconfigure roundcube-core.

Debian Squeeze

Pacchetti installati (escluse le dipendenze):

  • roundcube
  • roundcube-pgsql
  • aspell-it

Si vuole utilizzare PostgreSQL come backend ed avere il correttore ortografico in italiano.

Durante l'installazione del pacchetto risposto come segue alle domande:

  • IMAP server 127.0.0.1
  • Default language it_IT
  • Usare dbconfig-common per la configurazione del backend
  • Method for authenticating PostgreSQL user: password

In questo modo viene creato automaticamente il database PostgreSQL di nome roundcube, con owner roundcube e metodo di accesso md5 (password).

Debian Wheezy

C'è un problema di visualizzazione causato dalla nuova skin di Roundcube 0.7.2, per cui il plugin appare tutto spostato in alto a sinistra. Bisogna modificare due file in vacation/skins/default/, cioè templates/vacation.html e vacation.css.

Qui i file modificati oppure il file patch.

Debug

Roundcube scrive i suoi log in /var/lib/roundcube/logs/.

L'installazione predefinita Debian invece fa creare a Roundcube dei file di log in /var/log/roundcube/, il livello di logging si imposta in /etc/roundcube/main.inc.php con la direttiva $rcmail_config['debug_level'].

Sqlite

Con il pacchetto Debian Lenny di roundcube_0.2.1-1 configurato per Sqlite, pare che ci sia un bug. Se si tenta di modificare qualche impostazione dell'identità si ottiene l'errore:

SERVICE CURRENTLY NOT AVAILABLE!
Error No. [0x01F4]

MySQL

Il processo di configurazione Debian su database MySQL richiede necessariamente l'accesso al database come amministratore del database (generalmente root), non è sufficiente avere un utente e un database già creati. Anzi il database e l'utente non devono esistere prima dell'installazione Debian.

Per accedere a MySQL serve il modulo MDB2_Driver_mysql, che in Debian Lenny non esiste pacchettizzato. Per installarlo:

pear install 'pear/MDB2'
pear install 'pear/MDB2#mysql'

Probabilmente è possibile anche installare manualmente i pacchetti da Squeeze: php-mdb2 e php-mdb2-driver-mysql.

Creazione Maildir

Il server courier-imap (e l'omologo courier-pop) richiedono che l'utente abbia la propria $HOME/Maildir per consentire il login. In caso che Roundcube neghi l'accesso controllare che l'utente abbia la propria Maildir.

In generale dovrebbe bastare creare una /etc/skel/Maildir/ con struttura e permessi corretti in modo che ogni nuovo utente abbia la propria. In alternativa l'utente root può eseguire il comando:

su -l -c 'maildirmake' username

Ad ogni modo la Maildir dovrebbe essere creata automaticamente alla ricezione della prima mail.

Personalizzazioni

Il file di configurazione principale è /etc/roundcube/main.inc.php. Per nascondere il drop-down box per la scelta del server imap modificare la variable come segue:

//$rcmail_config['default_host'] = array("127.0.0.1");
$rcmail_config['default_host'] = "127.0.0.1";

Virtual users

Si vuole accedere usando l'indirizzo email al posto del nome di login. Si vuole anche che il mittente venga automaticamente impostato al corretto indirizzo email, invece che al generico login@hostname.domain.com.

Se si utilizza il server Courier IMAP è possibile configurare il courier-authdaemon in tal senso (autenticazione authuserdb): Roundcube esegue l'autenticazione direttamente via imap/courier-authdaemon.

Altrimenti si può sfruttare la presenza di un file virtual_alias_maps di Postfix (es. /etc/postfix/virtual_alias_maps.in), aggiungendo in /etc/roundcube/main.inc.php:

// Path to a virtuser table file to resolve user names and e-mail addresses
$rcmail_config['virtuser_file'] = '/etc/postfix/virtual_alias_maps.in';

NOTA1: Se ad uno stesso indirizzo email in virtual_alias_maps corrispondono due o più account, non è possibile utilizzare quell'indirizzo email come virtuser di Roundcube.

NOTA2: Utilizzando il virtuser_file Roundcube dovrebbe essere in grado di desumere correttamente l'indirizzo email dell'utente da usare come mittente. Altrimenti vedere più avanti come creare un record nella tabella users e nella tabella identities per configurare manualmente l'account.

Check new mail

Per non tempestare il server si porta l'intervallo da 1 minuto (default) a 5 minuti. Ogni utente potrà tuttavia modificare le proprie preferenze.

// Minimal value of user's 'keep_alive' setting (in seconds)
// Must be less than 'session_lifetime'
$rcmail_config['min_keep_alive'] = 180;
 
// Default interval for keep-alive/check-recent requests (in seconds)
// Must be greater than or equal to 'min_keep_alive' and less than 'session_lifetime'
$rcmail_config['keep_alive'] = 300;

Cartelle speciali

Per dare ad ogni nuovo utente le cartelle speciali Bozze, Inviata, Spam e Cestino bisogna creare le relative Maildir e sottoscriverle. Il file con le cartelle sottoscritte usato dal server IMAP Courier è courierimapsubscribed.

La Maildir deve appartenere all'utente (root può crearle con su(1) e maildirmake(1)). È possibile preparare il template della Maildir e salvarlo in /etc/skel/, in questo caso la Maildir deve appartenere a root:

cd /etc/skel
maildirmake Maildir
maildirmake Maildir/.Drafts
maildirmake Maildir/.Junk
maildirmake Maildir/.Sent
maildirmake Maildir/.Trash
echo INBOX.Drafts >> Maildir/courierimapsubscribed
echo INBOX.Junk   >> Maildir/courierimapsubscribed
echo INBOX.Sent   >> Maildir/courierimapsubscribed
echo INBOX.Trash  >> Maildir/courierimapsubscribed

Autenticazione su invio

Con le impostazioni Debian predefinite l'invio viene fatto direttamente sulla porta 25 di localhost dall'utente Apache. A seguito di accessi fraudolenti (furto di login/password) potrebbe capitare di vedere invii massicci con il mittente alterato, pertanto diventa difficile risalire anche a quale account è stato violato (mail sotomessa da utente Apache con mittente di fantasia).

Per rendere un po' più tracciabili le mail in uscita conviene impostare l'invio tramite TLS con login e password. In /etc/roundcube/main.inc.php si imposta:

$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';

Virtual users ed alias

È possibile fare login con l'indirizzo email invece dello username Unix, in questo caso l'autenticazione imap/courier-authdaemon accetta le credenziali verificando il file /etc/courier/userdb (il file deve esistere e courier-authdaemon deve essere configurato opportunamente).

Se il parametro $rcmail_config['virtuser_file'] punta ad un file virtuser valido (ad esempio un virtual_alias_maps di Postfix) allora RoundCube è in grado al primo login di aggiungere un record alla tabella users del database, inserendo l'opportuno username (login Unix) e alias (indirizzo email).

Altrimenti RoundCube non conosce l'effettivo nome di login e nel database viene creato un record dove lo username è l'indirizzo di posta elettronica. Ciò comporta diversi problemi, tra cui l'impossibilità di utilizzare il plugin vacation con il driver setuid. Infatti RoundCube non conosce il nome utente effettivo e di conseguenza la $HOME dove creare i file .forward, etc.

Al momento della creazione dell'utente Unix pertanto conviene inserire anche un record nella tabella users del database RoundCube, dove username è il nome di login Unix ed alias è l'indirizzo di posta elettronica.

Conviene creare anche una identità nella tabella identities per associare l'indirizzo email al nome esteso (nome e cognome). Si impostano i campi user_id, name, email e standard = 1 (significa che è l'identità predefinita).

Plugins

I plugin possono essere scompattati nella directory /usr/local/share/roundcube/plugins/ e collegati con un link simbolico da /var/lib/roundcube/plugins/.

Poi nel file /etc/roundcube/main.inc.php si aggiunge il nome del plugin nell'array:

$rcmail_config['plugins'] = array('vacation', 'filters');

FIXME Debian ha la directory plugin di Roundcube anche in altri posti, ma un link in esse non è sufficiente ad attivare il plugin stesso. Ha senso mantenere il link anche in queste?

  • /etc/roundcube/plugins/
  • /usr/share/roundcube/plugins/

Esiste anche il pacchetto Debian roundcube-plugins. FIXME Vedere cosa contiene di utile e che sistema utilizza per abilitare/disabilitare i vari plugin.

Plugin rcubevacation 1.9.0

Installato il plugin RoundCube Vacation 1.9.0.
Vedere più avanti l'installazione del plugin versione 1.9.9.

Scompattato in /usr/local/share/roundcube/plugins/vacation/, creato un link da /usr/share/roundcube/plugins/.

Abilitato il plugin editando /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('vacation');

Modificato in config.inc.php l'oggetto predefinito:

$rcmail_config['default']['subject'] = "Notifica vacation (out of office)";

Configurato in config.ini il metodo di azione:

[default]
driver = "setuid"
executable = "/usr/local/sbin/squirrelmail_vacation_proxy"

Si deve compilare e installare il programma squirrelmail_vacation_proxy i cui sorgenti sono forniti con il plugin.

Nel file config.mk si imposta BINDIR = /usr/local/sbin, e si esegue il classico make && make install.

Plugin rcubevacation 1.9.9

Installato il plugin RoundCube Vacation 1.9.9.

Scompattato in /usr/local/share/roundcube/plugins/vacation/, creato un link da /usr/share/roundcube/plugins/. ATTENZIONE: con Debain Wheezy il link simbolico deve essere creato in /var/lib/roundcube/plugins/.

Abilitato il plugin editando /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('vacation');

Configurato il file vacation/config.ini, impostando nella sezione [default]:

[default]
driver = "setuid"
executable = "/usr/local/sbin/squirrelmail_vacation_proxy"
subject = "Notifica vacation (out of office)"
body = "default.txt"

Si deve compilare e installare il programma squirrelmail_vacation_proxy i cui sorgenti sono forniti con il plugin.

Nel file config.mk si imposta BINDIR = /usr/local/sbin e RESTRICTUSE = -D RESTRICTUSE, poi si esegue il classico make && make install.

Patch per virtual domains

La seguente rcubevacation-1.9.9.patch consente di:

  • Funzionare correttamente con destinatari che non corrispondono ad utenti Unix.
  • Impostare alias di risposta non locali (consente a vacation di rispondere a messaggi indirizzati a utenti di domini virtuali, ad esempio niccolo.rigacci@domain1.org,info@domain2.org).
  • Impostare forward multipli.
  • TODO Non consente di attivare il vacation con forward senza copia locale.

ATTENZIONE! Il nome di login utilizzato per entrare in Roundcube deve corrispondere al nome di login Unix oppure all'alias presente nella tabella users. Non può essere una delle identità alternative presenti nella tabella identities. Altrimenti il plugin non è in grado di identificare l'utente Unix sottostante e gestire i relativi file nella home directory.

Il file .forward

Ecco alcuni esempi di file .forward con il relativo significato.
Nota: un nome preceduto dal backslash significa consegna ad utente locale senza ulteriore verifica del forward.

Vacation (risponde ai messaggi destinati a due differenti alias):

\<login>,"|/usr/bin/vacation -a <email_alias1> -a <email_alias2> <login>"

Vacation e forward a due altri indirizi, con copia locale:

\<login>,<email1>,<email2>,"|/usr/bin/vacation -a <email_alias1> -a <email_alias2> <login>"

Forward a due indirizi, con copia locale:

\<login>,<email1>,<email2>

Forward a due indirizi, senza copia locale:

<email1>,<email2>

La patch proposta prevede che i destinatari multipli vengano scritti su una stessa riga di .forward, separati da virgole. Tuttavia il file .forward può essere composto da più righe (destinazioni multiple), si trova documentato (e pare funzionare) questa sintassi:

\<login>,
<email1>,
<email2>

e pure questa:

\<login>
<email1>
<email2>

Filtri web-mail

Per le note generali vedere il paragrafo plugins.

Si tratta di un plugin web-side, cioè i filtri vengono applicati solo quandi si apre la posta con webmail. Scaricato l'archivio da http://sourceforge.net/projects/rcubefilters/, si utilizza la versione 2.0 su Roundcube 0.7.2.

Scompattato l'archvio in /usr/local/share/roundcube/plugins/filters/ e creato un link simbolico in /var/lib/roundcube/plugins/. Aggiungere il plugin in /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('vacation', 'filters');

Nella schermata delle Impostazioni compare il tab Filtri.

Supporto quota

Come impostazione predefinita Roundcube supporta la quota disco tramite l'omonima funzione IMAP, vedere la paragrafo IMAP quota.

Problema con la Disposition Notification

Può esserci un problema con l'invio della notifica di ricezione: Roundcube reagisce correttamente alla richiesta contenuta nell'header Disposition-Notification-To: e genera un messaggio opportuno. Secondo l'RFC2298 il campo From dell'envelope (quello trasmesso da MAIL FROM: del protocollo SMTP) deve essere vuoto, ma in alcuni casi il server SMTP potrebbe rifiutare un messaggio fatto in quel modo.

Gli errori si vedono in /var/log/roundcube/errors:

SMTP Error: SMTP error: Failed to add recipient 'mail@example.com'
    in /usr/share/roundcube/program/include/main.inc on line 1747
    (POST /roundcube/?_task=mail&_action=sendmdn?_task=&_action=)

Il codice che rimuove il FROM è contenuto nel file rcube_smtp.php alle riga 223:

    // RFC2298.3: remove envelope sender address
    if (preg_match('/Content-Type: multipart\/report/', $text_headers)
      && preg_match('/report-type=disposition-notification/', $text_headers)
    ) {
      $from = '';
    }
doc/appunti/linux/sa/roundcube.1466420643.txt.gz · Last modified: 2016/06/20 13:04 by niccolo