= Dovecot e la gestione delle quote = Con Dovecot è relativamente semplice gestire le quote per le caselle di posta. È però necessario che sia Dovecot a gestire la casella mail, altrimenti i conteggi delle quote verranno errati. Questo vuole dire che dobbiamo usare dovecot come server imap/pop, e questo è ovvio, ma anche come LDA (local delivery agent) ovvero dobbiamo fare in modo che l' MTA "passi" a dovecot le mail che arrivano e devono essere salvate nelle mailbox degli utenti. Questa descrizione fa riferimento alla configurazione di Dovecot ed Exim che normalmente uso io, che fa uso di Dovecot anche come LDA. Nello specifico, prerequisito per fare funzionare questo sistema delle quote così come qui descritto è quello di avere messo in piedi un sistema come descritto in [[../Exim4-Dovecot]] e in [[../Dovecot-Sieve]]. Questo perché il sistema così configurato usa Dovecot anche come LDA. == Configurazione di Dovecot == Possiamo configurare Dovecot per avere delle quote "fisse", uguali per TUTTI gli utenti, oppure per avere un default e poi poter adattare la quota per ogni singolo utente nel file di configurazione degli utenti. La versione con le quote fisse richiede meno modifiche al resto del sistema. == Configurazione di Dovecot con le quote fisse == Questa è la configurazione di Dovecot per avere solo le quote fisse. Il file è {{{/etc/dovecot/dovecot.conf}}}. La configurazione della quota (fissa) è definita dalla voce {{{quota_rule}}} e dalle successive e facoltative {{{quota_rule}}}. {{{ ## ## 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 cram-md5 apop ## ## Patch per disabilitare SSLv3 e inferiori. # Non serve per Debian 10 / Devuan Beowulf (e comunque la sintassi e` cambiata) # 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 = 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 e le quote 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 serve per autenticare l'utente e niente altro passdb { args = username_format=%n scheme=plain /etc/vmail/users/%d driver = passwd-file } ## - 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") # USARE SOLO UNO DEI DUE USERDB, NON TUTTI E DUE! userdb { args = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n driver = static } ## - se voglio usare le quote personalizzate devo usare un driver non statico. ## Posso usare passwd-file ma questo mi costringe ad avere 7 campi nel file degli utenti. # USARE SOLO UNO DEI DUE USERDB, NON TUTTI E DUE! #userdb { # driver = passwd-file # args = username_format=%n /etc/vmail/users/%d # default_fields = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n #} ## ## configurazioni del protocollo imap ## protocol imap { imap_client_workarounds = mail_max_userip_connections = 30 mail_plugins = $mail_plugins imap_quota } ## ## 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 Dovecot con le quote per utente == Questa è la configurazione di Dovecot per avere le quote per utente. Il file è {{{/etc/dovecot/dovecot.conf}}}. La configurazione della quota di default è definita dalla voce {{{quota_rule}}} e dalle successive e facoltative {{{quota_rule}}}. Se mettiamo "0" come valore, la quota di default è infinita. ''' Per fare funzionare questo sistema occorre fare modifiche a Exim e ai files utente - vedi oltre''' {{{ ## ## 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 cram-md5 apop ## ## Patch per disabilitare SSLv3 e inferiori. # Non serve per Debian 10 / Devuan Beowulf (e comunque la sintassi e` cambiata) # 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 = 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 e le quote 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 serve per autenticare l'utente e niente altro passdb { args = username_format=%n scheme=plain /etc/vmail/users/%d driver = passwd-file } ## - 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") # USARE SOLO UNO DEI DUE USERDB, NON TUTTI E DUE! #userdb { # args = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n # driver = static #} ## - se voglio usare le quote personalizzate devo usare un driver non statico. ## Posso usare passwd-file ma questo mi costringe ad avere 7 campi nel file degli utenti. # USARE SOLO UNO DEI DUE USERDB, NON TUTTI E DUE! userdb { driver = passwd-file args = username_format=%n /etc/vmail/users/%d default_fields = uid=mail gid=mail home=/var/vmail/%d/%n mail=maildir:/var/vmail/%d/%n } ## ## configurazioni del protocollo imap ## protocol imap { imap_client_workarounds = mail_max_userip_connections = 30 mail_plugins = $mail_plugins imap_quota } ## ## 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 } } }}} === Modifiche necessarie per le quote personalizzate su Exim e file utenti === La configurazione delle quote personalizzate per utente si fa nel file degli utenti dentro a {{{/var/vmail/users/}}} (vedi la documentazione su Exim linkata in cima alla pagina). Per fare funzionare questa configurazione occorre però modificare alcune cose: * Modificare {{{exim.conf}}} (sempre facendo riferimento alla mia configurazione di Exim) impostando la variabile {{{USERFILE_FIELDS=7}}} * Modificare il file degli utenti in modo da avere 6 volte il carattere ":" dopo la password e prima dei valori personalizzati, in questo modo: {{{ utente:password:::::: }}} * Alcuni esempi validi: {{{ utente1:password utente2:password:::::: utente3:password::::::virus=off spam_smtp_deny=50 spam_blackhole=50 spam_subject=20 utente4:password::::::userdb_quota_rule=*:storage=1M utente5:password::::::virus=off userdb_quota_rule=*:storage=100M utente5:password::::::virus=off userdb_quota_rule=*:storage=1G userdb_quota_rule2=Junk:storage=+10M }}} * Notare che i valori relativi alla quota devono per forza essere messi per ultimi, in quanto contengono necessariamente dei caratteri ":" e questi rendono non più comprensibile il contenuto del file a Exim. Quindi vanno messe prima tutte le impostazioni personalizzate che deve leggere Exim (se ce ne sono) e poi quelle della quota (se ce ne sono). === Variante con due files diversi === Volendo è possibile separare i files di autenticazione di exim da quelli della definizione delle quote, impostando in Dovecot un altro filename per il file delle quote nella configurazione dello userdb. In questo caso Exim e il suo files utenti restano non modificati, e si creernno altri files che contengono solo la definizione delle quote per Dovecot, che avranno un formato del tipo {{{ utente:::::::userdb_quota_rule=*:storage=100M }}} Ovvero 7 ":" e nessuna password definita, che comunque verrebbe ignorata. === Varianti fatte meglio === Le cose sarebbero molto più semplici se non mi ostinassi a usare files di testo, ma usassi un database anche banale. Oppure potrei usare uno userdb con driver "lua" (vedi la documentazione di dovecot) che mi fornisce un linguaggio di programmazione con il quale posso scrivermi la funzione che legge il file di testo come voglio io, evitandomi di dover usare questo formato con 6 o 7 ":".