Inhaltsverzeichnis
Dovecot ArchLinux - Quotas
HINWEIS - Die Nachfolgende Konfiguration von Dovecot setzt eine lauffähige Installation von Dovecot voraus, wie unter nachfolgendem internen Link beschrieben: |
---|
Dovecot ist ein Quelloffener IMAP-und POP3-E-Mail-Server für Linux bzw. UNIX-ähnlichen Systeme, entwickelt mit dem Hauptaugenmerk auf Sicherheit. Dovecot ist eine ausgezeichnete Wahl für kleine und grosse Installationen. Dovecot ist schnell und einfach zu installieren, erfordert keine besonderen Voraussetzungen und ist Ressourcenschonend.
Dovecot wird von Timo Sirainen entwickelt und soll hier in der Version CE zum Einsatz kommen.
Beschreibung | Externer Link |
---|---|
Homepage | Dovecot |
Dokumentation | https://doc.dovecot.org/2.3/ |
Quota Plugin | https://doc.dovecot.org/2.3/configuration_manual/quota_plugin/ |
Quota Config | https://doc.dovecot.org/2.3/configuration_manual/quota/ |
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von Dovecot ab Version 2.3
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Dovecot als Mindestvoraussetzung zwingend durchgeführt wurden:
Vorbereitung
Quotas regeln den maximal zur Verfügung stehenden Speicherplatz im Dateisystem für
- eine ganze Domäne
- oder pro einzelnen Benutzer
- für jeden Benutzer das gleiche Limit
- pro Benutzer ein individuelles Limit
Der Aufbau eines Quota-Systems sieht wie folgt aus.
- Quota-Roots - meist pro Benutzer, aber auch pro Domain wäre möglich, zur Quota-Berechnung
- Quota-Backend - Speicherort für die Quota-Berechnung, z.B.
maildir
- Speicherung in einer einfachen Datei immaildir
-Ordner des Benutzersdict
- Speicherung in einer Datenbankdirsize
- Aufsummierung der Dateien im Dateisystemfs
- Beishell
-Nutzers kann die Betriebssystem-Quota-Berechnung genutzt werden
- Quota-Rules - Definitionen von Regeln, pro Verzeichnis
- Quota-Warnings - Benachrichtigung an den Benutzer, bei Überschreitung
Der häufigste und auch gebräuchlichste Einsatzzweck wird die Verwendung von
- Quotas, individuell - pro einzelnen Benutzer sein.
- Quota-Backend,
maildir
eine Datei imhome
-Verzeichnis (Postfach) des Benutzers - Quota-Rule, eine Begrenzung individuell für jeden Benutzer
- Quota-Warning, Benachrichtigung per e-Mail, je nach prozentualer Überschreitung
Hier verwendete Einstellungen:
- Für die gesamte mailbox soll 1 GibaByte pro Benutezr eingestellt werden.
- Für den Ordner Trash (Papierkorb) werden zusätzlich 100 MegaByte für Löschaktionen eingestellt.
- Es soll eine Quota-grace (Gnaden-grenze) von 10% aktiviert werden, die ein Überschreiten der Quota-Beschränkungen um 10% für die sogenannte letzte e-Mail erlaubt.
maildir
soll hier als Quota-backend die erste Wahl sein.- Es sollen Quota-Warnings per e-Mail versandt werden, bei 80% und 95%.
- Es sollen individuelle Quota-Einstellungen pro Benutzer realisiert werden.
- Zu Testzwecken wird individuell beim einzelnen Benutzer für die gesamte mailbox ein extrem kleines Limit = 1 KiloByte hinterlegt!
Konfiguration
Nachfolgend sind verschiedene Konfigurationsschritte notwendig, die ggf. auch Kombinationen aus den einzelnen Teilen eines Quota-Systems bestehen.
/etc/dovecot/conf.d/10-mail.conf
mail_plugins
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-mail_plugins Dovecot Configuration Manual - Quota Plugin |
Defaultwert | mail_plugins = |
Neuer Wert | mail_plugins = $mail_plugins quota |
Konfiguration | # 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. # Tachtler # default: #mail_plugins = mail_plugins = $mail_plugins quota |
Beschreibung | Eine durch Leerzeichen getrennte Liste der zu ladenden Plugins. |
HINWEIS - $mail_plugins
fügt bestehende plugins, aus evtl. anderen Konfigurationen und den Wert quota
gemeinsam, dem Parameter mail_plugins
hinzu!
/etc/dovecot/conf.d/20_imap.conf
mail_plugins
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/ Dovecot Configuration Manual - Quota Plugin |
Defaultwert | mail_plugins = |
Neuer Wert | mail_plugins = $mail_plugins imap_quota |
Konfiguration | protocol imap { # Space separated list of plugins to load (default is global mail_plugins). # Tachtler # default: #mail_plugins = $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 } |
Beschreibung | Eine durch Leerzeichen getrennte Liste der zu ladenden Plugins. |
HINWEIS - $mail_plugins
fügt bestehende plugins, aus evtl. anderen Konfigurationen und den Wert imap_quota
gemeinsam, dem Parameter mail_plugins
hinzu!
/etc/dovecot/conf.d/90-quota.conf
Hier werden zur Quota-Berechnung, für jeden einzelnen Benutzer, die gleichen Werten eingestellt.
HINWIES - Diese Einstellungen gelten als Basis immer dann, wenn keine individuellen Benutzer-Quota zusätzlich beim Benutzer individuell hinterlegt werden!
plugin (Quota limits): quota_rule
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_rule Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_rule = |
Neuer Wert | quota_rule = *:storage=1G |
Konfiguration | ## ## Quota limits ## # Quota limits are set using "quota_rule" parameters. To get per-user quota # limits, you can set/override them by returning "quota_rule" extra field # from userdb. It's also possible to give mailbox-specific limits, for example # to give additional 100 MB when saving to Trash: plugin { # Tachtler # default: #quota_rule = *:storage=1G quota_rule = *:storage=1G # Tachtler # default: #quota_rule2 = Trash:storage=+100M quota_rule2 = INBOX/Trash:storage=+100M # LDA/LMTP allows saving the last mail to bring user from under quota to # over quota, if the quota doesn't grow too high. Default is to allow as # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. # Tachtler # default: #quota_grace = 10%% quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. # Tachtler # default: #quota_max_mail_size = 100M quota_max_mail_size = 0 # Tachtler - NEW - DISABLED - #quota_exceeded_message = Storage quota for this account has been exceeded. } |
Beschreibung | Die Konfiguration der Quotenregel hat die folgende Syntax: quota_rule = <mailbox name>:<limit configuration>
Es können mehrere Quotenregeln definiert werden, indem eine aufsteigende Zahl an die Bezeichnung der Einstellung angehängt wird. |
plugin (Quota limits): quota_rule2
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_rule Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_rule2 = |
Neuer Wert | quota_rule2 = INBOX/Trash:storage=+100M |
Konfiguration | ## ## Quota limits ## # Quota limits are set using "quota_rule" parameters. To get per-user quota # limits, you can set/override them by returning "quota_rule" extra field # from userdb. It's also possible to give mailbox-specific limits, for example # to give additional 100 MB when saving to Trash: plugin { # Tachtler # default: #quota_rule = *:storage=1G quota_rule = *:storage=1G # Tachtler # default: #quota_rule2 = Trash:storage=+100M quota_rule2 = INBOX/Trash:storage=+100M # LDA/LMTP allows saving the last mail to bring user from under quota to # over quota, if the quota doesn't grow too high. Default is to allow as # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. # Tachtler # default: #quota_grace = 10%% quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. # Tachtler # default: #quota_max_mail_size = 100M quota_max_mail_size = 0 # Tachtler - NEW - DISABLED - #quota_exceeded_message = Storage quota for this account has been exceeded. } |
Beschreibung | Die Konfiguration der Quotenregel hat die folgende Syntax: quota_rule = <mailbox name>:<limit configuration>
Es können mehrere Quotenregeln definiert werden, indem eine aufsteigende Zahl an die Bezeichnung der Einstellung angehängt wird. |
plugin (Quota limits): quota_grace
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_grace Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_grace = |
Neuer Wert | quota_grace = 10%% |
Konfiguration | ## ## Quota limits ## # Quota limits are set using "quota_rule" parameters. To get per-user quota # limits, you can set/override them by returning "quota_rule" extra field # from userdb. It's also possible to give mailbox-specific limits, for example # to give additional 100 MB when saving to Trash: plugin { # Tachtler # default: #quota_rule = *:storage=1G quota_rule = *:storage=1G # Tachtler # default: #quota_rule2 = Trash:storage=+100M quota_rule2 = INBOX/Trash:storage=+100M # LDA/LMTP allows saving the last mail to bring user from under quota to # over quota, if the quota doesn't grow too high. Default is to allow as # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. # Tachtler # default: #quota_grace = 10%% quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. # Tachtler # default: #quota_max_mail_size = 100M quota_max_mail_size = 0 # Tachtler - NEW - DISABLED - #quota_exceeded_message = Storage quota for this account has been exceeded. } |
Beschreibung | Wenn diese Option gesetzt ist, können Nachrichtenlieferungen die Quote um diesen Wert überschreiten. |
plugin (Quota limits): quota_max_mail_size
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_max_mail_size Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_max_mail_size = |
Neuer Wert | quota_max_mail_size = 0 |
Konfiguration | ## ## Quota limits ## # Quota limits are set using "quota_rule" parameters. To get per-user quota # limits, you can set/override them by returning "quota_rule" extra field # from userdb. It's also possible to give mailbox-specific limits, for example # to give additional 100 MB when saving to Trash: plugin { # Tachtler # default: #quota_rule = *:storage=1G quota_rule = *:storage=1G # Tachtler # default: #quota_rule2 = Trash:storage=+100M quota_rule2 = INBOX/Trash:storage=+100M # LDA/LMTP allows saving the last mail to bring user from under quota to # over quota, if the quota doesn't grow too high. Default is to allow as # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. # Tachtler # default: #quota_grace = 10%% quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. # Tachtler # default: #quota_max_mail_size = 100M quota_max_mail_size = 0 # Tachtler - NEW - DISABLED - #quota_exceeded_message = Storage quota for this account has been exceeded. } |
Beschreibung | Die maximale Nachrichtengrösse, die gespeichert werden darf (z. B. durch LMTP ,IMAP APPEND oder doveadm save ). 0 bedeutet unbegrenzt. |
HINWEIS - Welche Grössenbeschränkung eine E-Mail hat, soll hier nicht durch Dovecot bestimmt werden, sondern durch den MTA - z.B. Postfix, welcher die E-Mail annimmt, da sonst bei einer Änderung dieses Wertes, es an zwei Stellen abgeändert werden müsste!
plugin (Quota limits): quota_exceeded_message
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_exceeded_message Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_exceeded_message = |
Neuer Wert | #quota_exceeded_message = Storage quota for this account has been exceeded. |
Konfiguration | ## ## Quota limits ## # Quota limits are set using "quota_rule" parameters. To get per-user quota # limits, you can set/override them by returning "quota_rule" extra field # from userdb. It's also possible to give mailbox-specific limits, for example # to give additional 100 MB when saving to Trash: plugin { # Tachtler # default: #quota_rule = *:storage=1G quota_rule = *:storage=1G # Tachtler # default: #quota_rule2 = Trash:storage=+100M quota_rule2 = INBOX/Trash:storage=+100M # LDA/LMTP allows saving the last mail to bring user from under quota to # over quota, if the quota doesn't grow too high. Default is to allow as # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. # Tachtler # default: #quota_grace = 10%% quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. # Tachtler # default: #quota_max_mail_size = 100M quota_max_mail_size = 0 # Tachtler - NEW - DISABLED - #quota_exceeded_message = Storage quota for this account has been exceeded. } |
Beschreibung | Die hier angegebene Nachricht wird an einen Benutzer weitergeleitet, der sein Kontingent überschreitet. Der Wert ist entweder die Nachricht oder der Pfad zu einer Datei (mit einem vorangestellten < ), die als Meldungsdatei verwendet wird. |
HINWEIS - Soll durch eine Skript, welches eine E-Mail in das Postfach des jeweiligen Benutzers einliefert, abgehandelt werden!
plugin (Quota warnings): quota_warning
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_warning Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_warning = |
Neuer Wert | quota_warning = storage=95%% quota-warning 95 %u |
Konfiguration | ## ## Quota warnings ## # You can execute a given command when user exceeds a specified quota limit. # Each quota root has separate limits. Only the command for the first # exceeded limit is executed, so put the highest limit first. # The commands are executed via script service by connecting to the named # UNIX socket (quota-warning below). # Note that % needs to be escaped as %%, otherwise "% " expands to empty. plugin { # Tachtler # default: #quota_warning = storage=95%% quota-warning 95 %u quota_warning = storage=95%% quota-warning 95 %u # Tachtler # default: #quota_warning2 = storage=80%% quota-warning 80 %u quota_warning2 = storage=80%% quota-warning 80 %u } |
Beschreibung | Dovecot kann so konfiguriert werden, dass ein externer Befehl ausgeführt wird, wenn das Kontingent eines Benutzers einen bestimmten Grenzwert überschreitet. ZU beachten ist, dass die Warnung NUR genau zu dem Zeitpunkt ausgeführt wird, zu dem das Limit überschritten wird. Wenn ausser Dovecot die Quota aktualisiert, so dass die Grenze überschritten wird, wird die Warnung nie ausgeführt. Die Konfiguration der Quotenwarnung hat die folgende Syntax: quota_warning = <limit configuration> <quota-warning socket name> <parameters>
|
plugin (Quota warnings): quota_warning2
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota_warning Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_warning2 = |
Neuer Wert | quota_warning2 = storage=80%% quota-warning 80 %u |
Konfiguration | ## ## Quota warnings ## # You can execute a given command when user exceeds a specified quota limit. # Each quota root has separate limits. Only the command for the first # exceeded limit is executed, so put the highest limit first. # The commands are executed via script service by connecting to the named # UNIX socket (quota-warning below). # Note that % needs to be escaped as %%, otherwise "% " expands to empty. plugin { # Tachtler # default: #quota_warning = storage=95%% quota-warning 95 %u quota_warning = storage=95%% quota-warning 95 %u # Tachtler # default: #quota_warning2 = storage=80%% quota-warning 80 %u quota_warning2 = storage=80%% quota-warning 80 %u } |
Beschreibung | Dovecot kann so konfiguriert werden, dass ein externer Befehl ausgeführt wird, wenn das Kontingent eines Benutzers einen bestimmten Grenzwert überschreitet. ZU beachten ist, dass die Warnung NUR genau zu dem Zeitpunkt ausgeführt wird, zu dem das Limit überschritten wird. Wenn ausser Dovecot die Quota aktualisiert, so dass die Grenze überschritten wird, wird die Warnung nie ausgeführt. Die Konfiguration der Quotenwarnung hat die folgende Syntax: quota_warning = <limit configuration> <quota-warning socket name> <parameters>
|
service quota-warning
Nachfolgende Quota Einstellungen bewirken, dass eine Warnmeldung
- an den Benutzer zugestellt wird
- nur einmalig in dem Moment, wenn das Quota-Limit überschritten wird
- Skript-basiert
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#service-basics Dovecot Configuration Manual - Quota Plugin Dovecot Configuration Manual - Quota Configuration - Quota Warning Scripts |
Defaultwert | service quota-warning |
Neuer Wert | service quota-warning {...} |
Konfiguration | # Example quota-warning service. The unix listener's permissions should be # set in a way that mail processes can connect to it. Below example assumes # that mail processes run as vmail user. If you use mode=0666, all system users # can generate quota warnings to anyone. # Tachtler - ENABLED - service quota-warning { executable = script /usr/local/bin/quota-warning.sh # Tachtler # default: # user = dovecot user = vmail unix_listener quota-warning { user = vmail } } |
Beschreibung | Aktivieren des Service zum Aufruf eines Skripts, welches eine Quota-Warnung E-Mail erstellt und dem jeweiligen Benutzer in sein Postfach sendet. |
plugin (Quota backends): quota
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/plugin/quota-plugin/#plugin_setting-quota-quota Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota = |
Neuer Wert | quota = maildir:User quota |
Konfiguration | ## ## Quota backends ## # Multiple backends are supported: # dirsize: Find and sum all the files found from mail directory. # Extremely SLOW with Maildir. It'll eat your CPU and disk I/O. # dict: Keep quota stored in dictionary (eg. SQL) # maildir: Maildir++ quota # fs: Read-only support for filesystem quota plugin { #quota = dirsize:User quota # Tachtler # default: #quota = maildir:User quota quota = maildir:User quota #quota = dict:User quota::proxy::quota #quota = fs:User quota } # Multiple quota roots are also possible, for example this gives each user # their own 100MB quota and one shared 1GB quota within the domain: plugin { #quota = dict:user::proxy::quota #quota2 = dict:domain:%d:proxy::quota_domain #quota_rule = *:storage=102400 #quota2_rule = *:storage=1048576 } |
Beschreibung | Die Quotenstammkonfiguration hat die folgende Syntax: quota = <backend>[:<quota root name>[:<backend args>]]
Der Name des Kontingentstamms ist nur eine beliebige Zeichenfolge, die an IMAP-Clients gesendet wird, die sie wiederum dem Benutzer anzeigen können. Der Name hat keine Bedeutung. Standardmässig wird eine leere Zeichenkette verwendet, aber das sollte geändert werden, da einige Clients (Apple Mail) die Quota nicht anzeigen. |
HINWEIS - Die Option noenforcing
, könnte bei einer weichen Neueinführung von Quotas wertvoll sein!
service quota-status
Ein Problem ist, das bei der Einlieferung einer E-Mail, der MTA z.B. Postfix keine Kenntnis von einer Quota-Regelung im MDA Dovecot hat.
Das führt im schlimmsten Fall dazu, das eine Quota-Überschreitung erst nach Annahme der E-Mail durch den MTA z.B. Postfix festgestellt wird, weil eine Annahmeverweigerung durch den MDA Dovecot erfolgt.
Dies würde eine Late-Bounce nach sich ziehen, was wiederum zu einer Backscatter-Problematik führen kann, in dem Unschuldige durch gefälschte Absender-Angaben mit Late-Bounce-Nachrichten konfrontiert ggf. überschüttet werden.
Im nachfolgenden ausschnittsweise gezeigtem Konfigurationsbereich der Konfigurationsdatei, wird
- das Modul quota-status geladen und
- ein
listener
auf IP-Adressen: 10.0.0.80, fd00::10:10:0:0:80 und - auf Port 12340 geöffnet
- an den immer nur eine Anfrage gleichzeitig/seriell übermittelt werden kann
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#service-basics Dovecot Configuration Manual - Quota Plugin Dovecot Configuration Manual - Quota Configuration - Quota Service |
Defaultwert | service quota-status |
Neuer Wert | service quota-status {...} |
Konfiguration | ## Tachtler - NEW - ## ## Quota-Status configuration. ## # Load Module quota-status and listen on TCP/IP Port for connections. service quota-status { executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } client_limit = 1 } # Plugin configuration. # Return messages for requests by quota status: success, nouser and overquota. plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota" } |
Beschreibung | Der Quota-Dienst ermöglicht es Postfix, die Quoten vor der Zustellung zu überprüfen |
service quota-status: client_limit
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#client-limit Dovecot Configuration Manual - Quota Plugin Dovecot Configuration Manual - Quota Configuration - Quota Service |
Defaultwert | client_limit = |
Neuer Wert | client_limit = 1 |
Konfiguration | ## Tachtler - NEW - ## ## Quota-Status configuration. ## # Load Module quota-status and listen on TCP/IP Port for connections. service quota-status { executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } client_limit = 1 } # Plugin configuration. # Return messages for requests by quota status: success, nouser and overquota. plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota" } |
Beschreibung | Maximale Anzahl der gleichzeitigen Client-Verbindungen pro Prozess. Sobald diese Anzahl von Verbindungen erreicht ist, wird Dovecot bei der nächsten eingehenden Verbindung aufgefordert, einen neuen Prozess zu starten. Wird dieser Wert auf 0 gesetzt, wird stattdessen default_client_limit = (default: 1000 ) verwendet. |
plugin (Quota status): quota_status_success
Information | Beschreibung |
---|---|
Dokumentation | Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_status_success = |
Neuer Wert | quota_status_success = DUNNO |
Konfiguration | ## Tachtler - NEW - ## ## Quota-Status configuration. ## # Load Module quota-status and listen on TCP/IP Port for connections. service quota-status { executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } client_limit = 1 } # Plugin configuration. # Return messages for requests by quota status: success, nouser and overquota. plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota" } |
Beschreibung | Aktion durchführen, wenn das Postfach vorhanden und gefunden wurde. Für eine Übersicht der Möglichen Rückgabewerte an Postfix, kann nachfolgender externe Link verwendet werden: access - Postfix SMTP server access table |
WICHTIG - Hier NICHT die Rückmeldungen OK
oder PERMIT
zurückgeben!
Wenn anstelle von DUNNO
(keine Entscheidung, weiter im Verlauf) ein OK
oder PERMIT
zurückgegeben würde, würde Postfix die E-mail stets annehmen, selbst wenn SPAM-Schutz oder Virenscanner einen Treffer melden würden!
Dies gilt für die Anfrage, ob ein
- Postfach vorhanden ist –>
quota_status_success
- Postfach unbekannt ist –>
quota_status_nouser
(ggf. E-Mail-Verarbeitung für mehrere „Backends“)
plugin (Quota status): quota_status_nouser
Information | Beschreibung |
---|---|
Dokumentation | Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_status_nouser = |
Neuer Wert | quota_status_nouser = DUNNO |
Konfiguration | ## Tachtler - NEW - ## ## Quota-Status configuration. ## # Load Module quota-status and listen on TCP/IP Port for connections. service quota-status { executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } client_limit = 1 } # Plugin configuration. # Return messages for requests by quota status: success, nouser and overquota. plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota" } |
Beschreibung | Aktion durchführen, wenn das Postfach nicht vorhanden und gefunden wurde. Für eine Übersicht der Möglichen Rückgabewerte an Postfix, kann nachfolgender externe Link verwendet werden: access - Postfix SMTP server access table |
WICHTIG - Hier NICHT die Rückmeldungen OK
oder PERMIT
zurückgeben!
Wenn anstelle von DUNNO
(keine Entscheidung, weiter im Verlauf) ein OK
oder PERMIT
zurückgegeben würde, würde Postfix die E-mail stets annehmen, selbst wenn SPAM-Schutz oder Virenscanner einen Treffer melden würden!
HINWEIS - Ein weitere Verarbeitung sollte auch bei einem nicht gefundenen Postfach durch die regulären Postfix-Mechanismen möglich sein - z.B. Ausführung von Skripten und nicht Einlieferung in ein Postfach!
Dies gilt für die Anfrage, ob ein
- Postfach vorhanden ist –>
quota_status_success
- Postfach unbekannt ist –>
quota_status_nouser
(ggf. E-Mail-Verarbeitung für mehrere „backends“)
plugin (Quota status): quota_status_overquota
Information | Beschreibung |
---|---|
Dokumentation | Dovecot Configuration Manual - Quota Plugin |
Defaultwert | quota_status_overquota = |
Neuer Wert | quota_status_overquota = "552 5.2.2 Mailbox is over quota" |
Konfiguration | ## Tachtler - NEW - ## ## Quota-Status configuration. ## # Load Module quota-status and listen on TCP/IP Port for connections. service quota-status { executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } client_limit = 1 } # Plugin configuration. # Return messages for requests by quota status: success, nouser and overquota. plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota" } |
Beschreibung | Aktion durchführen, wenn das Postfach vorhanden und gefunden wurde, jedoch die Quota-Regelungen greifen - sprich das Postfach voll ist. Für eine Übersicht der Möglichen Rückgabewerte an Postfix, kann nachfolgender externe Link verwendet werden: access - Postfix SMTP server access table |
/usr/local/bin/quota-warning.sh
Nachfolgendes shell
-Skript kann dazu verwendet werden, um eine E-Mail an den Benutzer zu senden, das dieser sein Quota-Limit zu einem gewissen Prozentsatz ausgelastet hat.
Von grossem Vorteil ist hier, wenn die mailbox
(Postfächer) aller Benutzer mit den Rechten des Dummy-Benutzers: vmail
angelegt und betrieben werden, da hier auch das auszuführende shell
-Skript unter dessen Rechten ausgeführt werden kann.
Dazu soll ein shell
-Skript in nachfolgendem Verzeichnis mit nachfolgendem Namen mit nachfolgendem Befehl erstellt werden:
/usr/local/bin/quota-warning.sh
# vim /usr/local/bin/quota-warning.sh
Nachfolgend der Inhalt des shell
-Skripts: (Grundlage/Quelle: www.heinlein-support.de - Peer Heinlein - Buch: Dovecot )
(Vollständiges Skript)
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/libexec/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: postmaster@tachtler.net To: $USER Date: `date +"%a, %d %b %Y %H:%M:%S %z"` Subject: Quota-Warnung! Nachricht vom Postfachserver auf tachtler.net! Ihr Postfach zur E-Mail-Adresse $USER ist zu $PERCENT% ausgelastet! Ihr Postmaster EOF
Damit das shell
-Skript auch ausgeführt werden kann, müssen noch die entsprechenden Dateirechte mit nachfolgendem Befehl richtig gesetzt werden:
# chmod +x /usr/local/bin/quota-warning.sh
Konfiguration: Authentifizierung - passwd-file
Nachfolgende Quota Einstellungen sind abhängig vom jeweils verwendeten Authentifizierungsverfahren.
Nachfolgend soll die Hinterlegung von individuellen Benutzer-Quotas am Authentifizierungsverfahren
passwd-file
dargestellt werden, zusätzlich zu den Einstellungen in der Konfigurationsdatei
/etc/dovecot/conf.d/90-quota.conf
Um dies realisieren zu können, sind zusätzliche Anpassungen in der Konfigurationsdatei
/etc/dovecot/users
in der die Benutzer hinterlegt sind.
Siehe auch dazu den internen Link:
/etc/dovecot/users
Der Inhalt der Datei /etc/dovecot/users
muss mindestens nachfolgenden Aufbau haben, wobei die Felder
- <(gecos)>
- <shell>
- <extra_fields>
nicht vorhanden sein müssen und ggf. (ausser <extra_fields> am Ende der Zeile) mit ::
, leer gelassen werden können!
<username>:{CODIERUNG}<password>:<uid>:<gid>:<realname>:<home>:<(gecos)>:<extra_fields>
Beispiel Vorher:
klaus@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/klaus:: petra@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/petra::
Beispiel Nachher:
Hier werden nun im Bereich <extras>
Zusätzliche Informationen für die individuelle Benutzer-Quota-Berechnung hinzugefügt, was mit nachfolgender Ergänzung der Konfigurationsdatei durchgeführt werden kann:
klaus@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/klaus::userdb_quota_rule=*:storage=1K petra@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/petra::userdb_quota_rule=*:storage=2G
Das hinzufügen bei den Benutzer
klaus@tachtler.net
vonuserdb_quota_rule=*:storage=1K
petra@tachtler.net
vonuserdb_quota_rule=*:storage=2G
bewirkt, dass diese Benutzer die Basis Einstellungen überschreiben und eine individuelle Benutzer-Quota haben.
klaus@tachtler.net
von1 KiloByte
petra@tachtler.net
von2 GigaByte
Neustart
Bevor der der dovecot
-Daemon/Dienst neu gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
doveconf -n
# 2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf # OS: Linux 6.6.65-1-lts x86_64 # Hostname: vml080.idmz.tachtler.net auth_mechanisms = plain digest-md5 cram-md5 login auth_verbose = yes listen = 127.0.0.1, 10.0.0.80, ::1, fd00::10:10:0:0:80, 2001:db8::10:10:0:0:80 mail_location = maildir:~/Maildir mail_plugins = " quota" namespace inbox { inbox = yes location = mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } prefix = INBOX/ separator = / type = private } passdb { args = scheme=CRYPT username_format=%u /etc/dovecot/users driver = passwd-file } plugin { quota = maildir:User quota quota_grace = 10%% quota_max_mail_size = 50M quota_rule = *:storage=1G quota_rule2 = INBOX/Trash:storage=+100M quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is over quota quota_status_success = DUNNO quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u } protocols = imap lmtp service auth { inet_listener auth { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12345 } } service lmtp { inet_listener lmtp { address = 10.0.0.80, fd00::10:10:0:0:80 port = 24 ssl = yes } user = vmail } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { address = 10.0.0.80, fd00::10:10:0:0:80 port = 12340 } } service quota-warning { executable = script /usr/local/bin/quota-warning.sh unix_listener quota-warning { user = vmail } user = vmail } ssl = required ssl_cert = </etc/dovecot/ssl/certs/fullchain.pem ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256 :ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256 :DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA :ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA :AES128-GCM-SHA256:AES256-GCM-SHA384:!CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK :!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ssl_cipher_suites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 :TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256 ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it ssl_prefer_server_ciphers = yes userdb { args = username_format=%u /etc/dovecot/users driver = passwd-file } verbose_proctitle = yes protocol lmtp { auth_ssl_require_client_cert = yes ssl = required ssl_ca = </etc/dovecot/ssl/certs/server-lmtp-chain.pem ssl_require_crl = no ssl_verify_client_cert = yes } protocol imap { mail_plugins = " quota imap_quota" }
HINWEIS - Die Konfiguration der Parameter
ssl_cipher_list
ssl_cipher_suites
erfolgt in einer Zeile - OHNE - Zeilenumbrüche!
HINWEIS - die Konfiguration des dovecot
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber syntaktische Fehler ausschliesst !!!
Danach kann der dovecot-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart dovecot.service
Überprüfung erfolgreicher Neustart
Um zu Überprüfen, ob der Neustart des dovecot
-Daemons/Dienstes erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden:
# ss -tauben | grep dovecot tcp LISTEN 0 1000 10.0.0.80:12345 0.0.0.0:* ino:16554 sk:1001 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:12340 0.0.0.0:* ino:16568 sk:1002 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:24 0.0.0.0:* ino:16482 sk:1003 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 127.0.0.1:143 0.0.0.0:* ino:16505 sk:1004 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:143 0.0.0.0:* ino:16506 sk:1005 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 127.0.0.1:993 0.0.0.0:* ino:16510 sk:1006 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:993 0.0.0.0:* ino:16511 sk:1007 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 [::1]:993 [::]:* ino:16512 sk:100a cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:993 [::]:* ino:16513 sk:100b cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [2001:db8::10:10:0:0:80]:143 [::]:* ino:16509 sk:100c cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:12340 [::]:* ino:16569 sk:100d cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 1000 [fd00::10:10:0:0:80]:12345 [::]:* ino:16555 sk:100e cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:24 [::]:* ino:16483 sk:100f cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [2001:db8::10:10:0:0:80]:993 [::]:* ino:16514 sk:1010 cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:143 [::]:* ino:16508 sk:1011 cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [::1]:143 [::]:* ino:16507 sk:1012 cgroup:/system.slice/dovecot.service v6only:1 <->
oder auch dieser Befehl:
# ps auxwf | grep dovecot | grep -v grep root 1723 0.0 0.2 8148 5248 ? Ss 10:53 0:00 /usr/bin/dovecot -F dovecot 1725 0.0 0.1 4424 2816 ? S 10:53 0:00 \_ dovecot/anvil [0 connections] root 1726 0.0 0.1 4560 2944 ? S 10:53 0:00 \_ dovecot/log root 1727 0.0 0.2 7344 4736 ? S 10:53 0:00 \_ dovecot/config
bzw. auch dieser Befehl:
# systemctl status dovecot.service ● dovecot.service - Dovecot IMAP/POP3 email server Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: > Active: active (running) since Sun 2024-12-29 10:53:23 CET; 1min 19s ago Invocation: 2d378761f9bc4a57934c39a42cf869b3 Docs: man:dovecot(1) https://doc.dovecot.org/ Main PID: 1723 (dovecot) Status: "v2.3.21.1 (d492236fa0) running" Tasks: 4 (limit: 2315) Memory: 3.6M (peak: 4M) CPU: 78ms CGroup: /system.slice/dovecot.service ├─1723 /usr/bin/dovecot -F ├─1725 "dovecot/anvil [0 connections]" ├─1726 "dovecot/log " └─1727 "dovecot/config " Dec 29 10:53:23 server systemd[1]: Starting Dovecot IMAP/POP3 email server... Dec 29 10:53:23 server dovecot[1723]: master: Dovecot v2.3.21.1 (d492236fa0) st> Dec 29 10:53:23 server systemd[1]: Started Dovecot IMAP/POP3 email server.
Quota-Befehle: doveadm
HINWEIS - Nachfolgende Befehle sind nur verfügbar, wenn das quota
-Plugin aktiv ist!
doveadm user
Mit nachfolgendem Befehl, gibt Dovecot eine Liste aller ihm bekannten Benutzer aus:
# doveadm user '*' klaus@tachtler.net petra@tachtler.net
Um zu Überprüfen, welche Benutzerdaten Dovecot bekannt sind, kann nachfolgender Befehl genutzt werden:
# doveadm user klaus@tachtler.net field value uid 10000 gid 10000 home /srv/vmail/tachtler.net/klaus mail maildir:~/Maildir quota_rule *:storage=1K
# doveadm user petra@tachtler.net field value uid 10000 gid 10000 home /srv/vmail/tachtler.net/petra mail maildir:~/Maildir quota_rule *:storage=2G
doveadm quota get
Mit nachfolgenden Befehlen, können Informationen zur Quota-Berechnung/Limit und zur Quota-Verwaltung realisiert werden.
Mit nachfolgendem Befehl, können Informationen zur mailbox (Postfach) eines Benutzer abgefragt werden:
HINWEIS - Die Angabe des STORAGE erfolgt in KiloByte!
# doveadm quota get -u klaus@tachtler.net Quota name Type Value Limit % User quota STORAGE 0 1 0 User quota MESSAGE 0 - 0
Oben stehende mailbox (Postfach) von klaus@tachtler.net
ist mit 1 KiloByte Grösse definiert.
# doveadm quota get -u petra@tachtler.net Quota name Type Value Limit % User quota STORAGE 0 2097152 0 User quota MESSAGE 0 - 0
Oben stehende mailbox (Postfach) von petra@tachtler.net
ist mit 2 GigaByte Grösse definiert.
doveadm quota recalc
Mit nachfolgendem Befehl, kann Dovecot angewiesen werden, die Quota-Berechnung für einen Benutzer neu durchzuführen:
# doveadm quota recalc -u klaus@tachtler.net
HINWEIS - Es erfolgt keine Ausgabe!
Test
HINWEIS - Ein Test, ob Dovecot die Quotas der einzelnen Benutzer honoriert, kann erst erfolgen, wenn ein MTA z.B. Postfix so konfiguriert wrude, das dieser den Dovecot ArchLinux - Quotas - /etc/dovecot/conf.d/90-quota.conf - service quota-status von Dovecot bei der Entgegennahme einer E-Mail vorher abfragt, ob genug Speicherplatz für die in den Dovecot einzuliefernde E-Mail vorhanden ist.
Siehe dazu auch den nachfolgenden internen Link