Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dovecot_quotas

Dovecot Quotas

Diese Dokumentation ist nach dem Kurs: Dovecot bei www.heinlein-support.de - Peer Heinlein entstanden. Hier noch einmal meinen Dank für die Informationen und das ☛ Buch: Dovecot

:!: HINWEIS - Die Nachfolgende Konfiguration von Dovecot setzt eine lauffähige Installation von Dovecot voraus, wie unter nachfolgendem internen Link beschrieben !!!

Dovecot ist ein Open-Source-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 große Installationen. Dovecot ist schnell und einfach zu installieren, erfordert keine besonderen Voraussetzungen und ist Ressourcenschonend.

Dovecot wird von Timo Sirainen entwickelt.

Beschreibung Externer Link
Homepage http://dovecot.org
Dokumentation http://dovecot.org/documentation.html
Wiki Dovecot2 http://wiki2.dovecot.org/

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: 

Vorbereitung

Quotas regeln den maximal zur Verfügung stehenden Speicherplatz im Dateisystem für

  • eine ganze Domaine
  • oder pro einzelnen Benutzer
    • für jeden Benutzer das gleiche Limit
    • pro Benuzter 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 im maildir-Ordner des Benutzers
    • dict - Speicherung in einer Datenbank
    • dirsize - Aufsummierung der Dateien im Dateisystem
    • fs - Bei shell-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 im home-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:

  1. Für die gesammte mailbox soll 1 GibaByte pro Benutezr eingestellt werden.
  2. Für den Ordner Trash (Papierkorb) werden zusätzlich 100 MegaByte für Löschaktionen eingestellt.
  3. Es soll eine Quota-grace (Gnadengrenze) von 10% aktiviert werden, die ein Überschreiten der Quota-Beschränkungen um 10% für die sogenannte letzte e-Mail erlaubt.
  4. maildir soll hier als Quota-backend die erste Wahl sein.
  5. Es sollen Quota-Warnings per e-Mail versandt werden, bei 80% und 95%.
  6. 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 - Allgemein

Nachfolgend sind verschiedene Konfigurationsschritte notwendig, die ggf. auch Kombinationen aus den einzelnen Teilen eines Quota-Systems bestehen.

/etc/dovecot/conf.d/10-mail.conf

In der Konfigurationsdatei wird festgelegt, welche Art von „Ablagesystem“ Mailbox-Format verwendet werden soll und wo die e-Mail (Postfächer) im Dateisystem abgelegt werden sollen und welche plugins verwendet werden.

mail_plugins

Die nachfolgende Einstellung fügt dem Parameter mail_plugins das plugin - quota hinzu. (Nur relevanter Ausschnitt)

...
# 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
...

:!: 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

In der Konfigurationsdatei werden spezifische Einstellungen für das Protokoll: imap eingestellt.

mail_plugins

Die nachfolgende Einstellung fügt dem Parameter mail_plugins das plugin - imap_quota hinzu. (Nur relevanter Ausschnitt)

...
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
}
...

:!: 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

In der Konfigurationsdatei werden Quota spezifische Einstellungen eingestellt.

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-Limit Bereich: (Nur relevanter Ausschnitt)

...
##
## 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%%
}
...

plugin

Quota-Backend Bereich: (Nur relevanter Ausschnitt)

...
##
## 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
}
...

:!: HINWEIS - Bei der Konfiguration des Quota-Backends, können nachfolgende Optionen zusätzlich verwendet werden.

  • noenforcing - Quota-Berechnungen werden durchgeführt, aber nicht durchgesetzt, trotz z.B. Quota-Warnings!
  • ignoreunlimited - keine Quota-Berechnung für Benutzer ohne Quota-Limit
  • fs=<namespace> - Quota-Berechnung, nur für den angegebenen namespace durchführen

Beispiele: (Nur relevanter Ausschnitt)

  • noenforcing -
    quota = maildir:User quota:noenforcing
  • ignoreunlimited -
    quota = maildir:User quota:ignoreunlimited
  • fs=gruppenpostfach -
    quota = maildir:User quota:fs=gruppenpostfach

:!: HINWEIS - Die Option noenforcing, könnte bei einer weichen Neueinführung von Quotas wertvoll sein!

Konfiguration - Quota-Warnings

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

/usr/local/bin/quota-warning.sh

Nachfolgendes shell-Skript kann dazu verwendet werden, um eine e-Mail an den Benutzer zu senden, dass sein Quota-Limit zu einem gewissen Prozentsatz ausgelastet ist.

