Mail-Quotas (Ubuntu 18.04): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
(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