Plugins per Roundcube

5 novembre 2023 by Roberto Puzzanghera 7 commenti

I plugin che ho abilitato sono (al momento):

  • Password, per cambiare la password utente
  • qmailforward, sostituisce il plugin forward di managesieve al fine di gestire i forward di qmail attraverso vpopmail/valias
  • ManageSieve, che scrive gli script per filtrare le email in arrivo (rigetto, spostamento in una cartella specifica, etc.). Notare che per usare questo è necessario aver abilitato  Dovecot managesieve.
    Questo plugin contiene delle interfacce per la gestione esplicita del messaggio di "fuori ufficio" e del reindirizzamento della posta.
  • SpamAssassin User Prefs SQL (sauserprefs), 
  • che consente all'utente di caricare su database SQL le prefenze su come Spamassassin deve filtrare la sua posta, creando ad esempio una black list.
  • Markasjunk, un plugin che consente di aggiungere con un click nel bottone "Marca come spam" l'indirizzo e-mail del mittente alla propria blacklist, o viceversa, o lanciare un comando come sa_learn.
  • Context Menu. Aggiunge un menu di dialogo alla lista dei messaggi, attivabile con il tasto destro, che comprende tra le altre cose la lista delle cartelle, la rubrica, il marcamento come letto/non letto, cancella, rispondi e inoltra. 
  • NewMail_notifier. Può notificare le nuove mail in tre modi: focalizzando la finestra del browser e cambiandone l'icona, riproducendo un suono, oppure mostrando la notifica sul desktop (via webkitNotifications).
  • Persistent login, che fornisce la funzionalità "Mantienimi loggato" per Roundcube.
  • ZipDownload, che aggiunge una opzione per scaricare tutti gli allegati a un messaggio in un singolo file zip, quando un messaggio ha allegati multipli.
  • Enigma, che fornisce il supporto per la visualizzazione e l'invio di messaggi firmati e/o criptati in formato PGP (RFC 2440) e PGP/MIME (RFC 3156).
  • swipe, che aggiunge le azioni di trascinamento destra/sinistra/giù alla lista dei messaggi nei dispositivi touch (tablet/cellulari).
  • Attachment reminder ricorda all'utente di allegare i file.

Altri plugin che ho usato in passato per i quali la documentazione potrebbe non essere più valida

  • rcguard.Questo plugin registra i tentativi di accesso falliti e presenta una verifica reCAPTCHA dopo un certo numero di accessi falliti.
  • autologon. Esegue il login da una pagina esterna (CMS)
  • logout_redirect. Versione modificata per redirigere alla home page dopo il logout
  • carddav. CardDav client. Può sincronizzare la rubrica con un server CardDav server come owncloud o SoGO.

Per abilitare un plugin è necessario includerlo in $config['plugins'] nel file di configurazione in questo modo:

$config['plugins'] = array(
    'password',
    'managesieve',
    'sauserprefs',
    'markasjunk',
    'contextmenu',
    'newmail_notifier',
    'zipdownload',
    'persistent_login',
    'enigma',
    'swipe',
    'attachment_reminder',
    'qmailforward'
}

Gestire i plugin con composer

Alcuni dei plugin menzionati sopra sono rilasciati insieme a Roundcube, ovvero sono già presenti nella cartella plugin e vanno solo abilitati, mentre gli altri possono essere facilmente installati da https://plugins.roundcube.net/ via composer. Per imparare rapidamente come usare composer dare uno sguardo alla home page del sito, dove si può trovare una guida veloce.

Installiare composer

Installare come segue se composer.phar non è già installato

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

wget https://getcomposer.org/composer-stable.phar 
mv composer-stable.phar composer.phar 
chown apache:apache composer.phar 
chmod +x composer.phar
mkdir -p /var/www/.composer 
chown -R apache:apache /var/www/.composer

Dal momento che composer deve essere lanciato da apache, è necessario assegnare i privilegi di scrittura nelle cartelle che apache dovrà sovrascrivere.

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 composer.lock

Usare composer

In due parole, è sufficiente aprire il file composer.json e aggiungere una riga come questa per ogni plugin che si intende installare, navigabile su https://plugins.roundcube.net:

