Differences between revisions 22 and 23
Revision 22 as of 2021-03-01 10:31:40
Size: 10599
Editor: Kurgan
Comment:
Revision 23 as of 2022-01-10 16:39:09
Size: 10396
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 100: Line 100:
# Disabilito il limite di logging perché questo plugin
# potenzialmente logga parecchia roba, specie se per dire un utente fa qualche
# operazione in massa sulla mail
mail_log_max_lines_per_sec = 0

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 (7, 8, 9, e 10) e Devuan (Ascii e Beowulf) 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.

Attenzione: in Devuan Beowulf / Debian 10 ci sono alcune piccole modifiche al file di config di Dovecot. Sono commentate nel file stesso.

Installazione

  • Eseguire
    apt 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)
    ##
    ## (OBSOLETO SU DEVUAN BEOWULF / DEBIAN 10, COMMENTATO)
    ##
    # ssl_protocols = !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
    
    ##
    ## Il file con i parametri DH (necessario da Devuan Beowulf / Debian 10 in poi)
    ## per generarlo, usa "openssl dhparam 4096 > dh.pem"
    ##
    ssl_dh=</etc/dovecot/dh.pem
    
    
    ##
    ## 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 flag_change
      # Also available: flags vsize from subject
      mail_log_fields = uid box msgid size from subject flags
    }
    
    
    
    ##
    ## 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 dell'utente di default per i socket 
    ## del servizio stats. Questa modifica si rende necessaria
    ## se si usa dovecot-lda con un utente che non sia "dovecot"
    ## (per esempio "mail") altrimenti dovecot-lda non riesce a 
    ## scrivere le stats e riporta warning ad ogni mail consegnata
    ## 
    ## Questa modifica è necessaria da Debian 10 / Devuan Beowulf in poi.
    ## (versione di Dovecot 2.3.4.1)
    ##
    
    service stats {
        unix_listener stats-reader {
            user = mail
            group = mail
            mode = 0660
        }
    
        unix_listener stats-writer {
            user = mail
            group = mail
            mode = 0660
        }
    }

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` utilizzare il delivery qui sotto descritto. Per farlo e` sufficiente modificare la variabile VIRTUAL_DELIVERY. Se vi state facendo la vostra configurazione, fate riferimento a questo esempio per il vostro delivery locale.

  • virtual_user_dovecot_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 esiste un plugin che gestisce Sieve, va attivato durante l'installazione e poi funziona "out of the box". (esiste dalla versione 0.8 in poi)

Bug noti

  • 7/10/2012 - La versione 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)