Dovecot E-Mail Postfächer Speicherlimit mit MySQL
Wenn auf einem Mailserver mehrere E-Mail Konten liegen, macht es Sinn, die einzelnen Postfächer in ihrer Größe zu beschränken und Limits festzulegen. Mit dem Dovecot Plugin Quota können solche Limits für alle Nutzer gleichermaßen oder für einzelne Nutzer individuell eingestellt werden.
Hier soll es darum gehen, für jeden Benutzer in der MySQL Datenbank ein eigenes Limit festzulegen.
Zunächst wird die UserDB Unterstützung aktiviert. Mit UserDB können benutzerspezifische Einstellungen aus der MySQL Datenbank geladen werden, die dann die Dovecot-eigenen Defaultwerte überschreiben. Dazu wird in die Datei /etc/dovecot/conf.d/10-auth.conf
zunächst dieser Block eingefügt.
root:~# vi /etc/dovecot/conf.d/10-auth.conf
....
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
So wird festgelegt, dass für die UserDB Abfragen die SQL Commandos in der Datei dovecot-sql.conf.ext genutzt werden sollen. Diese Datei enthält normalerweise schon die SQL Abfragen für die PassDB. Nun kommt die Abfrage für die UserDB hinzu.
root:~# vi /etc/dovecot/dovecot-sql.conf.ext
....
user_query = \
SELECT concat('*:storage=', quota) AS quota_rule \
FROM mailbox WHERE username='%u'
Dovecot muss in der Datei /etc/dovecot/conf.d/90-quota.conf
mitgeteilt werden, auf was sich das Limit beziehen soll. In unserem Fall auf jede einzelne Mailbox. Außerdem wird eine eigene Fehlermeldung definiert, die dem Nutzer angezeigt werden soll, wenn das Limit überschritten wurde.
root:~# vi /etc/dovecot/conf.d/90-quota.conf
....
plugin {
quota = maildir:User quota
quota_exceeded_message = Sorry, the mailbox of %u has exceeded the limit. Please consider deleting e-mails to free space.
}
Zum Schluss wird das Quota Plugin aktiviert. Kommentiert dazu in der Datei /etc/dovecot/conf.d/10-mail.conf die Zeile mail_plugins ein und fügt quota hinzu.
root:~# vi /etc/dovecot/conf.d/10-mail.conf
....
# Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files.
mail_plugins = $mail_plugins expire quota
In der Datei /etc/dovecot/conf.d/20-imap.conf
wird ganz unten ebenfalls mail_plugins einkommentiert und imap_quota hinzugefügt.
root:~# vi /etc/dovecot/conf.d/20-imap.conf
....
protocol imap {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins imap_quota
# Maximum number of IMAP connections allowed for a user from each IP address.
# NOTE: The username is compared case-sensitively.
#mail_max_userip_connections = 10
}
Startet euren Dovecot Mailserver neu.
root:~# service dovecot restart