Von großem 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 diesen Rechten ausgeführt werden kann.

Dazu soll nun 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!
 
Sehr geehrter Benutzer,
 
das 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

/etc/dovecot/conf.d/90-quota.conf

In der Konfigurationsdatei werden Quota spezifische Einstellungen eingestellt.

Nachfolgend noch die Konfiguration zur Einbindung des shell-Skripts /usr/local/bin/quota-warning.sh:

plugin

Quota-Warnings Bereich: (Nur relevanter Ausschnitt)

...
##
## 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 {
  # 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
}
 
# 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 - service quota-warning - enabled
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
# Tachtler
# default:#  user = dovecot
  user = vmail
  unix_listener quota-warning {
#    user = vmail
  }
}
...

Eine zusätzliche Einstellung, welche optional zum plugin hinzugefügt werden könnte, wäre den Meldungstext den Dovecot ausgibt zu individualisieren, was mit nachfolgendem Parameter innerhalb der plugin Konfiguration erfolgen kann: (Nur relevanter Ausschnitt)

...
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%%
 
  # Tachtler - example 
  # quota_exceeded_message = Quota exceeded, please visit http://www.example.com/over_quota_help for help.
}
...

Konfiguration - Quota-Policy-Server

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.

Dieses Problem kann jedoch durch den Einsatz von Dovecot - ab Version 2.2 durch die Einrichtung eines Quota-Policy-Servers verhindert werden.

/etc/dovecot/conf.d/91-quota-status.conf

Die Konfigurationsdatei

  • 91-quota-status.conf

ist aktuell nicht im Verzeichnis /etc/dovecot/conf.d vorbereitet und kann mit nachfolgendem Befehl erstellt und befüllt werden:

# vim /etc/dovecot/conf.d/91-quota-status.conf

Der Inhalt dieser neuen Konfigurationsdatei, kann dann wie folgt dargestellt aussehen: (Vollständige Konfigurationsdatei)

##
## 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 = 192.168.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"
}

Erklärung:

Im nachfolgenden ausschnittsweise gezeigtem Konfigurationsbereich der Konfigurationsdatei, wird

  1. das Modul quota-status geladen und
  2. ein listener auf IP-Adresse 192.168.0.80 und
  3. auf Port 12340 geöffnet
  4. an den immer nur eine Anfrage gleichzeitig/seriell übermittelt werden kann

(Nur relevanter Ausschnitt)

...
service quota-status {
  executable = quota-status -p postfix
  inet_listener {
    address = 192.168.0.80
    port = 12340
  }
  client_limit = 1   
}
...

Im weiteren Verlauf der Konfigurationsdatei wird nun wie nachfolgend dargestellt, das Plugin so konfiguriert, das auf die entsprechende Anfrage eine entsprechende Antwort zurückgegeben wird.

(Nur relevanter Ausschnitt)

...
plugin {
  quota_status_success = DUNNO
  quota_status_nouser = DUNNO
  quota_status_overquota = "552 5.2.2 Mailbox is over quota"
}
...

:!: 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“)

/etcpostfix/main.cf

Die Einbindung der Abfrage nach dem Quota-Status des Benutzers erfolgt in der Postfix Konfigurationsdatei

  • /etc/postfix/main.cf

:!: WICHTIG - Die richtige Stelle ist hier entscheidend !

Nachfolgende Ergänzung der Postfix Konfiguration, sollte innerhalb der

  • smtpd_recipient_restrictions

entweder

  1. nach - permit_mynetworks - oder
  2. nach - permit_sasl_authenticated

erfolgen.

(Nur relevanter Ausschnitt):

...
# Check dynamicaly the Quota-Status of the user against the dovecot imap server.
        check_policy_service inet:192.168.0.80:12340,
# All else
        permit
