Home giubbe.org


×

Attenzione!

Le parole scritte in rosso devono essere sostituite dai vostri parametri.

×

Beta!

Sto lavorando al sito e commetterò tanti errori: potete segnalarmeli all'indirizzo indicato in fondo pagina. Segnalatemi anche eventuali vostre richieste. Grazie. !!!



Quote



Per chi volesse conferire ad ogni utente una determinata quantità di spazio, possiamo implementare le quote, abbinate ad ogni spazio/utente.


Con MariaDB, inseriremo una colonna in più nella tabella mailbox del database serverdiposta e la nomineremo quota.
Sarà di tipo bigint ("big integer"), cioè numeri interi anche molto grandi.
Il campo non potrà non essere inserito e avrà un valore di default 0, cioè nessun limite.

Entriamo con MariaDB nella gestione:
sudo mariadb
entriamo in serverdiposta
use serverdiposta;
ed aggiungiamo la colonna quota, con valore di default = 0 :
alter table mailbox
add quota bigint(11) not null default 0;
multi


Controlliamo la riuscita della creazione della nuova colonna:
select * from mailbox;

multi


Adesso, diamo delle quote ai nostri 4 utenti.

Agli utenti di sitoprovaprimo.it daremmo 200MB di spazio.
Quota vuole una cifra espressa in bytes: 200 x 1024 x 1024 = 209715200 .

Mentre agli utenti di sitoprovasecondo.it daremo una quota di 100MB, cioè 104857600 bytes.

Così le prove saranno più brevi.
update mailbox set quota = 104857600 where username = 'carlino@sitoprovasecondo.it';
update mailbox set quota = 104857600 where username = 'franco@sitoprovasecondo.it';
update mailbox set quota = 209715200 where username = 'gennarino@sitoprovaprimo.it';
update mailbox set quota = 209715200 where username = 'giubbe@sitoprovaprimo.it';

multi


Controlliamo che tutto sia andato a buon fine:
select * from mailbox;

multi

Vi potete sbizzarire a variare le quote di spazio a vostro piacimento.


Passiamo alla modifica del file di configurazione di Dovecot : dovecot.conf
sudo nano /etc/dovecot/dovecot.conf
Cerchiamo la sezione dict .

multi


E togliamo il commento a quota = mysql: ...

multi

Ctrl+X, Y, Invio, così salviamo le modifiche.

Andiamo subito a modificare il file nominato in dict :
sudo nano /etc/dovecot/dovecot-dict-sql.conf.ext

multi


Togliamo il commento a connect e riempiamo i valori con i nostri dati, quelli relativi al database serverdiposta :

multi

Il file esprime 2 mappe, da cui prendere i componenti necessari al calcolo delle quote usate (storage) ed alla quantità di messaggi presenti in cartella (messages).
Riscontreremo il risultato di questi valori in seguito, quando useremo doveadm quota, con le sue opzioni.


Spostiamoci nel file 10-mail.conf e cerchiamo la riga commentata #mail_plugins =

multi


Eliminiamo il commento, ed aggiungiamo quota dopo il segno =, per abilitare l'uso del plugin quota:

multi

Salviamo la modifica effettuata.


È la volta del file 20-lmtp.conf :
sudo nano /etc/dovecot/conf.d/20-lmtp.conf
Cerchiamo la sezione protocol lmtp

multi

Eliminiamo il commento alla riga mail_plugins ed aggiungiamo alla fine della frase : quota

multi

Salviamo ed usciamo dal file.


Stessa procedura per il file 20-imap.conf
sudo nano /etc/dovecot/conf.d/20-imap.conf
Rechiamoci in protocol imap

multi


Anche qui eliminiamo il commento alla riga mail_plugins e, stavolta, aggiungiamo alla fine della frase : imap_quota

multi

Salviamo ed usciamo dal file.


Adesso tocca al file padre della configurazione delle quote, tanto che ne prende anche il nome: 90-quota.conf :
sudo nano /etc/dovecot/conf.d/90-quota.conf
Andiamo a plugin nella sezione Quota limits

multi


Decommentiamo :

quota_rule : indica la dimensione dello spazio delle caselle, se non è assegnata una quota individuale nel database;

quota_rule2 : indica una quota aggiuntiva per il cestino e soltanto per lui;

quota_grace : permette di eccedere temporaneamente alla quota assegnata per ricevere una mail, inviata questa con la quota massima non ancora raggiunta, ma quota massima superata con questa mail .
(2 volte % non è un errore: serve alla formattazione del simbolo %);

quota_max_mail_size : indica la massima dimensione di ogni mail.
È l'equivalente in Dovecot di message_size_limit in main.cf di Postfix.
La impostiamo a 35 MB, come in Postfix;

Sotto, aggiungiamo un rigo:quota_status_overquota :
   quota_status_overquota = "552 5.2.2 La casella del destinatario e' piena. Non puo' ricevere altri messaggi"
Indica a Postfix cosa fare se viene superata la quota impostata.
Manda al mittente un messaggio di errore permanente 552, rigettando l'acquisizione della mail in entrata ed allega, al messaggio di ritorno al mittente, l'avviso enunciato.

multi


