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
Last revisionBoth sides next revision
doc:appunti:linux:sa:roundcube [2013/10/25 18:19] – [Supporto quota] niccolodoc:appunti:linux:sa:roundcube [2020/03/17 15:25] – [Problema con la Disposition Notification] niccolo
Line 82: Line 82:
 ===== 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 141:
 </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 elettronicaCiò comporta diversi problemitra cui l'impossibilità di utilizzare il plugin vacation con il driver setuidInfatti 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 ===== 
 + 
 +**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 stessoHa senso mantenere il link anche in queste?
  
-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.+  * **''/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 293:
 </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 308:
 <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''**: 
 + 
 +<code php> 
 +$rcmail_config['plugins'] = array('vacation', 'filters'); 
 +</code> 
 + 
 +Nella schermata delle //Impostazioni// compare il tab //Filtri//.
  
 ===== Supporto quota ===== ===== Supporto quota =====
Line 264: Line 345:
 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.txt · Last modified: 2022/01/28 09:36 by niccolo