Differences between revisions 10 and 11
Revision 10 as of 2016-03-17 12:40:23
Size: 10078
Editor: Kurgan
Comment:
Revision 11 as of 2017-03-08 19:27:23
Size: 10218
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 40: Line 40:

##
## Disabilita IPV6 (volendo)
##
# listen=*
Line 76: Line 81:
#ssl_cert = </etc/letsencrypt/hostname.cert
#ssl_key = </etc/letsencrypt/hostname.key

Configurazione di Dovecot con Sieve

Lo scopo di sieve (e Managesieve) e` quello di consentire al client di posta (o webmail) di gestire dei filtri (scritti con il linguaggio Sieve, o anche compilati dal client il quale propone all'utente una interfaccia semplificata per la generazione dei filtri) che poi vengono salvati sul server, e applicati direttamente dal server alle mail in arrivo per l'utente. In questo modo i filtri, cosi` come le mail dentro le caselle IMAP, si "conservano" fra un client di posta e l'altro, e soprattutto vengono applicati alla mail in ingresso direttamente dal server e non dal client.

Questa configurazione e` basata su Debian Wheezy (7.x) ma puo` essere piu` o meno adattata anche ad altre distribuzioni. La parte di interfaccia con l' MTA e` fatta per Exim 4.x, e specificamente per la configurazione che trovate qui: ../Exim4-Dovecot.

Installazione in Debian 6

In Debian Squeeze occorre usare i backport per Dovecot 2.x, dalla prossima release non sara` piu` necessario. Per installare Dovecot dal backports, occorre:

  • Configurare i backports in /etc/apt/sources.list

    deb http://backports.debian.org/debian-backports squeeze-backports main
  • Eseguire aptitude update

  • Eseguire aptitude -t squeeze-backports install dovecot-imapd dovecot-pop3d dovecot-managesieved dovecot-sieve

Installazione in Debian 7 e 8

  • Eseguire
    aptitude install dovecot-imapd dovecot-pop3d dovecot-managesieved dovecot-sieve

Configurazione di Dovecot con Sieve

La configurazione di Dovecot e` radicalmente cambiata dalla versione 1.x alla 2.x. Questa configurazione e` praticamente equivalente a quella indicata nella pagina ../Exim4-Dovecot, solo che in questa e` inclusa la configurazione di Sieve, Managesieve, e dell' LDA (local delivery agent) che verra` richiamato da Exim per fare il delivery (con esecuzione dei filtri Sieve) per gli utenti virtuali del mail server. I files dei filtri Sieve si trovano nella stessa directory dove si trova la maildir "principale" dell'utente, in questa configurazione dentro /var/vmail/<dominio>/<utente>/. L'accesso alla gestione dei filtri Sieve avviene tramite il protocollo Managesieve, sulla porta standard 4190/TCP, la quale andra` aperta sul firewall se occorre l'accesso dall'esterno. E` ovviamente prevista l'autenticazione, che e` la stessa (username e password) che si usa per accedere alla propria casella IMAP.

Questo e` il file /etc/dovecot/dovecot.conf, che non utilizza alcuna altra configurazione (ne` i files dentro conf.d ne` la configurazione del database, in questo caso)

  • ##
    ## usa questi protocolli (le versioni "s" sono comprese, quindi
    ## imap include imaps e pop3 include pop3s)
    ##
    protocols = imap pop3 sieve
    
    ##
    ## Disabilita IPV6 (volendo)
    ##
    # listen=*
    
    ##
    ## autenticatori che accetto (tolgo ntlm, nel caso lo rimettero`)
    ##
       # auth_mechanisms = plain login digest-md5 cram-md5 apop ntlm
    auth_mechanisms = plain login digest-md5 cram-md5 apop
    
    ##
    ## Patch per disabilitare SSLv3 e inferiori.
    ## Visto il bug disastroso di SSLv3 (15/10/14)
    ##
    ssl_protocols = !SSLv2 !SSLv3
    
    
    ##
    ## Consenti l'autenticazione plaintext sempre, anche senza SSL.
    ## Non e` sicuro ma lo uso in locale con la webmail
    ##
    disable_plaintext_auth = no
    
    
    ##
    ## Consenti di usare l' UID 8 per accedere alla mail
    ## (visto che tutta la mia mail dei virtual domanins e` di questo utente)
    ##
    first_valid_uid = 8
    last_valid_uid  = 8
    first_valid_gid = 8
    last_valid_gid  = 8
    
    
    ##
    ## Carica il certificato e la chiave privata per SSL da qui:
    ##
    ssl_cert = </etc/dovecot/dovecot.pem
    ssl_key = </etc/dovecot/private/dovecot.pem
    #ssl_cert = </etc/letsencrypt/hostname.cert
    #ssl_key = </etc/letsencrypt/hostname.key
    
    
    ##
    ## Mostra in "ps" chi e` l'utente che usa il processo
    ##
    verbose_proctitle = yes
    
    
    ##
    ## Scrive nel log le date come le voglio io
    ##
    log_timestamp = "%Y-%m-%d %H:%M:%S "
    
    
    ##
    ## Per loggare tutte le azioni degli utenti imap e pop serve questo plugin
    ##
    mail_plugins = $mail_plugins mail_log notify
    plugin {
      # Events to log. Also available: flag_change save mailbox_create
      mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename save mailbox_create
    
      # Also available: flags vsize from subject
      mail_log_fields = uid box msgid size from subject
    }
    
    
    
    ##
    ## Per debuggare. TOGLILI QUANDO FUNZIONA!
    ##
    # auth_debug_passwords = yes
    # mail_debug = yes
    # verbose_ssl = yes
    
    ##
    ## Questa credo che serva solo per i lock delle mailbox e non delle maildir, ma male non fa.
    ##
    mail_privileged_group = mail
    
    
    ##
    ## Sieve e Managesieve
    ##
    # NOTA: il default di managesieve e sieve e` creare una directory "sieve" nella home dell'utente.
    # questa viene creata correttamente perche` la home e` definita nello userdb e finisce in
    # /var/vmail/<dominio>/<utente>/sieve.
    # il file del filtro attivo e` di default ".dovecot.sieve" ma lo rinomino in "dovecot-sieve"
    # senza il "." all'inizio altrimenti viene confuso con una cartella imap che ovviamente non esiste.
    plugin {
      sieve = ~/dovecot.sieve
    }
    
    
    ##
    ## LDA (per usare i filtri sieve, uso l' LDA di Dovecot richiamato da Exim)
    ##
    lda_original_recipient_header = X-Original-To
    lda_mailbox_autocreate = yes
    lda_mailbox_autosubscribe = yes
    protocol lda {
      mail_plugins = $mail_plugins sieve
    }
    
    ##
    ## Configurazioni generali del sistema di autenticazione
    ##
    service auth {
      user = Debian-exim
      # questo socket e` quello su cui si autentica Exim per l' SMTP autenticato
      unix_listener auth-client {
        mode = 0666
      }
    }
    
    
    ##
    ## Configurazione dell'autenticazione degli utenti su file di testo
    ## diviso in due parti:
    ## - passdb definisce da che database (files di testo in questo caso) leggo username
    ##   e password e in che formato li leggo
    ## - userdb definisce dove si trova la mail e come la si accede a seconda
    ##   di che utente sei (in questa config e` uguale per tutti, tranne che per
    ##   il percorso dei files della maildir, infatti uso un driver "static")
    ##
    passdb {
      args = username_format=%n scheme=plain /etc/vmail/users/%d
      driver = passwd-file
    }
    
    userdb {
      args = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n
      driver = static
    }
    
    
    ##
    ## configurazioni del protocollo imap
    ##
    protocol imap {
      imap_client_workarounds =
      mail_max_userip_connections = 30
    }
    
    
    ##
    ## configurazioni del protocollo pop
    ##
    protocol pop3 {
      pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s
      pop3_uidl_format = %08Xu%08Xv
    }