...

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. (außer <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 von userdb_quota_rule=*:storage=1K
  • petra@tachtler.net von userdb_quota_rule=*:storage=2G

bewirkt, dass diese Benutzer die Basis Einstellungen überschreiben und eine individuelle Benutzer-Quota haben.

  • klaus@tachtler.net von 1 KiloByte
  • petra@tachtler.net von 2 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.2.18: /etc/dovecot/dovecot.conf
# OS: Linux 3.10.0-229.7.2.el7.x86_64 x86_64 CentOS Linux release 7.1.1503 (Core)  
auth_debug = yes
auth_debug_passwords = yes
auth_master_user_separator = *
auth_mechanisms = plain digest-md5 cram-md5 login
auth_verbose = yes
listen = *
mail_debug = yes
mail_location = maildir:~/Maildir
mail_plugins = " quota"
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = INBOX/
  separator = /
}
passdb {
  args = /etc/dovecot/master-users
  driver = passwd-file
  master = yes
  pass = yes
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  quota = maildir:User quota
  quota_grace = 10%%
  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 lmtp {
  inet_listener lmtp {
    address = 192.168.0.80
    port = 24
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  inet_listener {
    address = 192.168.0.80
    port = 12340
  }
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  unix_listener quota-warning {
    user = vmail
  }
  user = vmail
}
ssl_cert = </etc/pki/dovecot/certs/CAcert-class3-wildcard_all_in_one.crt
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-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_dh_parameters_length = 2048
ssl_key = </etc/pki/dovecot/private/tachtler.net.key
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
verbose_proctitle = yes
protocol imap {
  mail_plugins = " quota imap_quota"
}

:!: 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 ausschließt !!!

Danach kann der dovecot-Server mit nachfolgendem Befehle neu gestartet werden:

# service dovecot restart
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]

bzw.

# systemctl restart dovecot

Ob alle aktuell konfigurierten Dienste von Dovecot gestartet sind, kann mit nachfolgendem Befehl überprüft werden, und sollte eine Ausgabe wie die nachfolgende zurück liefern:

# netstat -tulpen | grep dovecot
tcp        0      0 0.0.0.0:993            0.0.0.0:*         LISTEN      0      61156      19093/dovecot       
tcp        0      0 0.0.0.0:143            0.0.0.0:*         LISTEN      0      61155      19093/dovecot       
tcp        0      0 192.168.0.80:12340     0.0.0.0:*         LISTEN      0      61215      19093/dovecot       
tcp        0      0 192.168.0.80:24        0.0.0.0:*         LISTEN      0      61128      19093/dovecot

Test e-Mail mit telnet

Nachfolgende e-Mail wurde bei dem MTA via telnet eingeliefert und an den MDA Dovecot weitergeleitet:

# telnet mx1.tachtler.net 25
Trying 192.168.0.60...
Connected to 192.168.0.60.
Escape character is '^]'.
220 rechner60.tachtler.net ESMTP Postfix
ehlo rechner60.tachtler.net
250-rechner60.tachtler.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: <klaus@tachtler.net>
250 2.1.0 Ok
rcpt to: <klaus@tachtler.net>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: klaus@tachtler.net
To: klaus@tachtler.net
Date: Wed, 26 Mar 2014 06:24:46 +0100
Subject: Test e-Mail.

Test.
.
250 2.0.0 Ok: queued as 5979220206
quit
221 2.0.0 Bye
Connection closed by foreign host.

Erforderliche Benutzereingaben:

  1. telnet mx1.tachtler.net 25
  2. ehlo rechner60.tachtler.net
  3. mail from: <klaus@tachtler.net>
  4. rcpt to: <klaus@tachtler.net>
  5. data
  6. From: klaus@tachtler.net
  7. To: klaus@tachtler.net
  8. Date: Wed, 26 Mar 2014 06:24:46 +0100
  9. Subject: Test e-Mail.
  10. <ENTER|RETURN>-Taste
  11. Test.
  12. .
  13. quit

Die Einlieferung bei MTA via telnetund die Weiterleitung an den MDA Dovecot kann nachfolgende Meldungen in der LOG-Datei

  • /var/log/maillog

erzeugen:

... postfix/master[19226]: daemon started -- version 2.10.1, configuration /etc/postfix
... postfix/smtpd[19237]: connect from localhost[127.0.0.1] 
... postfix/smtpd[19237]: C00E18D1BBE: client=localhost[127.0.0.1]
... postfix/cleanup[19240]: C00E18D1BBE: message-id=<20150709135236.C00E18D1BBE@vml70080.idmz.tachtler.net>
... postfix/qmgr[19228]: C00E18D1BBE: from=<klaus@tachtler.net>, size=380, nrcpt=1 (queue active)
... dovecot: lmtp(19243): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
... dovecot: lmtp(19243): Connect from 192.168.0.80
... dovecot: lmtp(klaus@tachtler.net): Debug: Loading modules from directory: /usr/lib64/dovecot
... dovecot: lmtp(klaus@tachtler.net): Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so
... dovecot: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
... dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
... dovecot: auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat
... dovecot: auth: Debug: passwd-file /etc/dovecot/master-users: Read 1 users in 0 secs
... dovecot: auth: Debug: passwd-file /etc/dovecot/users: Read 5 users in 0 secs
... dovecot: auth: Debug: master in: USER  1       klaus@tachtler.net      service=lmtp    lip=192.168.0.80   lport=24        rip=192.168.0.80   rport=33117
... dovecot: auth: Debug: passwd-file(klaus@tachtler.net,192.168.0.80): lookup: user=klaus@tachtler.net file=/etc/dovecot/users
... dovecot: auth: Debug: userdb out: USER 1       klaus@tachtler.net      uid=10000       gid=10000       home=/srv/vmail/tachtler.net/klaus      quota_rule=*:storage=1G
... dovecot: lmtp(klaus@tachtler.net): Debug: auth input: klaus@tachtler.net uid=10000 gid=10000 home=/srv/vmail/tachtler.net/klaus quota_rule=*:storage=1G
... dovecot: lmtp(klaus@tachtler.net): Debug: Added userdb setting: plugin/quota_rule=*:storage=1G
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Effective uid=10000, gid=10000, home=/srv/vmail/tachtler.net/klaus
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota root: name=User quota backend=maildir args=
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota rule: root=User quota mailbox=* bytes=1073741824 messages=0
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota rule: root=User quota mailbox=INBOX/Trash bytes=+104857600 messages=0
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota warning: bytes=1020054732 (95%) messages=0 reverse=no command=quota-warning 95 klaus@tachtler.net
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota warning: bytes=858993459 (80%) messages=0 reverse=no command=quota-warning 80 klaus@tachtler.net
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota grace: root=User quota bytes=107374182 (10%)
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Namespace inbox: type=private, prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: maildir++: root=/srv/vmail/tachtler.net/klaus/Maildir, index=, indexpvt=, control=, inbox=/srv/vmail/tachtler.net/klaus/Maildir, alt=
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Namespace : type=private, prefix=, sep=, inbox=no, hidden=yes, list=no, subscriptions=no location=fail::LAYOUT=none
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
... dovecot: lmtp(klaus@tachtler.net): Debug: Namespace INBOX/: Using permissions from /srv/vmail/tachtler.net/klaus/Maildir: mode=0700 gid=default
... dovecot: lmtp(klaus@tachtler.net): z+mZMOh8nlUrSwAAhm5hYQ: msgid=<20150709135236.C00E18D1BBE@vml70080.idmz.tachtler.net>: saved mail to INBOX
... postfix/lmtp[19242]: C00E18D1BBE: to=<klaus@tachtler.net>, relay=192.168.0.80[192.168.0.80]:24, delay=74, delays=73/0.09/0.03/0.31, dsn=2.0.0, status=sent (250 2.0.0 <klaus@tachtler.net> z+mZMOh8nlUrSwAAhm5hYQ Saved)
... postfix/qmgr[19228]: C00E18D1BBE: removed
... dovecot: lmtp(19243): Disconnect from 192.168.0.80: Successful quit
... postfix/smtpd[19237]: disconnect from localhost[127.0.0.1]

In nachfolgende Zeilen aus der Log-Datei ist klar die Quota-Berechnung von Dovecot zu erkennen:

...
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota root: name=User quota backend=maildir args=
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota rule: root=User quota mailbox=* bytes=1073741824 messages=0
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota rule: root=User quota mailbox=INBOX/Trash bytes=+104857600 messages=0
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota warning: bytes=1020054732 (95%) messages=0 reverse=no command=quota-warning 95 klaus@tachtler.net
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota warning: bytes=858993459 (80%) messages=0 reverse=no command=quota-warning 80 klaus@tachtler.net
... dovecot: lmtp(19243, klaus@tachtler.net): Debug: Quota grace: root=User quota bytes=107374182 (10%)

...

Ausgabe Benutzerdaten

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

Quota-Befehle: doveadm

:!: HINWEIS - Nachfolgende Befehle sind nur verfügbar, wenn das quota-Plugin aktiv ist!

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:

# doveadm quota get -u klaus@tachtler.net
Quota name Type    Value Limit                                                               %
User quota STORAGE     1     1                                                             100
User quota MESSAGE     1     -                                                               0

# doveadm quota get -u petra@tachtler.net
Quota name Type    Value   Limit                                                              %
User quota STORAGE     0 2097152                                                              0
User quota MESSAGE     0       -                                                              0

:!: HINWEIS - Die Angabe des STORAGE erfolgt in KiloByte!

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!

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dovecot_quotas.txt · Zuletzt geändert: 2015/07/09 16:50 von klaus