Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:dovecot_8 [07.08.2014 19:48. ] – [Quota-Roots beim Quota-Backend maildir] djangocentos:mail_c7:dovecot_8 [22.07.2019 15:04. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 31: Zeile 31:
 ===== Konfiguration ===== ===== Konfiguration =====
 ==== Quota-Limits ==== ==== Quota-Limits ====
 +Die Definition der Quota-Limits erfolgt mit Hilfe der **Quota-Rules** in der Konfigurationsdatei //**/etc/dovecot/conf.d/90-quota.conf**//.
 +
 +
 +   # vim /etc/dovecot/conf.d/90-quota.conf
 +<code bash>...
 +
 +##
 +## 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 {
 +  #quota_rule = *:storage=1G
 +  #quota_rule2 = 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.
 +  #quota_grace = 10%%
 +  # Django : 2014-08-06
 +  # default: unset
 +  # jeder User bekommt im 1GB Mailstorage zugewiesen
 +  quota_rule = *:storage=100K
 +  # jeder User kann 10k = 10.240 Nachrichten in der INBOX liegen haben
 +  quota_rule2 = INBOX:messages=+10K
 +  # jeder User darf im Unterverzeichnis Trash zusätzlich 125 MB haben
 +  quota_rule3 = INBOX/Trash:storage=+125M
 +  # der Sent-Ordner wird bei der Bewertung ausgenommen
 +  quota_rule4 = INBOX/Sent:ignore
 +  # das Verzeichnis Order darf 25% overquota liegen
 +  quota_rule5 = INBOX/Archiv:storage=+25%%
 +  #
 +  # jeder user darf die Quota-Limitierung einmalig um 10% überschreiten
 +  quota_grace = 10%%
 +}
 +</code>
 +Die einzelnen Konfigurationsparameter sind in dem Konfigurationsbeispiel ausreichend beschrieben.
 +
 ==== Quota-Backend ==== ==== Quota-Backend ====
 +Beim Backend verwenden wir das äußerst robuste und stabile Maildir-Backend. Dovecot wird dabei die Quota-Definition und die aktuellen Werte in eine Datei **maildirsize** im Userverzeichnis verwenden.
 +
 +Die Auswahl des Quota-Backends erfolgt am Ende der Konfigurationsdatei //**/etc/dovecot/conf.d/90-quota.conf**//.
 +
 +   # vim /etc/dovecot/conf.d/90-quota.conf
 +<code bash>##
 +## 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
 +  #quota = maildir:User quota
 +  #quota = dict:User quota::proxy::quota
 +  #quota = fs:User quota
 +  # Django : 2014-08-06
 +  # default: unset
 +  # Quota-Backend Maildir++ aktiviert
 +  # ignoreunlimited : Für Benutzer ohne einem Quota-Limit wird keine Quota-Berechnung durchgeführt
 +  # noenforcing     : Es wird zwar eine Quota-Berechnung durchgeführt und protokolliert, bei einer
 +  #                   Überschreitung des Quota-Schwelle aber keine Sperrung vorgenommen.
 +  # ns=<namspace>   : Quota-Berechnung und -Protokollierung nur für der Namespace "namespace"
 +  #                   vornehmen
 +  quota = maildir:User quota:ignoreunlimited:noenforcing
 +}
 +</code>
 +
 ==== Quota-Plugin ==== ==== Quota-Plugin ====
  
Zeile 558: Zeile 633:
 </code> </code>
 Zum Aktivieren der individualisierten Meldung muss noch ein **Reload** des **Dovecot-Daemon** durchgeführt werden. Zum Aktivieren der individualisierten Meldung muss noch ein **Reload** des **Dovecot-Daemon** durchgeführt werden.