"require" : {
 ...,
 "roundcube/rcsample": ">=0.2.0"
}

Questo è la sezione del mio file composer.json che è necessaria per installare i plugin descritti sotto:

"require": {
    ...............
    "sagredo-dev/qmailforward": ">=1.0.1",
    "johndoh/contextmenu": ">=3.3.1",
    "johndoh/swipe": ">=0.5"
}

Lanciare composer con l'utente apache per aggiornare e installare:

cd /var/www/roundcube
sudo -u apache php composer.phar update

Password

  • Nome del plugin: password

Questo plugin è rilasciato da Roundcube, quindi è già installato. E' ora possibile usare, oltre che il driver vpopmaild, anche il driver sql (grazie a John D. Trolinger).

E' consigliabile applicare questa patch di Tony Fung che permette al programma di fare una chiamata alla libreria cracklib (da installare preventivamente come già fatto per qmailadmin). In questo modo sia qmailadmin che Roundcube condividono lo stesso meccanismo di rafforzamento della password.

cd /var/www/roundcube
wget https://notes.sagredo.eu/files/qmail/patches/roundcube/cracklib-roundcube_pwd_plugin.patch
patch -p1 < cracklib-roundcube_pwd_plugin.patch

NB: è necessario rimuovere exec da disable_functions dal proprio php.ini perchè la patch possa funzionare.

Driver vpopmalid

# cd plugins/password
# cp -p config.inc.php.dist config.inc.php
# nano config.inc.php

$config['password_driver'] = 'vpopmaild';

// Determine whether current password is required to change password.
// Default: false.
$config['password_confirm_current'] = true;

// Require the new password to be a certain length.
// set to blank to allow passwords of any length
$config['password_minimum_length'] = 8;

// Require the new password to contain a letter and punctuation character
// Change to false to remove this check.
$config['password_require_nonalpha'] = true;

// vpopmaild Driver options
// -----------------------
// The host which changes the password
$config['password_vpopmaild_host'] = 'your-IP';

// TCP port used for vpopmaild connections
$config['password_vpopmaild_port'] = 89;

Driver sql

// We have MYSQL for our VPOPMAIL DATABASE so we use the sql driver
$config['password_driver'] = 'sql';

// SQL Driver options
// ------------------
// PEAR database DSN for performing the query. By default
// Roundcube DB settings are used.
// We have a VPOPMAIL DB  and the database and table name is vpopmail
$config['password_db_dsn'] =
'mysql://vpopmail:YOURPASSWORDGOESHERE@[mysql-IP]/vpopmail';

// The username and domainname are different columns JDT
$config['password_query'] = 'UPDATE vpopmail set
pw_passwd=ENCRYPT(%p,concat("$1$",right(md5(rand()),8 ),"$")),
  pw_clear_passwd=%p where pw_name=%l and pw_domain=%d';

// VPOPMAIL uses salted hash so md5 JDT
$config['password_crypt_hash'] = 'md5';

qmailforward

Questo plugin aggiunge la possibilità per gli utenti qmail di gestire il loro reinoltro dall'interno di Roundcube senza bisogno di all'amministratore del dominio che lo faccia attraverso qmailadmin. Esso salva i forward su database MySQL nella tabella vpopmail.valias. Diversamente dal plugin managesieve, dal quale ha preso ispirazione ma che solo apparentemente si comporta allo stesso modo, qmailforward utilizza le regole sieve ma salva i forward su database, preservando anche la possibilita di salvare una copia dei messaggi nella mailbox. In questo caso l'esecuzione di un delivery agent a scelta è possibile.

L'utilizzo di questo metodo consente a qmail di rispettare le policy SPF.

Configurare come segue:

cd plugins/qmailforward
cat > config.inc.php << __EOF__
// qmailforward database settings 
$config['qmailforward_db_dsnw'] = 'mysqli://vpopmail:password@localhosy/vpopmail';
__EOF__

Copiare dal file config.inc.dist.php into config.inc.php le impostazioni che si intende sovrascrivere rispetto al file di configurazionedi default, che viene comunque caricato. E' necessario inserire almeno le credenziali di accesso al database, che sono quelle contenute in ~vpopmail/etc/vpopmail.mysql.

