Inhaltsverzeichnis
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 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 gesammte 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 (Gnadengrenze) 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 - 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-Limitfs=<namespace>
- Quota-Berechnung, nur für den angegebenennamespace
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
- das Modul quota-status geladen und
- ein
listener
auf IP-Adresse 192.168.0.80 und - auf Port 12340 geöffnet
- 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
- nach -
permit_mynetworks
- oder - 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
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.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:
telnet mx1.tachtler.net 25
ehlo rechner60.tachtler.net
mail from: <klaus@tachtler.net>
rcpt to: <klaus@tachtler.net>
data
From: klaus@tachtler.net
To: klaus@tachtler.net
Date: Wed, 26 Mar 2014 06:24:46 +0100
Subject: Test e-Mail.
<ENTER|RETURN>-Taste
Test.
.
quit
Die Einlieferung bei MTA via telnet
und 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!