Subito sotto, inseriamo un servizio che si occupa, appunto, di quota-status.
Diciamo a Postfix di ascoltare i messaggi, riguardanti le quote, inviati da Dovecot, su un nuovo "gate" di comunicazione: private/quota-status
service quota-status {
    executable = /usr/lib/dovecot/quota-status -p postfix
    unix_listener /var/spool/postfix/private/quota-status {
      user = postfix
    }
}

multi


Scendiamo per modificare la voce plugin nella sezione Quota warnings.

multi


Togliamo il commento (#) alle 2 righe che iniziano con quota_warning:

multi

Abbiamo abilitato gli avvisi relativi alla percentuale di quota di spazio raggiunto.


Per avvisare l'utente che lo spazio della sua casella postale si sta esaurendo e che al raggiungimento della quota massima le mail a lui indirizzate saranno rifiutate da Postfix, abilitiamo un servizio di Dovecot, dove indichiamo che l'utente vmail eseguirà uno script al raggiungimento delle quote di avviso.

multi


Decommentiamo il servizio quota-warning :

Togliamo il commento anche alla riga sotto: executable = script ... ;

Eliminiamo il commento anche alla riga user = dovecot

Togliamo # alla riga seguente: unix_listener ;

Decommentiamo user = vmail

Non ci rimane altro che decommentare le due righe con le parentesi graffe chiuse.

multi



Nella sezione Quota backends, subito sotto, scegliamo un backend per il nostro plugin quota, Maildir, togliendone il commento sulla riga apposita:

multi

Come sempre Ctrl+X, Y, Invio per salvare ed uscire da 90-quota.


Prima, in service quota-status abbiamo aperto una porta di comunicazione delle quote tra Dovecot e Postfix.

Dobbiamo dire a Postfix di regolamentare le restrizioni da queste informazioni sulle quote, per rigettare le mail overquota.

Apriamo main.cf:
sudo nano /etc/postfix/main.cf
ed inseriamo , alla fine dei valori di smtpd_recipient_restrictions:
   check_policy_service unix:private/quota-status

multi

Salviamo con Ctrl+X, Y, Invio


Nel servizio quota-warning di 90-quota.conf, abbiamo fatto il riferimento ad uno script, /usr/local/bin/quota-warning.sh, script eseguibile per avvertire l'utente del raggiungimento di determinate quote spazio delle sue cartelle e del rischio di perdere la possibilità di ricevere altre email.

Entriamo nel file nominato sopra:
sudo nano /usr/local/bin/quota-warning.sh
multi

Ed inseriamo al suo interno:
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/sbin/sendmail $USER -O "plugin/quota=maildir:User quota:noenforcing"
From: postmaster@sitoprovaprimo.it
Subject: Avviso quota spazio rimanente

La tua casella postale è piena al $PERCENT% .

Attenzione !!! Nella quota, rientrano anche i messaggi in Posta Inviata, nelle Bozze, nello Spam e nel Cestino.

EOF

multi

Solita sequenza di tasti per salvare il file: Ctrl+X, Y, Invio

Rendiamo il file appena scritto eseguibile :
sudo chmod +x /usr/local/bin/quota-warning.sh
multi



Dobbiamo ancora modificare la query sql relativa agli utenti, in /etc/dovecot/dovecot-sql.conf.ext, per rilevare anche le quote di ogni singolo utente :

Riapriamo il file :
sudo nano /etc/dovecot/dovecot-sql.conf.ext
E modifichiamo la user_query :

user_query = SELECT CONCAT('/var/vmail/', maildir) AS home, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u'

multi

Salviamo la modifica.


E, finalmente, riavviamo Dovecot :
sudo systemctl restart dovecot
ed anche Postfix :
sudo systemctl restart postfix

e controlliamo lo stato di Dovecot :
sudo systemctl status dovecot

multi



Controlliamo se riusciamo ad estrarre le quote degli utenti dal database con Doveadm:
sudo doveadm quota get -A

multi

In questo caso, chiaramente registrato dopo l'invio di alcune mail, notiamo che carlino è in overquota ed ha 5 messaggi

Possiamo conoscere la quota di spazio occupata da ogni singolo utente, sempre usando Doveadm:
sudo doveadm quota get -u giubbe@sitoprovaprimo.it

multi



Il destinatario delle mail, cioè l'utente del singolo dominio inserito nel database (soltanto e se ha impostato postmaster come utente, oppure come alias), al raggiungimento delle quote impostate, riceverà una mail di questa fattura :

Al raggiungimento di quota 80%:

multi


Al raggiungimento di quota 95%:

multi


Al superamento di quota 100%, stavolta sarà il mittente, ha ricevere un messaggio da Postfix, come da noi impostato:

multi



Curiosità: in Thunderbird, accedendo alle proprietà della cartella dell'utente, possiamo vedere la quantità di spazio affidata all'utente ed anche la percentuale utilizzata.

multi

Anche quest'altra immagine.

multi

Strana questa percentuale? No, perchè il mittente ha mandato la mail quando ancora non era stato raggiunto il 100% dello spazio occupato.
E poichè la mail spedita non superava anche la quota_grace da noi impostata precedentemente, la mail è stata lo stesso consegnata.