NB: Questo plugin funziona solo con la mia patch per vpopmail e con l'opzione di configurazione di vpopmail  --enable-defaultdelivery --enable-valias.

Il supporto nella traduzione di questo plugin è gradito. E' sufficiente scaricare un file dalla cartella localization, tradurlo nella propria lingua e inviarlo via mail usando il bottone contatti.

 

Managesieve

Writes sieve scripts to filter the incoming mails (reject, move to a specific folders etc.). Note that to use this you must have Dovecot managesieve enabled.

cd /var/www/roundcube/plugins
cd managesieve
cp -p config.inc.php.dist config.inc.php

Modificare come segue il file di configurazione (ricordare che la porta del server dovecot-managesive è ora 4190, 2000 è obsoleta)

$config['managesieve_port'] = 4190;
$config['managesieve_host'] = 'your-server-IP';
// Enables separate management interface for vacation responses (out-of-office) 
$config['managesieve_vacation'] = 1; 
// Enables separate management interface for setting forwards (redirect to and copy to) 
$config['managesieve_forward'] = 1;

E questo è ciò che dovresti vedere nel log di dovecot con un semplice filtro per redirect

Oct 22 00:03:13 lda(test@yourdomain.net): Info: sieve: msgid=<c3445037f979a8cb793df1f858b7a4f9@somedomain.com>: forwarded to <someone@somewhere.net>

Si ricordi che, per rendere operative le regole sieve, è necessartio settare il file .qmail almeno per l'utente o per l'intero dominio come espiegato prima nella pagina sieve su Dovecot, altrimenti la LDA sarà vpopmail invece di Dovecot e le sieve sieve rule saranno ignorate.

E dopo molti anni di utilizzo di RoundCube sono finalmente benutoa conoscenza del fatto che questo plugin mette a disposione una interfaccia esplicite per la gestione del messaggio di "fuori ufficio":

Questo plugin mette a disposizione una variante dello stesso per gestire i forward con le sieve rules. Nel caso si stia valutando di utilizzarlo suggerisco di riferirsi invece al plugin qmailforward, che fa lo stesso senza invalidare l'SPF e la firma DKIM dei propri messaggi.

SpamAssassin-User-Prefs-SQL

Dopo aver fatto la migrazione a spamassassin v.4 è necessario usare la versione 1.20.1, che ancora non è disponibile via composer. Bisogna quindi scaricarla da github e installarla a mano:

cd /var/www/roundcube/plugins
wget https://github.com/johndoh/roundcube-sauserprefs/archive/refs/tags/1.20.1.tar.gz
tar xzf 1.20.1.tar.gz
mv roundcube-sauserprefs-1.20.1/ sauserprefs
cd sauserprefs
mv config.inc.php.dist config.inc.php

Modificare il file di configurazione:

$config['sauserprefs_db_dsnw'] = 'mysqli://spamassassin:[PASSWORD]@[mysql-IP]/spamassassin';
$config['sauserprefs_sav4'] = true;

Se l'estensione 'mysqli' non è disponibile nel vostro php usare 'mysq' l nell'ultima stringa qui sopra.

Se si è appena fatto l'aggiornamento a spamassassin v.4 è necessario dare un'occhiata alle informazioni sulla migrazione e le modifiche necessarie anche in relazione a questo plugin.

Il test della funzionalità userprefs di spamassassin è stato spiegato in questa pagina. Ora dobbiamo controllare che sia stato correttamente inserito/modificato il record nella tabella userprefs del DB spamassassin.

MarkAsJunk

Aggiunge l'indirizzo del mittente alla blacklist, oppure lancia un comando come ad esempio sa_learn.

  • Fornito da Roundcube
  • Nome del plugin: markasjunk

Creare il file di configurazione a partire dal file modello:

cp config.inc.php.dist config.inc.php

driver sa_blacklist

E' sufficiente cliccare sul bottone "Segnala come Spam" per creare un nuovo record "Black_list from" nel database e spostare il messaggio nella cartella Spam, contrassegnandolo (volendo in automatico) come già letto. Per i messaggi che sono finiti erroneamente nello Spam, si può cliccare bottone "Non è spam" per creare un nuovo record "White_list from" nel database.

