====== 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 12 ma puo` essere piu` o meno adattata anche ad altre distribuzioni. La parte di interfaccia con l' MTA e` fatta per Exim 4.94 e superiore, e specificamente per la configurazione che trovate qui: [[Exim4-Dovecot]].
**Attenzione:** molte cose sono cambiate fra debian 10 e debian 11, e anche fra 11 e 12, per quanto riguarda Exim. Per questo motivo se vi serve una configurazione più vecchia, andate a vedere la storia di questa pagina.
===== Installazione =====
Per installare i pacchetti che servono, eseguire
apt install dovecot-imapd dovecot-pop3d dovecot-managesieved dovecot-sieve
===== Configurazione di Dovecot con Sieve =====
Questa configurazione e` praticamente equivalente a quella indicata nella pagina [[Exim4-Dovecot]] che descrive un sistema completo di gestione della mail. Di fatto questi sono estratti da quella config con qualche spiegazione su come funzionano.
I files dei filtri Sieve si trovano nella stessa directory dove si trova la maildir "principale" dell'utente, in questa configurazione dentro ''/var/vmail///''. 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''
##
## usa questi protocolli (le versioni "s" sono comprese, quindi
## imap include imaps e pop3 include pop3s)
##
protocols = imap pop3 sieve
##
## Configurazione da applicare se necessario, nel caso in cui il carico sia tale da causare superamenti dei limiti
##
# aumento il numero massimo di processi, per facilitare il login di molta gente assieme.
# aumento anche la RAM massima usata da un processo, per evitare che certe ricerche vadano in OOM.
# dovrebbe essere fatto in modo piu` chirurgico, leggendo il manuale e non alla vecchia come faccio io
# in quanto in Dovecot ogni tipo di processo puo` avere limiti diversi.
# Il default è 100 processi ovvero 100 connessioni contemporanee, che spesso sono poche.
# http://wiki2.dovecot.org[[/LoginProcess]]
#default_process_limit=512
#default_client_limit=2048
#default_vsz_limit = 1 G
##
## Disabilita IPV6 (volendo)
##
# listen=*
##
## autenticatori che accetto
##
auth_mechanisms = plain login digest-md5 cram-md5 apop
##
## 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 = dh.pem"
##
ssl_dh=//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 = Envelope-to # questo va assieme alla opzione "envelope_to_add" nel trasporto in exim
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]] che comprende il supporto per Sieve e usa dovecot-lda.
Se vi state facendo la vostra configurazione, fate riferimento a questo esempio per il vostro delivery locale.
**Attenzione: a seconda della versione di Exim, se pre o post introduzione del concetto di taint per le variabili, le cose cambiano parecchio. Questa config è valida per 4.94 e successivi, quindi post-taint**
# Delivery locale agli utenti virtuali con Dovecot LDA e supporto SIEVE
# La configurazione "return_fail_output" e il "-e" nella command line di dovecot mandano l'errore di dovevot come delivery failure al mittente
# in caso in cui ci siano errori permanenti che tornano dal processo dovecot-lda (tipicamente il 77 che infatti non e` un temp_error)
virtual_user_dovecot_delivery:
driver = pipe
command = /usr/lib/dovecot/dovecot-lda -e -d $local_part_data@$domain_data
message_prefix =
message_suffix =
delivery_date_add
# questa riga aggiunge un header "Envelope-to:" che poi Dovecot legge (e` specificato nella config di dovecot)
# e serve perche` non posso piu usare "-a $original_local_part@$original_domain" in command line
envelope_to_add
return_path_add
log_output
user = mail
return_fail_output
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.