Inhaltsverzeichnis
Dovecot zlib-Komprimierung
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:
Vorbereitungen
Dovecot ist in der Lage alle e-Mails komprimiert zu speichern.
Dazu kann Dovecot aktuell zwei Varianten anbieten
gzip
bzip(2)
Durch den Einsatz einer Kompression bei der Ablage der e-Mails im Dateisystem, können nachfolgende Vorteile erzielt werden, bei gleichzeitigem in kauf nehmen von nachfolgend genannten Nachteilen:
Vorteile:
- spart Speicherplatz und damit Speicherkosten
- weniger I/O-Operationen im Dateisystem
- Besseres Caching durch bereits komprimierte Daten#
- Schnellere Sicherung der Dateien, da diese bereits komprimiert sind und daher auch ein geringeres Sicherungsvolumen haben
Nachteile:
- höhere CPU-Belastung durch Komprimierung und Entkomprimierung
Da die Vorteile überwiegen und die Nachteile bei immer schnelleren CPU's immer geringer werden, sollte auf jeden Fall die Komprimierung zum Einsatz kommen, egal welche Größe das System hat!
Komprimierungsverfahren
Die Frage nach dem Komprimierungsverfahren ist die nächste die zu Vorbereitung geklärt werden sollte.
Erfahrungen von Peer Heinlein - www.heinlein-support.de zufolge, ist der Einsatz des
- älteren Komprimierungsverfahrens -
gzip
- um den Faktor 3 schneller,
als beim Einsatz des neueren Komprimierungsverfahrens bzip(2)
, bei
- ähnlich guter Komprimierungsrate.
Konfiguration
/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
Deshalb muss zusätzlich noch das Plugin - zlib
geladen werden, was durch nachfolgende Ergänzung in der Konfigurationsdatei
/etc/dovecot/conf.d/10-mail.conf
erreicht werden kann. (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 acl zlib ...
HINWEIS - Hinzugekommen ist hier bei mail_plugins = $mail_plugins […] zlib
!
/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_zlib
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 imap_acl imap_zlib # 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 imap_acl imap_zlib
gemeinsam, dem Parameter mail_plugins
hinzu!
HINWEIS - Dies ermöglicht clients (die dies unterstützen), die Übertragung Ihrer IMAP-Daten in komprimierter Form zum MDA Dovecot, was die Bandbreitenauslastung vermindert!
/etc/dovecot/conf.d/90-plugin.conf
In der Konfigurationsdatei wird festgelegt, welche Plugins von Dovecot verwendet werden können, falls diese nicht in anderen Konfigurationsdateien bereits konfiguriert wewrden.
plugin
Abschließend muss festgelegt werden, welches Komprimierungsverfahren zum Einsatz kommen soll und wie hoch der Grad der Komprimierung sein soll.
(Komplette Konfigurationsdatei)
## ## Plugin settings ## # All wanted plugins must be listed in mail_plugins setting before any of the # settings take effect. See <doc/wiki/Plugins.txt> for list of plugins and # their configuration. Note that %variable expansion is done for all values. plugin { #setting_name = value # Tachtler - new - zlib_save_level = 6 # 1...9 zlib_save = gz # gz or bz2 }
Erklärung:
Mit dem Parameter wird festgelegt, wie hoch der Grad der Komprimierung sein soll. Beste Ergebnisse zwischen dem Grad der Komprimierung und CPU-Verbrauch, lassen sich hier mit dem Wert 6 erzielen.
zlib_save_level = 6 # 1...9
Mit dem Parameter wird festgelegt, welches Komprimierungsverfahren zum Einsatz kommen.
zlib_save = gz # gz or bz2
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 # Pigeonhole version 0.4.8 (0c4ae064f307+) # 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 acl zlib" managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mbox_write_locks = fcntl namespace { list = children location = maildir:%%h/Maildir:INDEX=%h/shared/%%u:CONTROL=%h/shared/%%u prefix = shared/%%u/ separator = / subscriptions = yes type = shared } 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 { acl = vfile acl_shared_dict = file:/var/lib/dovecot/db/shared-mailboxes.db 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 sieve = file:~/sieve;active=~/.dovecot.sieve zlib_save = gz zlib_save_level = 6 } protocols = imap lmtp sieve service auth { unix_listener auth-userdb { group = vmail user = vmail } } service lmtp { inet_listener lmtp { address = 192.168.0.80 port = 24 } } service managesieve-login { inet_listener sieve { address = 192.168.0.80 port = 4190 } } 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 lmtp { mail_plugins = " quota acl zlib sieve" } protocol imap { mail_max_userip_connections = 10 mail_plugins = " quota acl zlib imap_quota imap_acl imap_zlib" } protocol sieve { mail_max_userip_connections = 10 }
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
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, 3 Apr 2014 19:12:49 +0200 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, 3 Apr 2014 19:12:49 +0200
Subject: Test e-Mail.
<ENTER|RETURN>-Taste
Test.
.
quit
Speicherverbrauch
Wenn eine nicht komprimierte und eine komprimierte e-Mail im Postfach des Benutzers, durch nachfolgenden Befehl (vorausgesetzt die e-Mails wurden bereits gelesen!) auflistet werden,
# ls -l /var/spool/vmail/tachtler.net/klaus/Maildir/cur total 8 -rw------- 1 vmail vmail 642 Mar 26 06:49 1396450589.M950540P12250.rechner80.tachtler.net,S=642,W=657:2,S -rw------- 1 vmail vmail 332 Apr 3 19:12 1396534382.M863249P21173.rechner80.tachtler.net,S=640,W=655:2,S
bzw.
# ls -l /srv/vmail/tachtler.net/klaus/Maildir/new total 8 -rw------- 1 vmail vmail 642 Jul 9 17:31 1436455898.M617778P19910.server80.idmz.tachtler.net,S=642,W=639 -rw------- 1 vmail vmail 332 Jul 10 14:51 1436532692.M992055P20925.server80.idmz.tachtler.net,S=640,W=638
ist deutlich die Komprimierung zu erkennen.
-rw------- 1 vmail vmail 332 ... S=640,...
HINWEIS - Die Größe der e-Mail ist
- komprimiert =
332
Byte - unkomprimiert =
640
Byte
Nachträgliche Komprimierung
Um bereits bestehenden Postfächer zu komprimieren, kann dazu beispielsweise der nachfolgende Aufruf verwendet werden:
# find /path/to/vmail/ -type f -name "*,S=*:2*" -mtime +6 -exec gzip -S Z -6 '{}‘ +
HINWEIS - Allerdings kann es durchaus passieren, dass einmalig bei einigen E-Mails diese als „ungelesen“ markiert werden!
* Vielen Dank für diesen Beitrag an Frank J. Dürring