Per usare il plugin con il driver sa_blacklist settare il file di configurazione in questo modo:

$config['markasjunk2_learning_driver'] = 'sa_blacklist';

Il driver cmd_learn seguente non dovrebbe essere più utilizzato, dato che il compito di gestire il sistema di learning e reporting è ora affidato a un cronjob script (maggiori informazioni qui).

driver cmd_learn

  • Grazie a Gabriel Torres per i suggerimenti riguardanti questa parte del setup

Questo driver consente di processare il messaggio con un comando o uno script eseguito da shell. Nel nostro caso eseguiremo sa_learn e spamassassin uno dopo l'altro.

Tenere presente che, perchè php sia in grado di eseguire comandi dalla shell, è necessario rimuovere eventualmente shell_exec dagli argomenti dell'opzione disable_functions nel file php.ini.

Preparare lo script con i comandi che devono essere eseguiti quando si clicca sul tasto "Marca come spam". Salvare nello script /usr/local/bin/teach_spam.sh il seguente codice

cat > /usr/local/bin/teach_spam.sh << __EOF__
#!/bin/bash 
/usr/local/bin/sa-learn --spam -u$1 $2 >> /var/log/spamassassin/sa_learn.log 2>&1​
/usr/local/bin/spamassassin -x -r < $2 >> /var/log/spamassassin/spamassassin.log 2>&1
__EOF__

Il primo comando dà la mail in pasto a SpamAssassin, consentendogli di 'imparare' quali sono i segni di un messaggio spam. Il secondo invia la segnalazione come spam to Razor, Pyzor e Spamcop.

Preparare ora lo script con i comandi che devono essere eseguiti quando si clicca sul tasto "Marca come non spam". Salvare nello script /usr/local/bin/revoke_spam.sh il seguente codice

cat > /usr/local/bin/revoke_spam.sh << __EOF__
#!/bin/bash 
/usr/local/bin/sa-learn --ham -u$1 $2 >> /var/log/spamassassin/sa_learn.log 2>&1​
/usr/local/bin/spamassassin -x -k < $2 >> /var/log/spamassassin/spamassassin.log 2>&1
__EOF__

Anche primo comando dà la mail in pasto a SpamAssassin, consentendogli di 'imparare' quali sono i segni di un messaggio spam e quali invece no. Il secondo revoca la segnalazione da Razor. A quanto sembra non è invece possibile revocare le segnalazioni a Pyzor e Spamcop.

Fornire i privilegi di esecuzione agli script appena creati

chmod +x /usr/local/bin/teach_spam.sh /usr/local/bin/revoke_spam.sh

Aggiungere queste opzioni al file di configurazione

$config['markasjunk_learning_driver'] = 'cmd_learn';
$config['markasjunk_spam_cmd'] = '/usr/local/bin/teach_spam.sh  %u %f';
$config['markasjunk_ham_cmd']  = '/usr/local/bin/revoke_spam.sh %u %f';

Creare il file logrotate per i log file precedenti

cat > /etc/logrotate.d/spam_reports << __EOF__
/var/log/spamassassin/spamassassin.log /var/log/spamassassin/sa_learn.log {
su root apache
rotate 5
daily
missingok
notifempty
delaycompress
create 664 root apache 
sharedscripts
}
__EOF__

E' necessario assegnare i privilegi +w ad apache nella cartella log, visto che Roundcube è eseguito da apache.

chgrp apache /var/log/spamassassin
chmod g+w /var/log/spamassassin
chmod 640 /etc/mail/spamassassin/.razor/identity-*
chmod 644 /etc/mail/spamassassin/.razor/razor-agent.log

driver multi_driver

E' possibile lanciare più di un driver al click sul bottone che marca il messaggio come spam/ham. Ho modificato la versione originale di Philip Weir per farla funzionare con il plugin markasjunk ora in uso su Roundcube e perchè lanci sia sa_blacklist che cmd_learn.

Installare come segue:

cd /var/www/roundcube/plugins/markasjunk/drivers
wget https://notes.sagredo.eu/files/qmail/patches/roundcube/markasjunk-multi_driver/multi_driver.txt
mv multi_driver.txt multi_driver.php