-   # systemctl restart dovecot+   # systemctl reload dovecot
  
 {{ :centos:mail_c7:imap-overquota2.png?nolink |Bild: IMAP-Over-Qouta-Meldung beim Mailclient Thunderbird.}} {{ :centos:mail_c7:imap-overquota2.png?nolink |Bild: IMAP-Over-Qouta-Meldung beim Mailclient Thunderbird.}}
 +
 +==== 90-quota.conf Gesamtkonfigurationsdatei ====
 +In Summe ergibt sich also folgende Gesamtkonfigurationsdatei unserer Quota-Einstellungen.
 +   # vim /etc/dovecot/conf.d/90-quota.conf
 +<file bash /etc/dovecot/conf.d/90-quota.conf>##
 +## Quota configuration.
 +##
 +
 +# Note that you also have to enable quota plugin in mail_plugins setting.
 +# <doc/wiki/Quota.txt>
 +
 +##
 +## 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 {
 +  #quota_rule = *:storage=1G
 +  #quota_rule2 = 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.
 +  #quota_grace = 10%%
 +  # Django : 2014-08-06
 +  # default: unset
 +  # jeder User bekommt im 1GB Mailstorage zugewiesen
 +  quota_rule = *:storage=100K
 +  # jeder User kann 10k = 10.240 Nachrichten in der INBOX liegen haben
 +  quota_rule2 = INBOX:messages=+10K
 +  # jeder User darf im Unterverzeichnis Trash zusätzlich 125 MB haben
 +  quota_rule3 = INBOX/Trash:storage=+125M
 +  # der Sent-Ordner wird bei der Bewertung ausgenommen
 +  quota_rule4 = INBOX/Sent:ignore
 +  # das Verzeichnis Order darf 25% overquota liegen
 +  quota_rule5 = INBOX/Archiv:storage=+25%%
 +  #
 +  # jeder user darf die Quota-Limitierung einmalig um 10% überschreiten
 +  quota_grace = 10%%
 +}
 +
 +##
 +## 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 excecuted, 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 { 
 +  #quota_warning = storage=95%% quota-warning 95 %u
 +  #quota_warning2 = storage=80%% quota-warning 80 %u
 +  # Django : 2014-08-06
 +  # default: unset
 +  # Quotawarnings aktiviert
 +  quota_warning = storage=100%% quota-warning 100 %u
 +  quota_warning2 = storage=95%% quota-warning 95 %u
 +  quota_warning3 = storage=80%% quota-warning 80 %u
 +}
 +
 +# 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.
 +# Django : 2014-08-06
 +# default: unset
 +service quota-warning {
 +  executable = script /usr/local/bin/quota-warning.sh
 +  user = vmail
 +  unix_listener quota-warning {
 +  user = vmail
 +  }
 +}
 +
 +# Django : 2014-08-07
 +# default: quota_exceeded_message =
 +# Individuelle Over-Quota-Nachricht mit link zum Wiki mit weiteren Informationen, die 
 +# der Client während der IMAP-Sitzung bei Überschreitung der gesetzten Schwellen erhält.
 +plugin {
 +  quota_exceeded_message = Quota überschritten, weitere Infos finden Sie hier: http://wiki.mailserver.guru/doku.php/centos:mail_c7:dovecot_8
 +}
 +
 +
 +
 +##
 +## 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
 +  #quota = maildir:User quota
 +  #quota = dict:User quota::proxy::quota
 +  #quota = fs:User quota
 +  # Django : 2014-08-06
 +  # default: unset
 +  # Quota-Backend Maildir++ aktiviert
 +  # ignoreunlimited : Für Benutzer ohne einem Quota-Limit wird keine Quota-Berechnung durchgeführt
 +  # noenforcing     : Es wird zwar eine Quota-Berechnung durchgeführt und protokolliert, bei einer
 +  #                   Überschreitung des Quota-Schwelle aber keine Sperrung vorgenommen.
 +  # ns=<namspace>   : Quota-Berechnung und -Protokollierung nur für der Namespace "namespace"
 +  #                   vornehmen
 +  quota = maildir:User quota:ignoreunlimited:noenforcing
 +}
 +
 +# 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
 +}
 +</file>
 ==== Individuelle Quotas ==== ==== Individuelle Quotas ====
 In den seltensten Fällen werden wir nicht alle Mailbox-Inhalber über einen Kamm scheren können, wenn es um Speicherkontingenzte geht. So werden diejenigen, die mehr bezahlen mehr Speicherplatz zur Verfügung gestellt bekommen. Auch ist klar dass der **BOfH**((**B**astard **O**perator **f**rom **H**ell)) unlimitierten Platz bekommt, wie der Datenmessie eben weniger. In den seltensten Fällen werden wir nicht alle Mailbox-Inhalber über einen Kamm scheren können, wenn es um Speicherkontingenzte geht. So werden diejenigen, die mehr bezahlen mehr Speicherplatz zur Verfügung gestellt bekommen. Auch ist klar dass der **BOfH**((**B**astard **O**perator **f**rom **H**ell)) unlimitierten Platz bekommt, wie der Datenmessie eben weniger.
