User Tools

Site Tools


doc:appunti:linux:sa:roundcube

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:roundcube [2013/10/25 18:22] – [Filtri web-mail] niccolodoc:appunti:linux:sa:roundcube [2022/01/28 09:36] (current) – [Debug] niccolo
Line 44: Line 44:
 Roundcube scrive i suoi log in **''/var/lib/roundcube/logs/''**. 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']''**.+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/config.inc.php'' (nelle vecchie versioni Debian si usava ''main.inc.php''con la direttiva **''$rcmail_config['debug_level']''**. 
 + 
 +Una opzione utile da attivare, disabilitata per default in Debian, è la registrazione dei login: 
 + 
 +<code php> 
 +// Log successful/failed logins to <log_dir>/userlogins or to syslog 
 +$config['log_logins'] = true; 
 +</code>
  
 ===== Sqlite ===== ===== Sqlite =====
Line 82: Line 89:
 ===== Personalizzazioni ===== ===== 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:+Il file di configurazione con tutte le opzioni disponibili è ''/etc/roundcube/main.inc.php'', ma con Debian Jessie le personalizzazioni vanno messe in **''/etc/roundcube/config.inc.php''**. 
 + 
 +Per nascondere il drop-down box per la scelta del server imap modificare la variable come segue:
  
 <code php> <code php>
Line 139: Line 148:
 </code> </code>
  
-===== Virtual users ed alias =====+=== Autenticazione su invio ===
  
-È 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).+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).
  
-Se il parametro **''$rcmail_config['virtuser_file']''** punta ad un file //virtuser// valido (ad esempio un ''[[http://www.postfix.org/postconf.5.html#virtual_alias_maps|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).+Per rendere un popiù tracciabili le mail in uscita conviene impostare l'invio tramite TLS con login e password. In **''/etc/roundcube/main.inc.php''** si imposta:
  
-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.+<file> 
 +$rcmail_config['smtp_port'] = 25; 
 +$rcmail_config['smtp_user'] = '%u'
 +$rcmail_config['smtp_pass'] = '%p'
 +</file> 
 +===== Virtual users ed email alias =====
  