Impostare il driver corretto nel file di configurazione:

$config['markasjunk_learning_driver'] = 'multi_driver';

NB: il driver multi_driver, quando abilitato, sembra impedire la visualizzazione delle immagini allegate. Il motivo di ciò non mi è noto, ma è una cosa che si può verificare, per lo meno con la versione 1.4 das me utilizzata nel luglio 2021. E' gradito ogni commento al riguardo.

Context Menu

Aggiunge un menu di dialogo alla lista dei messaggi, attivabile con il tasto destro, che comprende tra le altre cose la lista delle cartelle, la rubrica, il marcamento come letto/non letto, cancella, rispondi e inoltra.

Nessuna configurazione è richiesta.

swipe

Questo plugin aggiunge azioni al trascinamento verso sinistra/destra/giù dell lista dei messaggi nei dispositivi touch (tablet/cellulari).

Sfortunatamente questoplugin non ha un file config, per cui è necessario aggiungere le opzioni di configurazione al file di configurazione principale di RoundCube

Ecco ciò che ho aggiunto io. Dare una occhiata al file README per scoprire quali sono le varie azioni diponibili.

$config['swipe_actions'] = [ 
 'messagelist' => [ 
   'left'  => 'delete', 
   'right' => 'reply-all', 
   'down'  => 'checkmail' 
 ], 
 'contactlist' => [ 
   'left'  => 'compose', 
   'right' => 'compose', 
   'down'  => 'vcard_attachments' 
 ] 
];

newmail_notifier

Supporta tre metodi di notifica:

  1. Basic - focalizza la finestra del browser e cambia la favicon
  2. Sound - riprodice un suono wav
  3. Desktop - mostra la notifica sul desktop (usando webkitNotifications, supportato da Chrome e Firefox con 'HTML5 Notifications' plugin)
  • Fornito da Roundcube
  • Nome del plugin: newmail_notifier

E' sufficiente abilitarlo rinominando il file config...

cd plugins/newmail_notifier
cp config.inc.php.dist config.inc.php

...e scegliendo il metodo di notifica desiderato:

// Enables basic notification
$config['newmail_notifier_basic'] = true;

// Enables sound notification
$config['newmail_notifier_sound'] = true;

// Enables desktop notification
$config['newmail_notifier_desktop'] = false;

Persistent login

Fornisce un tasto "Mantienimi loggato" nel form di login di Roundcube.

Sfortunatamente questo plugin non è installabile via composer. Vari fork di questo plugin compatibili con composer esistono e ne ho usato uno in passato senza molto successo, a causa di frequenti disconnessioni.

Installiamo quindi a mano

wget -O persistent_login-5.3.0.tar.gz https://github.com/mfreiholz/persistent_login/archive/refs/tags/version-5.3.0.tar.gz
tar xzf persistent_login-5.3.0.tar.gz
mv persistent_login-version-5.3.0 persistent_login
chown -R apache:apache persistent_login

Dai miei test il driver sql è preferibile a quello basato sui cookies, con il quale ho talvolta anche qui sperimentato delle disconnessioni. Abilitiamo quindi il driver sql nel file config:

cd persistent_login
mv config.inc.php.dist config.inc.php

Impostiamo l'uso del token nel config file

$config['ifpl_use_auth_tokens'] = true;

Ne ho anche approfittato per rinominare la variabile php $rcmail_config a $config dappertutto, dato che $rcmail_config è ora obsoleto in RoundCube.

Infine, se questa è una nuova installazione del plugin, è necessario creare la tabella MySQL nel database roundcube. Il codice sql può anche essere trovato nel file sql/mysql.sql:

USE roundcube;

