korabbi maildir fajlok betomoritese LZ4-gyel Dovecot szamara

Sziasztok!

Dovecot LZ4 tomoritesi kepessegevel jatszom es szeretnem betomoriteni az atkonfiguralas elotti leveleket (a Dovecot csak a tomorites bekapcsolas utan erkezett leveleket tomoriti). A dokumentacioban szepen leirjak, hogy ennek mi a menete, a script meg is van, csakhogy az LZ4-gyel tomoritett leveleket a Dovecot sajat "header"-rel megjeloli (IOSTREAM_LZ4_MAGIC), hogy kitomoritesnel tudja milyen algoritmust kell hasznalnia. Ertelmeszeruen a kezi lz4 tomorites ezt a header-t kihagyja. :)
Halovany probalkozasom, amit alabb olvashattok, nem vezetett sikerre (a $tmpfile az lz4-gyel tomoritett maildir fajl):

echo -⁠e -⁠n "Dovecot-⁠LZ4\x0d\x2a\x9b\xc5" | cat -⁠ "$tmpfile" > "$dstfile"

Az igy preparalt levelek olvasasakor a Dovecot az alabbi hibauzenetet logolta:

lz4 max chunk size too large (69356824 > 1048576)

Barmilyen tippet, tanacsot szivesen fogadok, hatha kuzdott mar valaki hasonloval.

Hozzászólások

Pontosan mivel tömörítettél? Nem csak a fejléc van, hanem a fájl tartalma kisebb blokkokra van bontva az idézett forráskód szerint. A script is arra panaszkodik, hogy rossz blokkmérettel találkozott.

--

Ugy tunik marad az, hogy a dsync-kel es a mailbox formatum konvertalassal operalok valamit.

Use the source Luke! Az általad linkelt forrásban, három sorral lentebb van a tényleges Dovecot fejléc definiciója: nem csak az általad próbált szöveg, de azt követően négy byte is alkotja azt. Logolt üzenet meg akkor jön, amikor ezen négy byte-ból számított érték nagyobb mint a megengedett érték.
Ergo ne csak azt a szöveget tedd a tömörített állomány elé, de olyan négy byte-ot is, hogy azokkal ne lépd túl az adott nagyságot.
Nincs Dovecot-om, de ezzel már mennie kell annak amit akarsz.