-Al momento della creazione dell'utente Unix pertanto conviene inserire anche un record nella **tabella users** del database RoundCubedove **''username''** è il nome di login Unix ed **''alias''** è l'indirizzo di posta elettronica.+**ATTENZIONE**: Questa ricetta funziona su **Debian Stretch**, che installa **Roundcube 1.2.3**. La situazione è cambiata rispetto a Debian Jessie, dove Roundcube 0.7.2 aveva il campo //alias// nella tabella //users//, rimosso nella versione più recente. 
 + 
 +Al primo **login nella webmail** viene creata automaticamente una riga nella tabella **users**: nel campo **username** viene memorizzato il nome usato per il login, che è stato **autenticato via IMAP**. Se il sistema IMAP sottostante accetta indifferentemente sia lo **username Unix** che l'**indirizzo email**, si corre il rischio che Roundcube crei due utenti differenti nella tabella users, con tutti i problemi del caso (duplicazione delle preferenze, della rubrica, ecc.). 
 + 
 +Esiste il plugin **virtuser_file** che tenta il lookup del nome di login in un file, cercando una corrispondenza //indirizzo email// => //username Unix//; se lo username trovato esiste già nella tabella users, il login viene effettuato con quelle credenziali. 
 + 
 +Si installa il pacchetto **roundcube-plugins** e si attiva il plugin modificando **/etc/roundcube/config.inc.php**: 
 + 
 +<code php> 
 +$config['plugins'] = array( 
 +    'virtuser_file' 
 +); 
 +// Virtual users mapping file: email_address >= username 
 +$config['virtuser_file'] = '/etc/postfix/virtual_alias_maps'; 
 +</code> 
 + 
 +Ovviamente il file **/etc/postfix/virtual_alias_maps** deve contenere la mappa da indirizzo email a username Unix, del tipo: 
 + 
 +<file> 
 +nome.cognome@dominio.it  username 
 +</file> 
 + 
 +Sarebbe opportuno anche creare forzosamente una entry nella **tabella users** al momento della creazione di una casella di posta (utilizzando lo username Unix) e disabilitare la creazione automatica degli utenti da parte di Roundcube, basta aggiungere in **/etc/roundcube/config.inc.php**: 
 + 
 +<code php> 
 +// Only registered users can use this service 
 +$config['auto_create_user'] = false; 
 +</code> 
 + 
 +Secondo questo criterio è opportuno creare anche un record nella **tabella identities** (collegato all'utente nella tabella users), nel quale si imposta l'indirizzo email da usare come mittente. 
 + 
 +Un'altro parametro di configurazione consente di usare l'email di una propria identità come nome di login (tale parametro potrebbe rendere superfluo l'uso del plugin //virtuser_file//qualora ogni utente avesse la propria identità impostata correttamente): 
 + 
 +<code php> 
 +// Enables possibility to log in using email address from user identities 
 +$config['user_aliases'] = true; 
 +</code> 
 +===== 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: 
 + 
 +<code php> 
 +$rcmail_config['plugins'] = array('vacation', 'filters'); 
 +</code> 
 + 
 +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/''**
  
-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''** **''standard''** = 1 (significa che è l'identità predefinita).+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 ===== ===== Plugin rcubevacation 1.9.0 =====
Line 236: Line 300:
 </file> </file>
  
-La patch proposta prevede che i detinatari 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:+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:
  
 <file> <file>
Line 251: Line 315:
 <email2> <email2>
 </file> </file>
 +
 +===== Plugin roundcube-vacation-2.x =====
 +
 +Vedere la pagina su **[[https://plugins.roundcube.net/packages/gabtoth/vacation|plugins.roundcube.net]]**, l'archivio si può scaricare dalla sua pagina su **[[https://github.com/gabor-toth/roundcube-vacation-plugin|GitHub]]**.
 +
 +Creare la cartella **/usr/local/share/roundcube/plugins/vacation/** e scompattare al suo interno il contenuto dell'archivio, quindi creare un **link simbolico**:
 +
 +<code>
 +ln -s /usr/local/share/roundcube/plugins/vacation /var/lib/roundcube/plugins
 +</code>
 +
 +Attivare il plugin aggiungendolo all'array **%%$config['plugins']%%** nel file **/etc/roundcube/config.inc.php**:
 +
 +<code php>
 +$config['plugins'] = array(
 +    'vacation'
 +);
 +</code>
  
 ===== Filtri web-mail ===== ===== Filtri web-mail =====
  
-Si tratta di un plugin web-side, cioè i filtri vengono applicati solo quandi si apre la posta con webmail.+Per le note generali vedere il paragrafo [[#plugins]].
  
-Scaricato l'archivio da [[http://sourceforge.net/projects/rcubefilters/]], si utilizza la versione 2.0 su Roundcube 0.7.2.+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/''**. Nella schermata delle //Impostazioni// compare il tab //Filtri//.+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''**:
  
-Debian ha la directory plugin di Roundcube anche in altri postima un link in esse non è sufficiente ad attivare il plugin stessoHa senso mantenere il link anche in queste? FIXME+<code php> 
 +$rcmail_config['plugins'] = array('vacation''filters'); 
 +</code> 
 + 
 +Nella schermata delle //Impostazioni// compare il tab //Filtri//.
  
-  * **''/etc/roundcube/plugins/''** 
-  * **''/usr/share/roundcube/plugins/''** 
 ===== Supporto quota ===== ===== Supporto quota =====
  
 Come impostazione predefinita Roundcube supporta la quota disco tramite l'omonima funzione IMAP, vedere la paragrafo [[imap#quota|IMAP quota]]. Come impostazione predefinita Roundcube supporta la quota disco tramite l'omonima funzione IMAP, vedere la paragrafo [[imap#quota|IMAP quota]].
  
-----+===== Problema con la Disposition Notification ===== 
 + 
 +Quando si crea un nuovo messaggio email è possibile attivare l'opzion **Return receipt** (in italiano **Ricevuta di ritorno**). Questa opzione aggiunge due header al messaggio in uscita: 
 + 
 +<file> 
 +Return-Receipt-To 
 +Disposition-Notification-To 
 +</file> 
 + 
 +Aprendo il messaggio con lo stesso Roundcube, viene chiesto se inviare la ricevuta: 
 + 
 +//Il mittente ha richiesto di ricevere una notifica dell'avvenuta lettura del messaggio. Intendi inviare tale notifica?// 
 + 
 +Rispondendo in modo affermativo, potrebbe accadere di ricevere il seguente errore: 
 + 
 +//Errore SMTP (554): Fallito l'inserimento del destinatario "username@domain.com" (5.7.1 <>: Sender address rejected: Access denied)// 
 + 
 +Secondo l'**[[https://www.ietf.org/rfc/rfc2298.txt|RFC2298]]** in un messaggio MDN il campo From dell'envelope (quello trasmesso da **''MAIL FROM:''** del protocollo SMTP) deve essere vuoto e Roundcube si comporta di conseguenza. Queste le raccomandazioni dell'RFC: 
 + 
 +//The From field of the message header of the MDN MUST contain the address of the person for whom the message disposition notification is being issued. 
 +The envelope sender address (i.e., SMTP MAIL FROM) of the MDN MUST be null (<>), specifying that no Delivery Status Notification messages or other messages indicating successful or unsuccessful delivery are to be sent in response to an MDN.// 
 + 
 +Purtroppo in alcuni casi il server SMTP potrebbe rifiutare un messaggio composto in quel modo. Ad esempio il server Postfix potrebbe loggare quanto segue: 
 + 
 +<file> 
 +postfix/smtpd[24890]: connect from localhost.localdomain[127.0.0.1] 
 +postfix/smtpd[24890]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 
 +    554 5.7.1 <>: Sender address rejected: 
 +    Access denied; from=<> to=<username@domain.com> proto=ESMTP helo=<mail.domain.com> 
 +</file> 
 + 
 +Con **Roundcube 1.2.3** è possibile aggiungere un parametro a **/etc/roundcube/config.inc.php** che contravviene all'RFC, ma risolve il problema: 
 + 
 +<code php> 
 +// According to RFC2298, return receipt envelope sender address must be empty. 
 +// but our SMTP server does not accept a "from=<>"
 +$config['mdn_use_from'] = true; 
 +</code> 
 + 
 +Per versioni più vecchie di Roundcube l'unica alternativa è modificare il codice sorgente. La parte che rimuove il FROM è contenuto nel file **''rcube_smtp.php''** alle riga 223: 
 + 
 +<code php> 
 +    // RFC2298.3: remove envelope sender address 
 +    if (preg_match('/Content-Type: multipart\/report/', $text_headers) 
 +      && preg_match('/report-type=disposition-notification/', $text_headers) 
 +    ) { 
 +      $from = ''; 
 +    } 
 +</code>
  
-<php>echo '<a rel="me" href="https://profiles.google.com/100662196154811835450">Profilo Google+</a>' . "\n";</php> 
doc/appunti/linux/sa/roundcube.1382718134.txt.gz · Last modified: 2013/10/25 18:22 by niccolo