4 069
contributi
Riga 1 200: | Riga 1 200: | ||
envelope-from=…@gmail.com; receiver=…@christoph-haas.de; | envelope-from=…@gmail.com; receiver=…@christoph-haas.de; | ||
</pre> | </pre> | ||
=== Quote === | |||
Il nostro mail server non ha spazio infinito, soprattutto se usiamo il protocollo IMAP e gli utenti apprezzano la comodità di avere le mail sempre a disposizione sul server. Perciò vorremo probabilmente limitare lo spazio che un utente può occupare. Dovecot può impostare la dimensione della mailbox di un utente e il numero di email della sue cartelle virtuali. | |||
==== Attivare il plugin quota di Dovecot ==== | |||
Ci sono tre punti nel file <code>/etc/dovecot/dovecot.conf</code> dove occorre specificare l'abilitazione del plugin: | |||
<pre> | |||
protocol imap { | |||
mail_plugins = quota imap_quota | |||
} | |||
protocol pop3 { | |||
mail_plugins = quota | |||
} | |||
protocol lda { | |||
mail_plugins = quota | |||
} | |||
</pre> | |||
==== Impostare una quota globale ==== | |||
Il caso più semplice è quello in cui si intende impostare una quota limite comune e uguale per tutti gli utenti, ad esempio 1GB di spazio con non più di 1000 email archiviabili. | |||
Nel file <code>/etc/dovecot/dovecot.conf</code> dovremo impostare: | |||
<pre> | |||
plugin { | |||
quota = maildir:storage=1000000:messages=1000 | |||
} | |||
</pre> | |||
ricordando che i valori per lo storage sono espressi in KB. | |||
==== Impostare una quota utente ==== | |||
Se intendiamo impostare per alcuni utenti delle quote diverse da quelle globali, allora dobbiamo impostare la quota all'interno della tabella dei virtual_users. Utilizziamo la seguente query per aggiungere due colonne alla nostra tabella virtual_users: | |||
<pre> | |||
mysql> | |||
ALTER TABLE `virtual_users` ADD `quota_kb` INT NOT NULL, | |||
ADD `quota_messages` INT NOT NULL ; | |||
</pre> | |||
Inoltre dovremo abilitare la direttiva <code>user sql</code> nel file <code>/etc/dovecot/dovecot.conf</code>, disabilitando la direttiva <code>user static</code> suggerita all'inizio del tutorial: | |||
<pre> | |||
#userdb static { | |||
# args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes | |||
# | |||
userdb sql { | |||
args = /etc/dovecot/dovecot-sql.conf | |||
} | |||
</pre> | |||
Infine dovremo aggiungere al file <code>/etc/dovecot/dovecot-sql.conf</code> la linea: | |||
<pre> | |||
user_query = SELECT CONCAT('/var/vmail/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1))) AS home, 5000 AS uid, 5000 AS gid, CONCAT('maildir:storage=',quota_kb,':messages=',quota_messages) AS quota FROM virtual_users WHERE email='%u'; | |||
</pre> | |||
==== Cosa succede se un utente supera la quota ==== | |||
La gestione delle quote in Dovecot non è molto user-friendly. Il mittente non riceve un avviso se è vicino a superare la quota limite; in compenso, quando l'ha superata, le sue mail torneranno indietro con oggetto "Automatically rejected mail" e corpo della mail "Your message to <john@example.com> was automatically rejected: Quota exceeded". |