Zeile 586: Zeile 788:
  
 Zum Testen, ob unser SQL-Statement das gewünschte Ergebnis liefert, verbinden wir uns von unserem Dovecot-Host aus mit unserer Datenbank. Zum Testen, ob unser SQL-Statement das gewünschte Ergebnis liefert, verbinden wir uns von unserem Dovecot-Host aus mit unserer Datenbank.
-Die Eingaben am Client sind in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html> und die Rückmeldungen des MySQL-Servers in der Farbe <html><font style="color: rgb(02550)">grün</font></html> gekennzeichnet. +Die Eingaben am Client sind in der Farbe <html><font style="color: rgb(0, 0, 255)"><b>blau</b></font></html> und die Rückmeldungen des MySQL-Servers in der Farbe <html><font style="color: rgb(666666)"><b>hellgrau</b></font></html> gekennzeichnet. 
  
 <html><pre class="code"> <html><pre class="code">
 <font style="color: rgb(0, 0, 0)">$ </font><font style="color: rgb(0, 0, 255)">mysql -h mysql.dmz.nausch.org -D postfix -u dovecot_user -p</font> <font style="color: rgb(0, 0, 0)">$ </font><font style="color: rgb(0, 0, 255)">mysql -h mysql.dmz.nausch.org -D postfix -u dovecot_user -p</font>
-<font style="color: rgb(02550)">Enter password:</font><font style="color: rgb(0, 0, 255)">D45_157_5uP3r57r3n9_g3h31m!</font> +<font style="color: rgb(666666)">Enter password:</font><font style="color: rgb(0, 0, 255)">D45_157_5uP3r57r3n9_g3h31m!</font> 
-<font style="color: rgb(02550)">Reading table information for completion of table and column names+<font style="color: rgb(666655)">Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A You can turn off this feature to get a quicker startup with -A
  
Zeile 603: Zeile 805:
  
 MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">SELECT CONCAT('/var/spool/mail/vmail/', maildir) AS home, 10000 AS uid, 10000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = 'django@nausch.org' AND active='1';</font> MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">SELECT CONCAT('/var/spool/mail/vmail/', maildir) AS home, 10000 AS uid, 10000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = 'django@nausch.org' AND active='1';</font>
-<font style="color: rgb(02550)">+-------------------------------+-------+-------+--------------------++<font style="color: rgb(666666)">+-------------------------------+-------+-------+--------------------+
 | home                          | uid   | gid   | quota_rule         | | home                          | uid   | gid   | quota_rule         |
 +-------------------------------+-------+-------+--------------------+ +-------------------------------+-------+-------+--------------------+
Zeile 611: Zeile 813:
  
 MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">SELECT username AS user, password, 10000 AS userdb_uid, 10000 AS userdb_gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = 'django@nausch.org' AND active = '1';</font> MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">SELECT username AS user, password, 10000 AS userdb_uid, 10000 AS userdb_gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = 'django@nausch.org' AND active = '1';</font>
-<font style="color: rgb(02550)">+-------------------+------------------+------------+------------+--------------------++<font style="color: rgb(666666)">+-------------------+------------------+------------+------------+--------------------+
 | user              | password         | userdb_uid | userdb_gid | quota_rule         | | user              | password         | userdb_uid | userdb_gid | quota_rule         |
 +-------------------+------------------+------------+------------+--------------------+ +-------------------+------------------+------------+------------+--------------------+
Zeile 619: Zeile 821:
  
 MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">quit;</font> MySQL [postfix]> </font><font style="color: rgb(0, 0, 255)">quit;</font>
