Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dovecot_zlib-komprimierung

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:

  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, 3 Apr 2014 19:12:49 +0200
  9. Subject: Test e-Mail.
  10. <ENTER|RETURN>-Taste
  11. Test.
  12. .
  13. 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

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_zlib-komprimierung.txt · Zuletzt geändert: 2016/10/29 08:18 von klaus