Mail-Quotas (Ubuntu 18.04): Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „== Links == [https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot] Zurück zu Mailserver einrichten (…“) |
|||
(51 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Konfiguration == | |||
=== Per-user quota === | |||
Dazu ist wichtig, dass in der Datei <code>/etc/dovecot/conf.d/auth-sql.conf.ext</code> (siehe [[Dovecot_(Ubuntu_18.04)#Benutzer_Authentifizierung|Dovecot#Benutzer_Authentifizierung]]) folgende Zeilen einkommentiert werden: | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext | |||
</pre> | |||
<pre> | |||
userdb { | |||
driver = sql | |||
args = /etc/dovecot/dovecot-sql.conf.ext | |||
} | |||
</pre> | |||
Und in der Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code> | |||
<pre> | |||
sudo vi /etc/dovecot/dovecot-sql.conf.ext | |||
</pre> | |||
folgende Zeile hinzugefügt / angepasst wird: | |||
<pre> | |||
user_query = SELECT concat('*:storage=', quota, 'M') AS quota_rule FROM mailbox WHERE local_part = '%n' AND domain = '%d' | |||
</pre> | |||
=== 10-mail.conf === | |||
In der Datei ''/etc/dovecot/conf.d/10-mail.conf'' folgene Zeilen erweitern: | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/10-mail.conf | |||
</pre> | |||
<pre> | |||
mail_plugins = $mail_plugins quota | |||
</pre> | |||
=== 20-imap.conf === | |||
In der Datei ''/etc/dovecot/conf.d/20-imap.conf'' folgene Zeilen erweitern: | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/20-imap.conf | |||
</pre> | |||
<pre> | |||
protocol imap { | |||
mail_plugins = $mail_plugins imap_quota | |||
} | |||
</pre> | |||
=== 90-quota.conf === | |||
In der Datei ''/etc/dovecot/dovecot.conf'' folgene Zeilen hinzufügen: | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/90-quota.conf | |||
</pre> | |||
<pre> | |||
## | |||
## Quota limits | |||
## | |||
plugin { | |||
quota = maildir:User quota | |||
quota_grace = 10%% | |||
} | |||
</pre> | |||
== Warnungen bei Überschreiten der Quote == | |||
=== 90-quota.conf === | |||
In der Datei ''/etc/dovecot/dovecot.conf'' | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/90-quota.conf | |||
</pre> | |||
folgene Zeilen hinzufügen: | |||
<pre> | |||
## | |||
## Quota warnings | |||
## | |||
plugin { | |||
quota_warning = storage=66%% quota-warning 66 %u | |||
quota_warning2 = storage=80%% quota-warning 80 %u | |||
quota_warning3 = storage=95%% quota-warning 95 %u | |||
} | |||
service quota-warning { | |||
executable = script /usr/local/bin/quota-warning.sh | |||
user = vmail | |||
unix_listener quota-warning { | |||
group = vmail | |||
mode = 0660 | |||
user = vmail | |||
} | |||
} | |||
</pre> | |||
=== quota-warning.sh === | |||
Die Datei | |||
<pre> | |||
sudo vi /usr/local/bin/quota-warning.sh | |||
</pre> | |||
mit folgenden zeilen befüllen: | |||
<pre> | |||
#!/bin/sh | |||
PERCENT=$1 | |||
USER=$2 | |||
ADMIN="admin@<domain>" | |||
FROM="postmaster@<domain>" | |||
msg="From: $FROM | |||
To: $USER | |||
Bcc: $ADMIN | |||
Subject: Quota-Warnung $PERCENT% | |||
Lieber Nutzer, | |||
das Postfach $USER ist derzeit zu | |||
$PERCENT% gefuellt. | |||
Bitte einige Mails loeschen. | |||
Herzlichen Dank | |||
Ihr Mail-Service Team." | |||
echo -e "$msg" | /usr/sbin/sendmail -t -f $FROM "$USER" | |||
exit 0 | |||
</pre> | |||
== Ablehnung durch Postfix, wenn Postfach voll == | |||
Wenn die Mail bereits an Dovecot weitergegeben wurde, dann gilt die Mail als zugestellt und es muss nachträglich eine Fehlermeldung generiert werden. | |||
Um das zu vermeiden, kann man mit folgender Konfiguration Postfix die Möglichkeit geben, die Mail sofort vor der Weiterleitung abzulehnen. | |||
=== 91-quota-status.conf === | |||
Die Datei | |||
<pre> | |||
sudo vi /etc/dovecot/conf.d/91-quota-status.conf | |||
</pre> | |||
erstellen (ist momentan nicht vorbereitet) und mit folgenden Inhalt befüllen (Port frei wählbar): | |||
<pre> | |||
service quota-status { | |||
executable = quota-status -p postfix | |||
inet_listener { | |||
address = 127.0.0.1 | |||
port = 12340 | |||
} | |||
client_limit = 1 | |||
} | |||
plugin { | |||
quota_status_success = DUNNO | |||
quota_status_nouser = DUNNO | |||
quota_status_overquota = "552 5.2.2 Mailbox is over quota / Mailbox ist voll" | |||
} | |||
</pre> | |||
=== main.cf === | |||
In der Datei | |||
<pre> | |||
sudo vi /etc/postfix/main.cf | |||
</pre> | |||
bei <code>smtpd_recipient_restrictions</code> vor allen anderen Optionen folgende Anweisung einfügen: | |||
<pre> | |||
smtpd_recipient_restrictions = | |||
check_policy_service inet:127.0.0.1:12340, | |||
..., | |||
... | |||
</pre> | |||
=== Testen === | |||
Zum Test <code>warn_if_reject</code> in dieselbe Zeile direkt vor <code>check_policy_service</code> setzen. So werden nur Warnungen generiert, die Mails jedoch nicht abgelehnt. | |||
== Links == | == Links == | ||
[https://doc.dovecot.org/configuration_manual/quota_plugin/ https://doc.dovecot.org/configuration_manual/quota_plugin/] | |||
[https://wiki.dovecot.org/Quota/Configuration https://wiki.dovecot.org/Quota/Configuration] | |||
[https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot] | [https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot] | ||
[https://dokuwiki.tachtler.net/doku.php?id=tachtler:dovecot_quotas https://dokuwiki.tachtler.net/doku.php?id=tachtler:dovecot_quotas] | |||
[https://thomas-leister.de/mailserver-debian-stretch/ https://thomas-leister.de/mailserver-debian-stretch/] | |||
[https://blog.sys4.de/dovecot-quota-mit-postfix-abfragen-de.html https://blog.sys4.de/dovecot-quota-mit-postfix-abfragen-de.html] | |||
Zurück zu [[Mailserver einrichten (Ubuntu 18.04)|Mailserver einrichten]] | Zurück zu [[Mailserver einrichten (Ubuntu 18.04)|Mailserver einrichten]] |
Aktuelle Version vom 22. März 2020, 17:07 Uhr
Konfiguration
Per-user quota
Dazu ist wichtig, dass in der Datei /etc/dovecot/conf.d/auth-sql.conf.ext
(siehe Dovecot#Benutzer_Authentifizierung) folgende Zeilen einkommentiert werden:
sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext
userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext }
Und in der Datei /etc/dovecot/dovecot-sql.conf.ext
sudo vi /etc/dovecot/dovecot-sql.conf.ext
folgende Zeile hinzugefügt / angepasst wird:
user_query = SELECT concat('*:storage=', quota, 'M') AS quota_rule FROM mailbox WHERE local_part = '%n' AND domain = '%d'
10-mail.conf
In der Datei /etc/dovecot/conf.d/10-mail.conf folgene Zeilen erweitern:
sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_plugins = $mail_plugins quota
20-imap.conf
In der Datei /etc/dovecot/conf.d/20-imap.conf folgene Zeilen erweitern:
sudo vi /etc/dovecot/conf.d/20-imap.conf
protocol imap { mail_plugins = $mail_plugins imap_quota }
90-quota.conf
In der Datei /etc/dovecot/dovecot.conf folgene Zeilen hinzufügen:
sudo vi /etc/dovecot/conf.d/90-quota.conf
## ## Quota limits ## plugin { quota = maildir:User quota quota_grace = 10%% }
Warnungen bei Überschreiten der Quote
90-quota.conf
In der Datei /etc/dovecot/dovecot.conf
sudo vi /etc/dovecot/conf.d/90-quota.conf
folgene Zeilen hinzufügen:
## ## Quota warnings ## plugin { quota_warning = storage=66%% quota-warning 66 %u quota_warning2 = storage=80%% quota-warning 80 %u quota_warning3 = storage=95%% quota-warning 95 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } }
quota-warning.sh
Die Datei
sudo vi /usr/local/bin/quota-warning.sh
mit folgenden zeilen befüllen:
#!/bin/sh PERCENT=$1 USER=$2 ADMIN="admin@<domain>" FROM="postmaster@<domain>" msg="From: $FROM To: $USER Bcc: $ADMIN Subject: Quota-Warnung $PERCENT% Lieber Nutzer, das Postfach $USER ist derzeit zu $PERCENT% gefuellt. Bitte einige Mails loeschen. Herzlichen Dank Ihr Mail-Service Team." echo -e "$msg" | /usr/sbin/sendmail -t -f $FROM "$USER" exit 0
Ablehnung durch Postfix, wenn Postfach voll
Wenn die Mail bereits an Dovecot weitergegeben wurde, dann gilt die Mail als zugestellt und es muss nachträglich eine Fehlermeldung generiert werden. Um das zu vermeiden, kann man mit folgender Konfiguration Postfix die Möglichkeit geben, die Mail sofort vor der Weiterleitung abzulehnen.
91-quota-status.conf
Die Datei
sudo vi /etc/dovecot/conf.d/91-quota-status.conf
erstellen (ist momentan nicht vorbereitet) und mit folgenden Inhalt befüllen (Port frei wählbar):
service quota-status { executable = quota-status -p postfix inet_listener { address = 127.0.0.1 port = 12340 } client_limit = 1 } plugin { quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is over quota / Mailbox ist voll" }
main.cf
In der Datei
sudo vi /etc/postfix/main.cf
bei smtpd_recipient_restrictions
vor allen anderen Optionen folgende Anweisung einfügen:
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:12340, ..., ...
Testen
Zum Test warn_if_reject
in dieselbe Zeile direkt vor check_policy_service
setzen. So werden nur Warnungen generiert, die Mails jedoch nicht abgelehnt.
Links
https://doc.dovecot.org/configuration_manual/quota_plugin/
https://wiki.dovecot.org/Quota/Configuration
https://www.debacher.de/wiki/Mail-Quotas_mit_Dovecot
https://dokuwiki.tachtler.net/doku.php?id=tachtler:dovecot_quotas
https://thomas-leister.de/mailserver-debian-stretch/
https://blog.sys4.de/dovecot-quota-mit-postfix-abfragen-de.html
Zurück zu Mailserver einrichten