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 [2018/10/04 10:39] – [Virtual users ed alias] 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 152: Line 159:
 $rcmail_config['smtp_pass'] = '%p'; $rcmail_config['smtp_pass'] = '%p';
 </file> </file>
-===== Virtual users ed alias =====+===== Virtual users ed email alias =====
  
-**ATTENZIONE**: Con la **versione 1.2.3** di Roundcube non esiste più il campo **alias** nella tabella **users** (esisteva nella versione 0.7.2)FIXME Come fare login indifferentemente con username e 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.
  
-È 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).+Al primo **login nella webmail** viene creata automaticamente una riga nella tabella **users**: nel campo **username** viene memorizzato il nome usato per il loginche è 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.).
  
-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 databaseinserendo l'opportuno **''username''** (login Unix) e **''alias''** (indirizzo email).+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.
  
-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.+Si installa il pacchetto **roundcube-plugins** e si attiva il plugin modificando **/etc/roundcube/config.inc.php**:
  
-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.+<code php> 
 +$config['plugins'] = array( 
 +    'virtuser_file' 
 +); 
 +// Virtual users mapping file: email_address >= username 
 +$config['virtuser_file'] = '/etc/postfix/virtual_alias_maps'
 +</code>
  
-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).+Ovviamente il file **/etc/postfix/virtual_alias_maps** deve contenere la mappa da indirizzo email a username Unixdel 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 283: 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 304: Line 354:
 ===== Problema con la Disposition Notification ===== ===== 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'**[[https://www.ietf.org/rfc/rfc2298.txt|RFC2298]]** il campo From dell'envelope (quello trasmesso da **''MAIL FROM:''** del protocollo SMTPdeve essere vuoto, ma in alcuni casi il server SMTP potrebbe rifiutare un messaggio fatto in quel modo.+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:
  
-Gli errori si vedono in ''/var/log/roundcube/errors'':+<file> 
 +Return-Receipt-To 
 +Disposition-Notification-To 
 +</file>
  
-<code> +Aprendo il messaggio con lo stesso Roundcube, viene chiesto se inviare la ricevuta:
-SMTP ErrorSMTP 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=) +
-</code>+
  
 +//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>
  
-Il codice che rimuove il FROM è contenuto nel file **''rcube_smtp.php''** alle riga 223:+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> <code php>
doc/appunti/linux/sa/roundcube.1538642382.txt.gz · Last modified: 2018/10/04 10:39 by niccolo