Configurazione di Exim

La configurazione generale di Exim e` al di fuori dello scopo di questa documentazione, qui faccio riferimento sempre alla configurazione in ../Exim4-Dovecot e la modifico in modo che utilizzi l' LDA di Dovecot per il delivery locale della mail. Nessuna delle funzioni originali descritte in ../Exim4-Dovecot viene meno, semplicemente si aggiunge, come ultimo anello della catena di elaborazione delle email il passaggio per il filtro Sieve di Dovecot. L'unica modifica da effettuare rispetto alla configurazione originale e` modificare il trasporto denominato virtual_user_delivery, che diventa questo:

  • virtual_user_delivery:
      driver = pipe
      command = /usr/lib/dovecot/dovecot-lda -d $local_part@$domain  -f $sender_address -a $original_local_part@$original_domain
      message_prefix =
      message_suffix =
      delivery_date_add
      envelope_to_add
      return_path_add
      log_output
      user = mail
      temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

Questo trasporto richiama l'eseguibile dovecot-lda (attenzione al percorso del file, che non e` detto che sia esattamente questo se non usate Debian) passandogli parametri ricavati da variabili interne di Exim, facendo fare a lui l'operazione di scrivere nella maildir dell'utente, eventualmente applicando il filtro Sieve se e` presente.

Client Managesieve per Thunderbird

Al momento per Thunderbird esiste solo un plugin per gestire i filtri Sieve, si chiama "sieve" ed e` alla versione 0.2.0 (agosto 2012). Funziona, ma non e` per nulla completo o particolarmente user friendly. Se si vuole usarlo a fianco al client di Roundcube, consiglio di usare prevalentemente il client di Roundcube, e di uniformarsi alla sua sintassi e alla sua logica di funzionamento. Il vantaggio del client di Thunderbird e` che consente di editare a mano (come testo puro) il file dei filtri, mentre quello di default di Roundcube non lo permette. La configurazione del client e` molto semplice: username e password sono quelle dell' IMAP e Thunderbird se le gestisce da solo, non occorre nemmeno reinserirle. Per ogni account IMAP presente e` possibile abilitare o meno la funzione Managesieve (perche` non e` detto che tutti gli account siano su un server che lo supporta).

Client Managesieve per Roundcube

In Roundcube 0.8 (la versione attuale ad Agosto 2012) e` presente un plugin che si chiama "managesieve", che va abilitato e configurato. Per abilitarlo, occorre modificare il file config/main.inc.php inserendolo nella lista dei plugin attivi, ad esempio cosi`:

  • $rcmail_config['plugins'] = array('managesieve');

Per configurarlo, occorre creare il file plugins/managesieve/config.inc.php (c'e` un esempio con il nome config.inc.php.dist) nel quale occorre fare una sola modifica alla configurazione rispetto al default, ovvero cambiare la porta usata per il protocollo, da 2000 a 4190.

  • // managesieve server port
    $rcmail_config['managesieve_port'] = 4190;

Bug noti

  • 7/10/2012 - La versione attuale di Dovecot in squeeze-backports (1:2.1.7-2~bpo60+1) va in segfault quando si tenta di usare il comando per validare gli script. Questo per esempio la fa piantare sistematicamente quando si apre il plugin sieve di Thunderbird, a meno che non si disabiliti nel medesimo il sistema di "validate as you type". Il bug e` noto e dovrebbe anche essere risolto, ma in Debian Backports ancora non c'e` l'aggiornamento.

LinuxDebian/Dovecot-Sieve (last edited 2022-01-10 16:39:09 by Kurgan)