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 [2014/11/12 12:57] – [Il file .forward] 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 150: Line 159:
 $rcmail_config['smtp_pass'] = '%p'; $rcmail_config['smtp_pass'] = '%p';
 </file> </file>
-===== Virtual users ed alias =====+===== Virtual users ed email alias =====
  
-È possibile fare login con l'indirizzo email invece dello username Unixin 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).+**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.
  
-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).+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.).
  
-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 problemitra 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.+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.
  
-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.+Si installa il pacchetto **roundcube-plugins** e si attiva il plugin modificando **/etc/roundcube/config.inc.php**:
  
-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).+<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 ===== ===== Plugins =====
  
Line 279: 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 =====
Line 298: Line 352:
 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.1415793450.txt.gz · Last modified: 2014/11/12 12:57 by niccolo