-<font style="color: rgb(02550)">Bye</font>+<font style="color: rgb(666666)">Bye</font>
 </pre></html> </pre></html>
 +
 +===== Quotas und doveadm =====
 +==== Neuberechnung mit recalc ====
 +Hat man größere Migrationsarbeiten an einem Dovecot-Server hinter sich, oder musste auf ein Backup mehrerer User oder Maildomänen zurückgreifen, kann es notwendig und hilfreich sein, die Berechnung der Quotas neu anzustoßen. Hierzu benutzt man die option **quota** beim Befehl **doveadm**.
 +Die Quota-Neuberechnung des User-Kontos //django@nausch.org// erreicht man mit folgendem Aufruf.
 +   # doveadm quota recalc -u django@nausch.org
 +
 +Die Neuberechung aller Nutzrkonten würde dann mit folgendem Aufruf erfolgen:
 +   # doveadm quota recalc -A
 +
 +==== Abfrage mit get ====
 +Genau so, wie wir die Neuberechnung eines einzelnen Nutzerkontos anstossen können, ist auch die Abfrage der Quota-Daten eines Nutzers möglich.
 +   # doveadm quota get -u django@nausch.org
 +
 +   Quota name Type    Value Limit                                                                          %
 +   User quota STORAGE   117   500                                                                         23
 +   User quota MESSAGE                                                                                  0
 +
 +Einen Überblick über alle Nutzerkonten erhält man mit der Option **-A**.
 +
 +   # doveadm quota get -A
 +
 +   Username          Quota name Type    Value Limit                                                        %
 +   django@nausch.org User quota STORAGE   117   500                                                       23
 +   django@nausch.org User quota MESSAGE                                                                0
 +   ...
 +
 +===== Quota-Status für den Frontend-Mailserver (Postfix-SMTP-Server) =====
 +Unser Prontend-Mailserver nimmt eMails entgegen, sofern der postfix-Mailserver sich für die Maildomain zuständig, ein gültiges Userpostfach vorhanden sowie die ganzen SPAM- und AV((Anti Virus))-Maßnahmen überstanden wurden. Wird das Frontend-System anschließend die Post nicht beim Backendsystem los, bleibt ihm nichts anderes übrig, als die Nachricht zum Absender zurückzuschicken - ein sog. **//late-bounce//**. War die Absender-Adresse gefälscht, würde dieser Bounce zurück an die Adresse eines unbeteiligten Dritten geschickt - **BACKSCATTER**! Sowas kann natürlich bei entsprechener Masse sehr schnell unangenehm für den betreiber des Mailservers werden und ist daher dringendst zu vermeiden.
 +
 +Dovecot kann **Quota-Stati** unserem Frontend-Mailserver **[[centos:mail_c6:mta_1|Postfix]]** über einen Policy-Server zur Verfügung stellen.
 +
 +==== Dovecot Konfiguration ====
 +Die Konfiguration des Quota-Policy-Daemon nehmen wir am Ende der Konfigurationsdatei //**/etc/dovecot/conf.d/90-quota.conf**// vor.
 +
 +   # vim /etc/dovecot/conf.d/90-quota.conf
 +<code bash>...
 +
 +##
 +## Quota Policy Daemon
 +##
 +
 +# Django : 2014-08-07
 +# Policy-Daemon für Postfix Frontend-Mailserver (MTA)
 +# Kapitel 11.11 "Der Quota-Policy-Server für Postfix"
 +# Dovecotbuch (ISBN 978-3-95539-74-7) Seite 219 ff.
 +#
 +service quota-status {
 +  executable = quota-status -p postfix
 +  inet_listener {
 +    address = 10.0.0.70
 +    port = 10000
 +  }
 +  client_limit = 1
 +}
 +
 +#
 +# quota_status_success   : Ist das Speicher noch möglich, nichts machen "DUNNO"
 +# quota_status_nouser    : Ist der Nutzer unbekannt, auch nichts machen "DUNNO". Ein anderes Backend
 +#                          könnte dafür ev. zuständig sein.
 +# quota_status_overquota : Errorcode und Fehlermeldung, die bei Erreichen der gesetzte Quota an den
 +#                          Frontend-Mailserver (MTA) Postfix zurückgemeldet wird. 
 +plugin {
 +  quota_status_success = DUNNO
 +  quota_status_nouser = DUNNO
 +  quota_status_overquota = "552 5.2.2 Mailbox is over quota / Mailbox ist voll"
 +}
 +</code>
 +
 +Zur Aktivierung der Konfigurationsänderung führen wir einen **Reload** unseres Dovecot-Servers durch.
 +   # systemctl reload dovecot
 +
 +Überprüfen wir nun die offenen Ports unseres Dovecot-Servers, sehen wir auch den Port **10000** unseres Quota-Status-Policy-Daemon.
 +   # netstat -tulpen | grep dovecot
 +
 +   tcp        0      0 10.0.0.70:4190          0.0.0.0:              LISTEN      0          97758      10151/dovecot       
 +   tcp        0      0 10.0.0.70:993           0.0.0.0:              LISTEN      0          97821      10151/dovecot       
 +   tcp        0      0 10.0.0.70:995           0.0.0.0:              LISTEN      0          97784      10151/dovecot       
 +   tcp        0      0 10.0.0.70:110           0.0.0.0:              LISTEN      0          97783      10151/dovecot       
 +   tcp        0      0 10.0.0.70:143           0.0.0.0:              LISTEN      0          97820      10151/dovecot       
 +   tcp        0      0 10.0.0.70:10000         0.0.0.0:              LISTEN      0          98545      10151/dovecot       
 +   tcp        0      0 10.0.0.70:24            0.0.0.0:              LISTEN      0          97793      10151/dovecot 
 +
 +
 +==== Paketfilter Konfiguration ====
 +Damit nun nicht jeder fremde Host sich mit dem Port **10000** verbinden kann, regeln wir den Zugriff über eine Firewall-Regel so, dass nur der vorgeschaltete **MTA** Postfix-Mailserver sich mit unserem **Dovecot-Server** auf Port **10000** verbinden kann. 
 +
 +Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbiundungen kurz getrennt werden. Sondern unsere Änderungen können **//on-the-fly//** aktiviert oder auch wieder deaktiviert werden.
 +
 +In unserem Konfigurationsbeispiel hat unser Postfix-Server die IP-Adresse 10.0.0.80 und unser Dovecot-Server die 10.0.0.70. Wir brauchen also eine Firewall-Definition, die ausschließlich Verbindungen von der **Source-IP** 10.0.0.80 auf die **Destination-IP** 10.0.0.70 auf Port **10000** gestattet.
 +
 +Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public**, dies entspricht in unserem Beispiel das Netzwerk-Interface **eth0** mit der IP **10.0.0.70** an. Als Source-IP geben wir die IP-Adresse unseres Postfix-Servers also die **10.0.0.80** an. Genug der Vorrede, mit nachfolgendem Befehl wird diese restriktive Regel angelegt.
 +   # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.80/32" port protocol="tcp" port="10000" destination address="10.0.0.70/32" accept"
 +
 +Zum Aktivieren brauchen wir nun nur einen reload des Firewall-Daemon vornehmen.
 +   # firewall-cmd --reload
 +
 +Fragen wir nun den Regelsatz unserer **iptables**-basieten Firewall ab, finden wir in der Chain **IN_public_allow** unsere aktive Regel.
 +   # iptables -nvL IN_public_allow
 +
 +<code>Chain IN_public_allow (1 references)
 + pkts bytes target     prot opt in     out     source               destination         
 +    0     0 ACCEPT     tcp  --  *      *       10.0.0.80            10.0.0.70            tcp dpt:10000 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       10.0.0.80            10.0.0.70            tcp dpt:24 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:22 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:110 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:143 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:4190 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:993 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:995 ctstate NEW
 +</code>
 +
 +==== Postfix Konfiguration ====
 +Wie schon angesprochen, wollen wir den **//Dovecot-Policy-Daemon//** erst ansprechen, wenn alle Vorprüfungen in Sachen Antivirus und SPAM erfolgt sind und bevor die Nachricht vom Postfix-Server mit einem **permit** angenommen wird.
 +
 +Bei der Installation und **[[centos:mail_c6:mta_3|Grundabsicherung von Postfix]]** haben wir uns bereits ein umfangreiches **[[centos:mail_c6:mta_3#restrictions-regelwerk|Restriction-Regelwerk]]** angelegt. Dort tragen wir nun vor dem abschließendem **//permit//** den **//Quota-Status-Check am Dovecot Backend-System//** ein.
 +   # vim /etc/postfix/main.cf
 +<code bash>...
 +
 +#
 +# Django : 2012-02-06
 +# Schutz durch Restrictions für unseren Postfix-Mailserver 
 +#
 +
 +smtpd_recipient_restrictions =
 +# Postmaster, abuse und andere aufgaben- oder funktionsgebundene E-Mail-Adressen (Role-Accounts) whitelisten
 +        check_recipient_access btree:/etc/postfix/access_recipient-rfc,
 +# Black- und Whitelisting                               (Kapitel 8.2.3 White- und Blacklisting)
 +        check_client_access cidr:/etc/postfix/access_client,
 +        check_helo_access btree:/etc/postfix/access_helo,
 +        check_sender_access btree:/etc/postfix/access_sender,
 +        check_recipient_access btree:/etc/postfix/access_recipient,
 +# Unsauberer eMails nicht annehmen                      (Kapitel 8.2.4 Anforderungen an Mailadressen)
 +        reject_non_fqdn_sender,
 +        reject_non_fqdn_recipient,
 +        reject_unknown_sender_domain,
 +        reject_unknown_recipient_domain,
 +# Unsere eigenen Nutzer zulassen-/erlauben              (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +        permit_sasl_authenticated,
 +        permit_mynetworks,
 +# RBL überprüfen                                        (Kapitel 10.11 Realtime Blackhole Lists)
 +        reject_rbl_client zen.spamhaus.org,
 +        reject_rbl_client ix.dnsbl.manitu.net,
 +        reject_rbl_client bl.spamcop.net,
 +        reject_rhsbl_client multi.uribl.com,
 +# Greylisting via postgrey checken via Unix-Socket      (Kapitel 9.2.5 postgrey installieren)
 +        check_policy_service unix:postgrey/socket,
 +# Policyd-Weight check over TCP-Connection              (Kapitel 9.3 policyd-weight installieren)
 +        check_client_access btree:/etc/postfix/policyd_weight_client_whitelist,
 +        check_policy_service inet:127.0.0.1:12525,
 +# Dynamische Prüfung auf existente Relay-Empfänger      (Kapitel 12.2.2 Dynamische Empfänger-Verifizierung)
 +        reject_unverified_recipient,
 +# Backupserver (MX) erlauben
 +        permit_mx_backup,
 +# alles andere an relaying verbieten                    (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +        reject_unauth_destination,
 +# Quota-Status-Policy-Daemon am Dovecot-Backend-System
 +# Dovecotbuch (ISBN 978-3-95539-74-7) Seite 219 ff.     (Kapitel 11.11 "Der Quota-Policy-Server für Postfix")
 +        check_policy_service inet:10.0.0.70:10000,
 +# Zu guter Letzt alles durchlassen, was bis jetzt noch nicht beanstandet wurde
 +        permit
 +
 +...
 +</code>
 +
 +Zum Aktivieren der Konfigurationsänderung starten wir den Postfix-Mailserver einmal durch.
 +   # systemctl restart postfix
 +
 +
 +===== Mailclient auf Benutzerseite =====
 +Mailclients haben bisweilen sehr unterschiedliche Arten, die Informationen aus dem **imap_quota** Plugin darzustellen. 
 +==== kMail ====
 +kMail stelle die Informationen des **imap_quota-//Plugins//** zur Verfügung, wenn der Mauszeiger über den betreffenden Mailkonto plaziert wird.
 +
 +{{ :centos:mail_c7:kmail_001.png?nolink&700 |Bild: Bildschirmphoto des eMail-Clientprogramm kMail}}
 +
 +Wir die Quota überschritten wir zusätzlich der Ordner-Name mit der Schriftfarbe **rot** dargestellt.
 +
 +{{ :centos:mail_c7:kmail_002.png?nolink&700 |Bild: Bildschirmphoto des eMail-Clientprogramm kMail}}
 +
 +==== Thunderbird ====
 +Im Gegensatz zum Mailclient kMail, stellt Thunderbird keine Informationen zur Quota-Auslastung in der Statuszeile an, wenn der Schwellwert noch nicht errreicht wurde.
 +
 +Ist die Quota-Informationsgrenze noch nicht erreicht, wird in der Statusleiste keine Information zum aktuellen Stand der Quota zur Verfügung gestellt.
 +
 +{{ :centos:mail_c7:thunderbird_001.png?nolink |Bild: Bildschirmhardcopy der Statusleiste vom eMail-Client Thunderbird}}
 +
 +Erst bei erreichen der Schwelle wir eine Information angezeigt.
 +
 +{{ :centos:mail_c7:thunderbird_002.png?nolink |Bild: Bildschirmhardcopy der Statusleiste vom eMail-Client Thunderbird}}
 +
 +Abhilfe schafft da das **[[https://addons.mozilla.org/de/thunderbird/addon/display-quota/|Display-Quota Plugin]]**.
 +
 +{{ :centos:mail_c7:display_quota_plugin.png?direct&777 |Bild: Informationen zum Display-Quota-Plugin}}
 +
 +Wird es installiert, werden immer aktuelle Quota-Status-Informationen in der Startleiste angezeigt.
 +
 +{{ :centos:mail_c7:thunderbird_003.png?nolink |Bild: Bildschirmhardcopy der Statusleiste vom eMail-Client Thunderbird}}
 +
 +Entsprechend ist hier die Anzeige bei Überschreitung der Quota-Einstellungen.
 +
 +
 +{{ :centos:mail_c7:thunderbird_004.png?nolink |Bild: Bildschirmhardcopy der Statusleiste vom eMail-Client Thunderbird}}
 +
 +==== Horde Framework/Webmail ====
 +Auch die Nutzer des Webmailers **IMP** unserer Horde-Framework-Installation kommen natürlich in den Genuß der Quota-Anzeige. Wir müssen diese lediglich in der Konfig aktivieren. Hierzu öffnen wir die **backends.local.php** und tragen nachfolgende Zeilen nach.
 +   # vim /var/www/horde/imp/config/backends.local.php
 +<code php>...
 +
 +$servers['advanced'] = array(
 +    // Disabled by default
 +    // Django : 2013-02-01
 +    'disabled' => false,
 +    'name' => 'mein Advanced Dovecot-IMAP Server',
 +    'hostspec' => '10.0.0.70',
 +    'hordeauth' => 'full',
 +    'protocol' => 'imap',
 +    'port' => 143,
 +    'secure' => 'tls',
 +    'maildomain' => 'nausch.org',
 +    'smtp' => array(
 +    'localhost' => 'vml000090.dmz.nausch.org',
 +    'host' => 'vml000080.dmz.nausch.org',
 +    'port' => 25,
 +    ),
 +    // Django : 2014-08-11
 +    'quota' => array(
 +        'driver' => 'imap',
 +        'params' => array(
 +            'hide_when_unlimited' => false,
 +            'unit' => 'MB',
 +            'format' => array('short' => 'Quota Status: %.0f%% bei einer Belegung von %.0f %s')
 +       )
 +    ),
 +    //
 +    'acl' => true,
 +    'cache' => false,
 +);
 +
 +...
 +</code>
 +
 +Sobald wir uns bei unserem Horde-Webmailer anmelden und die Applikation **IMP** auswählen, wird der aktuelle Status zur Quota-Belegung in der Statuszeile angezeigt.
 +
 +{{ :centos:mail_c7:horde_quota_001.jpg?nolink&500 |Bild: Horde Framework Quota Anzeige}}
 +
 +
 +
 +====== Links ======
 +  * **[[centos:mail_c7:start|Zurück zum Kapitel >>Mailserverinstallation unter CentOS 7<<]]**
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
  
  • centos/mail_c7/dovecot_8.1407440910.txt.gz
  • Zuletzt geändert: 07.08.2014 19:48.
  • von django