CREATE TABLE IF NOT EXISTS `auth_tokens` (
`token` varchar(128) NOT NULL,
`expires` datetime NOT NULL,
`user_id` int(10) UNSIGNED NOT NULL,
`user_name` varchar(128) NOT NULL,
`user_pass` varchar(128) NOT NULL,
`host` varchar(255) NOT NULL,
PRIMARY KEY (`token`),
KEY `user_id_fk_auth_tokens` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `auth_tokens`
ADD CONSTRAINT `auth_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE;

Zip download

  • Fornito da RoundCube
  • Nome del plugin: zipdownload

Aggiunge una opzione per scaricare tutti gli allegati a un messaggio in un singolo file zip, quando un messaggio ha allegati multipli. Supporta i formati mbox e maildir.

Rinominare il modello del file config e personalizzare le poche opzioni a proprio piacimento. Io ho lasciato le opzioni predefinite.

mv config.inc.php.dist config.inc.php

Enigma

  • Fornito da Roundcube
  • Maggiori informazioni qui
  • Prerequisiti: gpg (gnupg and libgpg-error on Slackware systems)

Aggiornamento: dai miei test sembra che sia necessario aggiornare Crypt_GPG alla versione 1.6.2

Questo plugin fornisce il supporto per la visualizzazione e l'invio di messaggi firmati e/o criptati in formato PGP (RFC 2440) e PGP/MIME (RFC 3156).  Il plugin usa binari gpg sul server e memorizza tutte le chiavi (incluse quelle private degli utenti) sul server. Il criptaggio e il decriptaggio viene fatto lato server. Pertanto questo plugin è per gli utenti che ripongono fiducia nel server stesso.

Creaiamo il file di configurazione

cd /var/www/roundcube/plugins/enigma
cp -p config.inc.php.dist config.inc.php

Per default chiavi sono memorizzate nella directory enigma/home dir. Noi impostiamo questa directory in modo che non sia accessibile via web, assegnando ad apache i privilegi di scrittura in questa cartella

mkdir -p /var/www/roundcube-enigma-home
chown -R root:apache /path/to/roundcube-enigma-home
chmod -R g+w /var/www/roundcube-enigma-home

Modifichiamo ira la configurazione di apache al fine di assegnare i privilegi di accesso alla directory appena creata

Require all granted

Non dimentichiamo di riavviare apache a questo punto

apachectl restart

Ora è necessario modificare il file di configurazione di enigma per far si che venga puntata la home dir appena creata

$config['enigma_pgp_homedir'] = '/var/www/roundcube-enigma-home';

Il plugin enigma richiede che la libreria Crypt_GPG sia installata esattamente in /var/www/roundcube/plugins/enigma/lib/Crypt_GPG. Considerato il fatto che roundcube resetta la variabile di php include_path (che nel php.ini è settata a /path/to/php/lib), se si decide di installare questa libreria mediante l'uso di pear si otterrà un  "Server error". Per evitare questo scarichiamo e installiamo manualmente la libreria

cd /var/www/roundcube/plugins/enigma/lib
wget http://download.pear.php.net/package/Crypt_GPG-1.6.2.tgz
tar xzf Crypt_GPG-1.6.2.tgz
ln -s Crypt_GPG-1.6.2/Crypt
chown -R root:apache Crypt*

Il setup dei cerrtificati è semplice e intuitivo. Referirsi a questa pagina per vedere come fare.

Attachment reminder

  • Rilasciato da Roundcube
  • Nome del plugin: attachment_reminder

Un plugin che ricorda all'utente di allegare i file. E' necessario abilitarlo attraverso Preferenze->Composizione messaggi.

 

Altri plugin

Lascio qui la documentazione non aggiornata di alcuni plugin che ho usato in passato, nel caso possa tornare utile a qualcuno.

rcguard

Questo plugin registra gli accessi falliti e richiede agli utenti una verifica reCAPTCHA dopo un certo numero di tentativi. Ciò aumenta la protezione contro attacchi da parte di automi.

mv config.inc.php.dist config.inc.php

E' necessario ottenere una chiave da http://www.google.com/recaptcha. Copiare la chiave nel file di configurazione:

> nano config.inc.php

// Public key for reCAPTCHA
$config['recaptcha_publickey'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

// Private key for reCAPTCHA
$config['recaptcha_privatekey'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

Creare ora latabella mysql dove salvare il registro degli accessi falliti. Gli IP sono cancellati dopo un po' di tempo.

> mysql -u root -p
mysql> use roundcube;

CREATE TABLE `rcguard` (
  `ip` VARCHAR(40) NOT NULL,
  `first` DATETIME NOT NULL,
  `last` DATETIME NOT NULL,
  `hits` INT(10) NOT NULL,
  PRIMARY KEY (`ip`),
  INDEX `last_index` (`last`),
  INDEX `hits_index` (`hits`)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

quit;

E questo è tutto. La verifica captha sarà presentata dopo 5 tentativi falliti. Naturalmente si può variare questo parametro nell file di configurazione.

Sono disponibili diversi temi e traduzioni del  recaptcha. E' sufficiente editare il file rcguard.js. Per la documentazione si veda https://developers.google.com/recaptcha

autologon

Consente il login da un form esterno (CMS)

  • Installato con Roundcube

E' necessario adattare il plugin di default messo a disposizione a livello di esempio dallo stesso Thomas Bruederli:

<?php

/**
* Sample plugin to try out some hooks.
* This performs an automatic login if accessed from localhost
*
* @license GNU GPLv3+
* @author Thomas Bruederli
*/

class autologon extends rcube_plugin
{
  public $task = 'login';

  function init()
  {
    $this->add_hook('startup', array($this, 'startup'));
    $this->add_hook('authenticate', array($this, 'authenticate'));
  }

  function startup($args)
  {
    $rcmail = rcmail::get_instance();

    // change action to login
    if (empty($_SESSION['user_id']) && !empty($_POST['_autologin']) && $this->is_localhost())
    $args['action'] = 'login';
    return $args;
  }

  function authenticate($args)
  {
    if (!empty($_POST['_autologin']) && $this->is_localhost()) {
      $args['user'] = $_POST['_user'];
      $args['pass'] = $_POST['_pass'];
      $args['host'] = '[localhost | mail-server-IP]';
      $args['cookiecheck'] = false;
      $args['valid'] = true;
    }
    return $args;
  }

  function is_localhost()
  {
    return true;
    //    return $_SERVER['REMOTE_ADDR'] == '::1' || $_SERVER['REMOTE_ADDR'] == '127.0.0.1';
  }
}

Nella pagina html del proprio CMS si può usare un form come questo:

<form name="form" action="http://your.webmail.url/" method="post">
<input type="hidden" name="_action" value="login" />
<input type="hidden" name="_task" value="login" />
<input type="hidden" name="_autologin" value="1" />

<table>
<tr>
    <td>Utente</td>
    <td><input name="_user" id="rcmloginuser" autocomplete="off" value="" type="text" /></td>
</tr>
<tr>
    <td>Password</td>
    <td><input name="_pass" id="rcmloginpwd" autocomplete="off" type="password" /></td>
</tr>
<tr>
    <td colspan="2"><input type="submit" value="Login" /></td>
</tr>
</table>

</form>

logout_redirect

Questo plugin non è stato testato con Roundcube 1.4.1.

Se si è installato l'autologon plugin quest'altro può essere utile per redirigere gli utenti alla home page del proprio sito una volta fatto il logout.

cd /var/www/roundcube/plugins
wget https://notes.sagredo.eu/files/qmail/tar/RC-plugins/logout_redirect_rc0.5_v1.2-MN.tar.gz
tar xzf logout_redirect_rc0.5_v1.2-MN.tar.gz
cd logout_redirect
chown -R root.apache logout_redirect
chmod -R o-rx logout_redirect

Il plugin logout_redirect deve essere l'ultimo della lista dei plugin in main.inc.php altrimenti i successivi non vengono eseguiti.

Modificare in questo modo il file config.inc.php all'interno della cartella config del plugin stesso:

$config['logout_redirect_url'] = 'http://www.yoursite.net';

CardDav

Questo è un plugin che può servire per sincronizzare la rubrica con un server CardDAV come ownCloud o SoGO.

Questo plugin non è stato testato con la versione 1.4 di Roundcube. 

Maggiori informazioni qui: http://www.benjamin-schieder.de/carddav.html

cd /var/www/roundcube/plugins
GIT_SSL_NO_VERIFY=true git clone https://github.com/blind-coder/rcmcarddav carddav
cd carddav 
chown root:root .

Installare le dipendenze tramite composer:

curl -sS https://getcomposer.org/installer | php
php composer.phar install

Ora è necessario installare le tabelle del datadase tramite il file opportuno salvato nella sottocartella dbmigrations/0000-dbinit/.

Dopodichè è possibile configurare la rubrica. Se si usa un server ownCloud, queste sono le impostazioni:

Per i mobile Android la migliore applicazione è CardDAV.

Risoluzione dei problemi

Se si incorre in un errore curl del genere quando si scaricano le dipendenze

All settings correct for using Composer

PHP Warning:  failed loading cafile stream: `/etc/ssl/certs/cacert.pem' in - on line 762
PHP Warning:  file_get_contents(): Failed to enable crypto in - on line 762
PHP Warning:  file_get_contents(https://getcomposer.org/versions): failed to open stream: operation failed in - on line 762
PHP Warning:  Invalid argument supplied for foreach() in - on line 508
None of the 0 stable version(s) of Composer matches your PHP version (5.6.21 / ID: 50621)

è necessario installare un certificato:

cd /etc/ssl/certs
wget --no-check-certificate http://curl.haxx.se/ca/cacert.pem

e dire a php dove è stato installato modificando il proprio php.ini

openssl.cafile=/etc/ssl/certs/cacert.pem

Commenti

Errore cambio password vpopmail (5.4.32) roundcube (1.2.3)

Ciao Roberto ti scrivo per ringraziarti per l'ottimo lavoro e per chiederti se puoi aiutarmi in un problema su cambio password con roundcube (1.2.3) e vpopmail backend (5.4.32) in pratica se cerco di utilizzare dei caratteri speciali per generare la password Roundcube mi rilascia un errore "impossibile salvare la password" e non prosegue. 

Rispondi |

non saprei... leggendo

non saprei... leggendo velocemente il codice (non ho avuto molto tempo) ho visto che i caratteri debbono essere compresi nel set di caratteri definiti dal parametro password_charset, che per default è ISO-8859-1, ma immagino che i caratteri che stai usando non siano al di fuori di questo set...

Rispondi |

errore sieverules

Per prima cosa complimenti, ho trovato la soluzione ai miei dubbi grazie al tuo blog.

Ho un problema con sieverules, l'ho configurato come da tue indicazioni, ho portato le modifiche nei file 15-lda.conf, 20-managesieve.conf e 90-sieve.conf ma quando entro in roundcube, impostazioni, filtri dovecot mi restituisce l'errore

May 02 16:24:06 managesieve(1234@fabrizio.intra): Error: sieve-storage: userdb(1234@fabrizio.intra) didn't return a home directory or sieve script location
May 02 16:24:06 managesieve(1234@fabrizio.intra): Fatal: Failed to open Sieve storage.


Mi sai dire dove sbaglio?

La configurazione che uso è postfix + dovecot + ldap su una centos 6.2

Rispondi |

uh.. non sono un esperto di

uh.. non sono un esperto di postfix.. ad ogni modo hai provato a vedere se il server sieve risponde?

# telnet localhost 4190

Rispondi |

Funziona, è ok, mi

Funziona, è ok, mi restituisce:

[root@newmail ~]# telnet localhost 4190
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
"IMPLEMENTATION" "Dovecot Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date"
"NOTIFY" "mailto"
"SASL" "PLAIN LOGIN"
"STARTTLS"
"VERSION" "1.0"
OK "Dovecot IMAP Server ready."

Il problema credo che sia legato al plugin, lancio una tail -f /var/log/dovecot e quando clicco su "filtri" compare l'errore. Non ne vengo fuori.

Rispondi |

devi avere qualche problema

devi avere qualche problema con lo userdb che non riesce a passare la home dir dove salvare lo script.. ma qui non posso essere di aiuto.. le cartelle inbox, sent ecc vengono viste con la webmail?

Rispondi |

Risolto

Ciao Roberto, anche se a distanza di 6 mesi mi sembra corretto chiudere il cerchio, ho risolto in questo modo:

nella configurazione del dovecot.conf non gradisce

sieve_dir = ~/sieve
sieve=~/.dovecot.sieve

e ho specificato la path assoluta della maildir_location:

sieve_dir = /home/vmail/%d/%u/sieve
sieve = /home/vmail/%d/%u/sieve/.dovecot.sieve

Grazie per l'aiuto e per la guida Smile

Rispondi |