CONTENT
  • CHANGES
Szukaj
counter

#top Plugins zlib


Plugins / Zlib plugin - Access compressed mails

Dokumentacja Dovecot: Plugins / Zlib plugin (Dovecot 1.*) | Plugins / Zlib plugin (Dovecot 2.*)
Dovecot 1.*: /etc/dovecot.conf
Dovecot 2.*: /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/90-plugin.conf

EXAMPLES
(Dovecot 1.*) Zmiany jakie należy wprowadzić w /etc/dovecot.conf:
protocol imap {
[...]
  mail_plugins = zlib
[...]
}
[...]
protocol lda {
[...]
  mail_plugins = zlib
[...]
}
[...]
plugin {
[...]
  # Enable these only if you want compression while saving:
  zlib_save_level = 9 # 1..9; default is 6
  zlib_save = bz2 # or bz2, xz or lz4
}

(Dovecot 2.*) Zmiany jakie należy wprowadzić w /etc/dovecot/conf.d/15-lda.conf:
protocol lda {
[...]
  # Space separated list of plugins to load (default is global mail_plugins).
  #mail_plugins = $mail_plugins
  mail_plugins = $mail_plugins sieve zlib
}

(Dovecot 2.*) Zmiany jakie należy wprowadzić w /etc/dovecot/conf.d/20-imap.conf:
protocol imap {
[...]
  # Space separated list of plugins to load (default is global mail_plugins).
  #mail_plugins = $mail_plugins
  mail_plugins = $mail_plugins autocreate zlib
[...]
}

(Dovecot 2.*) Zmiany jakie należy wprowadzić w /etc/dovecot/conf.d/90-plugin.conf:
plugin {
  #setting_name = value
  # Enable these only if you want compression while saving:
  zlib_save_level = 9 # 1..9; default is 6
  zlib_save = bz2 # gz or bz2, xz or lz4
}



Przy pomocy polecenia ls (w poniższym przykładzie został użyty alias dla tego polecenia z opcją listowania długiego)
ll /home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/cur/
uzyskany rezultat powinien być analogiczny do poniższego:
total 8
-rw-------. 1 vmail vmail  765 2017-08-22 19:45 1503423922.M429P3091521.cen06x64.xen.wbcd.pl,S=765,W=784:2,S
-rw-------. 1 vmail vmail  520 2017-08-22 19:48 1503424092.M908753P6405.cen06x64.xen.wbcd.pl,S=765,W=784:2,S

Przy pomocy polecenia file można wyświetlić jakiego typu zawartość zawiera plik:
file /home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/cur/*
uzyskany rezultat powinien być analogiczny do poniższego:
/home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/cur/1503423922.M429P3091521.cen06x64.xen.wbcd.pl,S=765,W=784:2,S:   smtp mail text
/home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/cur/1503424092.M908753P6405.cen06x64.xen.wbcd.pl,S=765,W=784:2,S:   bzip2 compressed data, block size = 900k

Dodatkowo przy użyciu narzędzia imapcmds można wyświetlić zawartość folderu INBOX, aby potwierdzić poprawną obsługę skompresowanych wiadomości. Należy zauważyć, że zgodnie z poniższym listingiem obydwie wiadomości są rozmiaru 784 Bajty. Wiadomość nie skompresowana zajmuje 765 Bajtów miejsca na dysku, natomiast wiadomość skompresowana zajmuje 520 Bajtów miejsca na dysku.
uid=  416 S      date=2017/08/22 19:45:22 size=    784B subject=|Cron <nobody@cen06x64.xen.wbcd.pl> /usr/sbin/vnstat.cron| from=|root@cen06x64.xen.wbcd.pl (Cron Daemon)| to=|root@cen06x64.xen.wbcd.pl|
uid=  417 S      date=2017/08/22 19:45:22 size=    784B subject=|Cron <nobody@cen06x64.xen.wbcd.pl> /usr/sbin/vnstat.cron| from=|root@cen06x64.xen.wbcd.pl (Cron Daemon)| to=|root@cen06x64.xen.wbcd.pl|

Zgodnie z dokumentacją (Zlib plugin / Zlib plugin):
Since v2.0+ Dovecot supports compression while saving mails (via LDA or IMAP APPEND command).
Dla wersji Dovecot 1.* (do 2.0) Compression kompresja musi zostać wykonana manualnie, poprzez cykliczne wykonywanie kompresji poszczególnych wiadomości, które nie zostały jeszcze skompresowane.

Zgodnie z dokumentacją (Zlib plugin / Maildir / Zlib plugin / Maildir):
The compression is detected by reading the first few bytes from the file and figuring out if it's a valid
gzip or bzip2 header. The file name doesn't matter. This means that an IMAP client can also try to exploit
security holes in zlib/bzlib by writing specially crafted mails using IMAP's APPEND command.
v1.2.5+ fixes this by not allowing clients to save mails that are detected as compressed.
Dovecot poprzez odczyt kilku pierwszych bajtów wiadomości dokonuje sprawdzenia w jakim formacie kompresji została zapisana wiadomość (gzip,bzip2,plain text), nazwa pliku nie ma znaczenia. Toteż pliki w których Dovecot zapisuje poszczególne wiadomości nie posiadają rozszerzenia (suffix) .gz lub .bz2 (odpowiednio dla gzip lub bzi2).

UWAGA: przed wykonaniem kompresji wiadomości należy najpierw sprawdzić czy dana wiadomość nie została już wcześniej skompresowana,
w przeciwnym razie podwójna kompresja może uniemożliwić poprawny odczyt wiadomości:
tail -F /var/log/mail/mail.log
dovecot: imap(sp@cen06x64.xen.wbcd.pl): Error: FETCH [] for mailbox INBOX UID 416 got too little data: 523 vs 784
dovecot: imap(sp@cen06x64.xen.wbcd.pl): Error: Maildir filename has wrong W value: /home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/cur/1503423922.M429P3091521.cen06x64.xen.wbcd.pl,S=765,W=784:2,S
dovecot: imap(sp@cen06x64.xen.wbcd.pl): Error: Corrupted index cache file /home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/dovecot.index.cache: Broken virtual size for mail UID 416
dovecot: imap(sp@cen06x64.xen.wbcd.pl): Disconnected: FETCH failed bytes=48/1203

Script to find and bzip2 not compressed messages:
time find /home/vmail/cen06x64.xen.wbcd.pl/sp/Maildir/ -type f | grep  -E "/new/|/cur/" | while read name;do
	LANG=C file $name | grep -q 'compressed data'; result=$?;
	if [ $result -eq 1 ];then
		time bzip2 --best $name;
		mv -v $name.bz2 $name;
	fi;
done




Zmodyfikowany ostatnio: 2018/01/01 16:08:01 (7 lat temu), textsize: 43,5 kB, htmlsize: 8,27 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników