Re: [EXT] Re: Corrupted sizes using zlib plugin

2023-03-16 Thread Tim Evers




Am 06.03.23 um 16:45 schrieb Aki Tuomi:

On 06/03/2023 16:52 EET Tim Evers  wrote:

  
Am 06.03.23 um 15:29 schrieb Aki Tuomi:

On 06/03/2023 15:56 EET Tim Evers  wrote:

   
Am 06.03.23 um 14:49 schrieb Aki Tuomi:

On 06/03/2023 15:45 EET Tim Evers  wrote:


Am 06.03.23 um 14:00 schrieb Aki Tuomi:

On 06/03/2023 13:06 EET Tim Evers  wrote:

 
Am 06.03.23 um 11:59 schrieb Aki Tuomi:



On 06/03/2023 12:44 EET Tim Evers  wrote:

  
Am 06.03.23 um 11:42 schrieb Aki Tuomi:



On 06/03/2023 12:32 EET Tim Evers  wrote:

   
Hi,


since I did not get any feedback on my bug report post regarding
corrupted sizes while using zlib
(https://dovecot.org/pipermail/dovecot/2023-February/126105.html) I
would like to confirm that this bug report reached someone in charge.

Or if not - I would kindly ask for directions on how to post it in a way
that spawns some action.

Thx

Tim

Can you try erasing dovecot.index.cache and see if the problem fixes itself? 
It's possible your cache contains invalid values from old errors.

Aki

Did that already several times (other dovecot.index.* files too). The
only thing that helps is actually deleting the dovecot-uidlist file but
the problem returns.

Tim

I think it's because the value on the filename is wrong. The filename contains 
the virtual and physical size.

Can you try if https://github.com/dovecot/tools/blob/main/maildir-size-fix.pl 
fixes your issue?

Aki

Quoting

https://doc.dovecot.org/configuration_manual/zlib_plugin/ :

"All mails must have ,|S=|in their filename where  contains
the original uncompressed mail size, otherwise there will be problems
with quota calculation as well as other potential random failures."

And the script you send:

"# Check if the files are compressed. Use the uncompressed size for S=size."

Which it does in my example. S= contains the uncompressed size, not the
size on disk. Is this not correct? All Files are written exclusively by
dovecot, no other software is involved.

Tim

Can you send output from `doveconf -n`? I am having suspicion that zlib plugin 
isn't always involved in your config, which causes the compressed file to be 
cached wrongly. Especially it feels like your IMAP protocol does not have 
compression on while LMTP does.

Aki

Actually it is the other way round (I removed zlib from lmtp to reduce
the impact of the problem):

# 2.3.20 (80a5ac675d): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.20 (149edcf2)
# OS: Linux 4.15.0-204-generic x86_64 Ubuntu 18.04.6 LTS
# Hostname: node2.mst27.artfiles.de
auth_verbose = yes
auth_worker_max_count = 1000
default_client_limit = 5000
dict {
  sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
import_environment = TZ CLUSTERNAME
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_location = maildir:~/Maildir
mail_plugins = " mail_log notify old_stats"
mailbox_idle_check_interval = 10 mins
maildir_broken_filename_sizes = yes
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 mime foreverypart
extracttext editheader imapsieve vnd.dovecot.imapsieve
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix = INBOX.
  separator = .
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  imapsieve_mailbox1_before = file:~/af_report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = INBOX.Junk
  imapsieve_mailbox2_before = file:~/af_report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = INBOX.Junk
  imapsieve_mailbox2_name = *
  quota = dict:User quota::proxy::sqlquota
  quota_rule = *:storage=0:messages=0
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_before = file:~/af_master.sieve
  sieve_before2 = file:~/af_konto.sieve
  sieve_before3 = file:~/af_domain.sieve
  sieve_before4 = file:~/af_spamfilter.sieve
  sieve_extensions = +editheader
  sieve_filter_bin_dir = /usr/local/bin/sieve
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.filter
+vnd.dovecot.environment
  sieve_max_redirects = 100
  sieve_pipe_bin_dir = /usr/local/bin/sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
  stats_refresh = 30 secs
  zlib_save = gz
  zlib_save_level = 6
}
pop3_no_flag_upd

Re: Corrupted sizes using zlib plugin

2023-03-06 Thread Tim Evers

Am 06.03.23 um 11:59 schrieb Aki Tuomi:


On 06/03/2023 12:44 EET Tim Evers  wrote:

  
Am 06.03.23 um 11:42 schrieb Aki Tuomi:



On 06/03/2023 12:32 EET Tim Evers  wrote:

   
Hi,


since I did not get any feedback on my bug report post regarding
corrupted sizes while using zlib
(https://dovecot.org/pipermail/dovecot/2023-February/126105.html) I
would like to confirm that this bug report reached someone in charge.

Or if not - I would kindly ask for directions on how to post it in a way
that spawns some action.

Thx

Tim

Can you try erasing dovecot.index.cache and see if the problem fixes itself? 
It's possible your cache contains invalid values from old errors.

Aki

Did that already several times (other dovecot.index.* files too). The
only thing that helps is actually deleting the dovecot-uidlist file but
the problem returns.

Tim

I think it's because the value on the filename is wrong. The filename contains 
the virtual and physical size.

Can you try if https://github.com/dovecot/tools/blob/main/maildir-size-fix.pl 
fixes your issue?

Aki


Quoting

https://doc.dovecot.org/configuration_manual/zlib_plugin/ :

"All mails must have ,|S=|in their filename where  contains 
the original uncompressed mail size, otherwise there will be problems 
with quota calculation as well as other potential random failures."


And the script you send:

"# Check if the files are compressed. Use the uncompressed size for S=size."

Which it does in my example. S= contains the uncompressed size, not the 
size on disk. Is this not correct? All Files are written exclusively by 
dovecot, no other software is involved.


Tim



Re: Corrupted sizes using zlib plugin

2023-03-06 Thread Tim Evers



Am 06.03.23 um 11:42 schrieb Aki Tuomi:


On 06/03/2023 12:32 EET Tim Evers  wrote:

  
Hi,


since I did not get any feedback on my bug report post regarding
corrupted sizes while using zlib
(https://dovecot.org/pipermail/dovecot/2023-February/126105.html) I
would like to confirm that this bug report reached someone in charge.

Or if not - I would kindly ask for directions on how to post it in a way
that spawns some action.

Thx

Tim

Can you try erasing dovecot.index.cache and see if the problem fixes itself? 
It's possible your cache contains invalid values from old errors.

Aki


Did that already several times (other dovecot.index.* files too). The 
only thing that helps is actually deleting the dovecot-uidlist file but 
the problem returns.


Tim



Corrupted sizes using zlib plugin

2023-03-06 Thread Tim Evers

Hi,

since I did not get any feedback on my bug report post regarding 
corrupted sizes while using zlib 
(https://dovecot.org/pipermail/dovecot/2023-February/126105.html) I 
would like to confirm that this bug report reached someone in charge.


Or if not - I would kindly ask for directions on how to post it in a way 
that spawns some action.


Thx

Tim



Re: Corrupted sizes in cache once again

2023-02-15 Thread Tim Evers

Hi again,

so this is the actual bug report :)

I installed 2.3.20 from repo yet the errors persist.

I made the following observations:

For a mailbox producing the "broken physical size" messages the culprit 
seems not to be the index.cache file but the dovecot-uidlist file. 
Removing the cache file does nothing regarding the bug while removing 
the dovecot-uidlist file immediately cleared the errors and all 
subsequent access went through without error.


An example of an uidlist entry *with* errors:

70755 G1674471014.M447254P8688.node2 S937 
:1674471014.M447254P8688.node2,S=1693,W=1730


Note: the S937 entry. This is definitely wrong.

Same mail *without* the errors (dovecot-uidlist auto-recreated after 
deletion):


76040 :1674471014.M447254P8688.node2,S=1693,W=1730

Errors in log (domain anonymized):

Feb 15 21:02:57 node2 dovecot: 
imap(local_u...@domain.com)<36929>: Error: Mailbox 
INBOX.Trash: Deleting corrupted cache record uid=70755: UID 70755: 
Broken physical size in mailbox INBOX.Trash: 
read(compress(/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/cur/1674471014.M447254P8688.node2,S=1693,W=1730:2,)) 
failed: Cached message size smaller than expected (937 < 1693, 
box=INBOX.Trash, UID=70755)
Feb 15 21:02:57 node2 dovecot: 
imap(local_u...@domain.com)<36929>: Error: Mailbox 
INBOX.Trash: UID=70755: 
read(compress(/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/cur/1674471014.M447254P8688.node2,S=1693,W=1730:2,)) 
failed: Cached message size smaller than expected (937 < 1693, 
box=INBOX.Trash, UID=70755) (read reason=)


Note: reported physical size from "cache", 937 is the compressed size on 
disk. Decompressed size is 1693.


Excerpt from strace (full strace  attached):

36929 openat(AT_FDCWD, 
"/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/dovecot.index.cache", 
O_RDWR) = -1 ENOENT (No such file or directory)
36929 openat(AT_FDCWD, 
"/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/cur/1674471014.M447254P8688.node2,S=1693,W=1730:2,", 
O_RDONLY) = 20

36929 fstat(20, {st_mode=S_IFREG|0600, st_size=937, ...}) = 0
36929 pread64(20, 
"\37\213\10\0\0\0\0\0\0\3\255\224]O\3438\30\205\257\311\257\260\346\252hI\326\316g\223\231\2I\232\360!\272Ci\27\255\26\241\310M\334\326C\342tl\247|\374\372y\303\262\2\26\0207\233H\215\353\274\366y\217\237\243\\\260\222\361-\253\"\264\224m\203\32\312\353\266\323\266E\245^\362\232)\253bhpeS\214#\262\f\206\21]b;\212\354\360z\327\330Y\334?\326saclU\345F1\271e\262_q\313\365\0321\325\350\215B\203\371\331\214XN\224\245\343\343\254\230e\351\271\355\371\27\244(.fqq>\233\365O\230?\216a\272(\342lV\364\203\243t\22\301\23T\6\331\35o\220k\205\256e\303_^!\262"..., 
8192, 0) = 937
36929 openat(AT_FDCWD, 
"/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/dovecot.index.cache", 
O_RDWR) = -1 ENOENT (No such file or directory)
36929 openat(AT_FDCWD, 
"/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/dovecot.index.cache", 
O_RDWR) = -1 ENOENT (No such file or directory)

36929 alarm(180)    = 0
36929 fcntl(16, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, 
l_len=0}) = 0

36929 alarm(0)  = 180
36929 
stat("/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/dovecot.index.log", 
{st_mode=S_IFREG|0600, st_size=144, ...}) = 0

36929 fstat(16, {st_mode=S_IFREG|0600, st_size=144, ...}) = 0
36929 write(16, 
"\200\200\200\203\0\0\10\0208\0\0\0\200\200\200\207@\0\0\20\2\0\0\0002\315\321\\\0\0\0\0\4\0\4\0\1\0\0\0\200\200\200\204\0\2\0\20c\24\1\0\0\0\0\0", 
56) = 56
36929 fcntl(16, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=0, 
l_len=0}) = 0
36929 
stat("/home/mail/domains/v/a/domain.com/local_user/Maildir/.Trash/dovecot.index.log", 
{st_mode=S_IFREG|0600, st_size=200, ...}) = 0

36929 fstat(16, {st_mode=S_IFREG|0600, st_size=200, ...}) = 0
36929 write(2, "\1\30436929 47 
imap(local_u...@domain.com)<36929>: Mailbox 
INBOX.Trash: Deleting corrupted cache record uid=70755: UID 70755: 
Broken physical size in mailbox INBOX.Trash: read(compress(/home/ma"..., 
389) = 389


No crash, no core, no backtrace.

That's what I found so far. I have no idea how the S937 made it into the 
uidlist file. The email itself seems to be uploaded (not imap copied) 
through Outlook, which mangled the received headers in the process. 
Don't know if that is of any significance, but they are no longer in 
chronologically descending order.


Please not that in the config zlib is off for lmtp to reduce the impact 
of this issue. It was on when this mail was delivered.


I will be more than happy to provide further information.

Thanks

Tim

Am 02.02.23 um 16:23 schrieb Aki Tuomi:

On 02/02/2023 17:19 EET Stuart Henderson  wrote:

  
On 2023-02-01, Tim Evers  wrote:

I run a fairly large Dovecot Installation (around 100k mailboxes) on
sever

Re: Corrupted sizes in cache once again

2023-02-02 Thread Tim Evers
Maybe I was a bit unclear: I have about 1000 error messages per day from 
random accounts (about 500 in total so far) on all clusters. These are 
transparent to the user, so it's more like background noise at the moment.


No VM involved. All machines are baremetal DRBD two-node clusters.

As far as I see it I can not nail it down to specific accounts, POP3 vs. 
IMAP, LMTP delivery vs. IMAP store or Sieve vs. non-Sieve etc.


Tim

Am 02.02.23 um 17:55 schrieb Christopher Wensink:
Can you isolate the problem account on a separate VM to see if the 
problem follows the account or the original vm?


Chris

On 2/2/2023 9:58 AM, Tim Evers wrote:
Good point - these are 8 diferrent DRBD clusters. I failed over one 
testing this theory. Problem persists.


So I would rule out underlying issues.

Especially since the "wrong" value is suspiciously often the on-disk 
size rather than a random value one would expect if there is 
corruption underneath.


Tim

Am 02.02.23 um 16:43 schrieb Christopher Wensink:
Something to try, this all could be happening because of underlying 
disk failure on the array it is running on.  If this is a VM, can 
you move the operation to another host or data store to rule out 
hardware issues?


On 2/2/2023 9:19 AM, Stuart Henderson wrote:

On 2023-02-01, Tim Evers  wrote:

I run a fairly large Dovecot Installation (around 100k mailboxes) on
several servers.

gzip compression is on.

Every once in a while I get the dreaded "cache corruption" 
messages in

the log:

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3868: Broken physical 
size

in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674129792.M797543P21755.node2,S=8099,W=8276:2,)) 


failed: Cached message size smaller than expected (2877 < 8099,
box=INBOX, UID=3868)

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3875: Broken physical 
size

in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674212201.M985809P29112.node2,S=13907,W=14121:2,)) 


failed: Cached message size smaller than expected (5533 < 8192,
box=INBOX, UID=3875)

The first entry shows 2877 (size on disk) vs. 8099 (real size 
unzipped,

also in the filename: S=8099).

The second entry shows 5533 (size on disk) vs. 8192 - this is not
correct in any way. Size on disk is 13907 as noted in the filename.

Both mails were delivered trough LMTP and retrieved by the POP3 
service.


Anyone with an idea what might be happening here? I've read all
available info in the doc and in the previous discussions / bug 
reports,
but nothing seems to match my case. And where does that 8192 come 
from -

it looks suspicious?

Version is 2.3.7.2 (Ubuntu 20.04)
2.3.7.2 is rather old now. There were definitely fixes regarding 
compression
around the 2.3.10-2.3.12 timeframe or thereabouts (I forget all the 
details
but it took a release or two before some remaining issues were 
sorted out
after changes in the area). I'd be looking to get it updated to a 
current

version first.









Re: Corrupted sizes in cache once again

2023-02-02 Thread Tim Evers
Good point - these are 8 diferrent DRBD clusters. I failed over one 
testing this theory. Problem persists.


So I would rule out underlying issues.

Especially since the "wrong" value is suspiciously often the on-disk 
size rather than a random value one would expect if there is corruption 
underneath.


Tim

Am 02.02.23 um 16:43 schrieb Christopher Wensink:
Something to try, this all could be happening because of underlying 
disk failure on the array it is running on.  If this is a VM, can you 
move the operation to another host or data store to rule out hardware 
issues?


On 2/2/2023 9:19 AM, Stuart Henderson wrote:

On 2023-02-01, Tim Evers  wrote:

I run a fairly large Dovecot Installation (around 100k mailboxes) on
several servers.

gzip compression is on.

Every once in a while I get the dreaded "cache corruption" messages in
the log:

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3868: Broken physical size
in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674129792.M797543P21755.node2,S=8099,W=8276:2,)) 


failed: Cached message size smaller than expected (2877 < 8099,
box=INBOX, UID=3868)

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3875: Broken physical size
in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674212201.M985809P29112.node2,S=13907,W=14121:2,)) 


failed: Cached message size smaller than expected (5533 < 8192,
box=INBOX, UID=3875)

The first entry shows 2877 (size on disk) vs. 8099 (real size unzipped,
also in the filename: S=8099).

The second entry shows 5533 (size on disk) vs. 8192 - this is not
correct in any way. Size on disk is 13907 as noted in the filename.

Both mails were delivered trough LMTP and retrieved by the POP3 
service.


Anyone with an idea what might be happening here? I've read all
available info in the doc and in the previous discussions / bug 
reports,
but nothing seems to match my case. And where does that 8192 come 
from -

it looks suspicious?

Version is 2.3.7.2 (Ubuntu 20.04)
2.3.7.2 is rather old now. There were definitely fixes regarding 
compression
around the 2.3.10-2.3.12 timeframe or thereabouts (I forget all the 
details
but it took a release or two before some remaining issues were sorted 
out
after changes in the area). I'd be looking to get it updated to a 
current

version first.







Re: Corrupted sizes in cache once again

2023-02-02 Thread Tim Evers



Am 02.02.23 um 16:23 schrieb Aki Tuomi:

On 02/02/2023 17:19 EET Stuart Henderson  wrote:

  
On 2023-02-01, Tim Evers  wrote:

I run a fairly large Dovecot Installation (around 100k mailboxes) on
several servers.

gzip compression is on.

Every once in a while I get the dreaded "cache corruption" messages in
the log:

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3868: Broken physical size
in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674129792.M797543P21755.node2,S=8099,W=8276:2,))
failed: Cached message size smaller than expected (2877 < 8099,
box=INBOX, UID=3868)

Error: Corrupted record in index cache file
/[redacted]/Maildir/dovecot.index.cache: UID 3875: Broken physical size
in mailbox INBOX:
read(zlib(/[redacted]/Maildir/cur/1674212201.M985809P29112.node2,S=13907,W=14121:2,))
failed: Cached message size smaller than expected (5533 < 8192,
box=INBOX, UID=3875)

The first entry shows 2877 (size on disk) vs. 8099 (real size unzipped,
also in the filename: S=8099).

The second entry shows 5533 (size on disk) vs. 8192 - this is not
correct in any way. Size on disk is 13907 as noted in the filename.

Both mails were delivered trough LMTP and retrieved by the POP3 service.

Anyone with an idea what might be happening here? I've read all
available info in the doc and in the previous discussions / bug reports,
but nothing seems to match my case. And where does that 8192 come from -
it looks suspicious?

Version is 2.3.7.2 (Ubuntu 20.04)

2.3.7.2 is rather old now. There were definitely fixes regarding compression
around the 2.3.10-2.3.12 timeframe or thereabouts (I forget all the details
but it took a release or two before some remaining issues were sorted out
after changes in the area). I'd be looking to get it updated to a current
version first.

For bug reports, we do ask that you try to reproduce it with 2.3.20 (current 
latest), you can get packages from https://repo.dovecot.org/ and would be nice 
if you can provide steps to reproduce this issue.

Also please see https://www.dovecot.org/bugreport-mail/ if you have not yet.

Aki


This is not a bug report (yet) - I am asking for ideas to narrow down 
the issue myself. I would not expect something this obvious and 
prevalent being a bug in a 10+ years old subsystem (zlib).


Tim



Re: Corrupted sizes in cache once again

2023-02-01 Thread Tim Evers

I would like to add some more observations:


I hav another mailbox with one mail's size being saved wrong in the 
cache file:



doveadm dump:

RECORD: seq=40, uid=1202, flags=0x00
 - ext 5 cache :   8504 (3821)
 - ext 6 vsize : 145625 (d9380200)
   : vsize = 5166845802713
   : highest_uid   = 0
   : message_count = 8716
 - cache offset=8504 size=212, prev_offset = 0
    - hdr.From: 42: From: [redacted]
    - hdr.Message-ID: 45: Message-ID:  [redacted]
    - hdr.Subject: 44: Subject:  [redacted]
    - flags: (2000)

RECORD: seq=41, uid=1203, flags=0x00
 - ext 5 cache :   8716 (0c22)
 - ext 6 vsize : 105141 (b59a0100)
   : vsize = 105141
   : highest_uid   = 0
   : message_count = 0
 - cache offset=8716 size=280, prev_offset = 0
    - hdr.From: 104: From:  [redacted]
    - hdr.Message-ID: 108: Message-ID:  [redacted]
    - hdr.Subject: 105: Subject:  [redacted]
    - flags: (2000)

The message with seq=40 is the mail dovecot complains about:


Error: Corrupted record in index cache file 
/[redacted]/Maildir/dovecot.index.cache: UID 1202: Broken physical size 
in mailbox INBOX: 
read(zlib(/[redacted]/Maildir/new/1675176154.M829333P14495.node2,S=232816,W=236045)) 
failed: Cached message size smaller than expected (145082 < 146788, 
box=INBOX, UID=1202)



Size on disk is 145082


Size after decompression is 232816 (as expected)


Message with seq=41 is correct with both vsize in cache and decompressed 
size being equal.



Before the POP3 access that produced the error both mails were only ever 
touched by the dovecot lmtp delivery process.



Am 01.02.23 um 14:13 schrieb Tim Evers:

Hi,

I run a fairly large Dovecot Installation (around 100k mailboxes) on 
several servers.


gzip compression is on.

Every once in a while I get the dreaded "cache corruption" messages in 
the log:


Error: Corrupted record in index cache file 
/[redacted]/Maildir/dovecot.index.cache: UID 3868: Broken physical 
size in mailbox INBOX: 
read(zlib(/[redacted]/Maildir/cur/1674129792.M797543P21755.node2,S=8099,W=8276:2,)) 
failed: Cached message size smaller than expected (2877 < 8099, 
box=INBOX, UID=3868)


Error: Corrupted record in index cache file 
/[redacted]/Maildir/dovecot.index.cache: UID 3875: Broken physical 
size in mailbox INBOX: 
read(zlib(/[redacted]/Maildir/cur/1674212201.M985809P29112.node2,S=13907,W=14121:2,)) 
failed: Cached message size smaller than expected (5533 < 8192, 
box=INBOX, UID=3875)


The first entry shows 2877 (size on disk) vs. 8099 (real size 
unzipped, also in the filename: S=8099).


The second entry shows 5533 (size on disk) vs. 8192 - this is not 
correct in any way. Size on disk is 13907 as noted in the filename.


Both mails were delivered trough LMTP and retrieved by the POP3 service.

Anyone with an idea what might be happening here? I've read all 
available info in the doc and in the previous discussions / bug 
reports, but nothing seems to match my case. And where does that 8192 
come from - it looks suspicious?


Version is 2.3.7.2 (Ubuntu 20.04)

doveconf -n excerpt:

protocol lmtp {
  mail_plugins = " old_stats mail_log notify zlib sieve quota"
}
protocol imap {
  mail_max_userip_connections = 50
  mail_plugins = " old_stats mail_log notify zlib imap_old_stats quota 
imap_quota imap_sieve"

}
protocol pop3 {
  mail_max_userip_connections = 50
  mail_plugins = " old_stats mail_log notify zlib"
}

Tim



Corrupted sizes in cache once again

2023-02-01 Thread Tim Evers

Hi,

I run a fairly large Dovecot Installation (around 100k mailboxes) on 
several servers.


gzip compression is on.

Every once in a while I get the dreaded "cache corruption" messages in 
the log:


Error: Corrupted record in index cache file 
/[redacted]/Maildir/dovecot.index.cache: UID 3868: Broken physical size 
in mailbox INBOX: 
read(zlib(/[redacted]/Maildir/cur/1674129792.M797543P21755.node2,S=8099,W=8276:2,)) 
failed: Cached message size smaller than expected (2877 < 8099, 
box=INBOX, UID=3868)


Error: Corrupted record in index cache file 
/[redacted]/Maildir/dovecot.index.cache: UID 3875: Broken physical size 
in mailbox INBOX: 
read(zlib(/[redacted]/Maildir/cur/1674212201.M985809P29112.node2,S=13907,W=14121:2,)) 
failed: Cached message size smaller than expected (5533 < 8192, 
box=INBOX, UID=3875)


The first entry shows 2877 (size on disk) vs. 8099 (real size unzipped, 
also in the filename: S=8099).


The second entry shows 5533 (size on disk) vs. 8192 - this is not 
correct in any way. Size on disk is 13907 as noted in the filename.


Both mails were delivered trough LMTP and retrieved by the POP3 service.

Anyone with an idea what might be happening here? I've read all 
available info in the doc and in the previous discussions / bug reports, 
but nothing seems to match my case. And where does that 8192 come from - 
it looks suspicious?


Version is 2.3.7.2 (Ubuntu 20.04)

doveconf -n excerpt:

protocol lmtp {
  mail_plugins = " old_stats mail_log notify zlib sieve quota"
}
protocol imap {
  mail_max_userip_connections = 50
  mail_plugins = " old_stats mail_log notify zlib imap_old_stats quota 
imap_quota imap_sieve"

}
protocol pop3 {
  mail_max_userip_connections = 50
  mail_plugins = " old_stats mail_log notify zlib"
}

Tim



Environment Variable Expansion

2016-04-04 Thread Tim Evers
System: Debian Jessie

I'm trying to put an environment variable in the sql config like:

password_query = SELECT userid AS user, crypt AS password, maildir as
userdb_home, 500 as userdb_uid, 500 as userdb_gid FROM local_account
WHERE userid = '%u' and mbox_host = '%{env:CLUSTERNAME}' \
and ( ( imap_aktiv='1' and '%s'='imap' ) or ( pop_aktiv='1' and
'%s'='pop3' ) or ( sieve_aktiv='1' and '%s'='sieve' ) ) \
and aktiv_abruf='1'

My variable is

%{env:CLUSTERNAME}

CLUSTERNAME is set through /etc/default/dovecot. I tried setting the
import_environment config variable to

TZ CLUSTERNAME

but that changed nothing.

When I execute this through a login attempt, I see the following in the
tcpflow output:

SELECT userid AS user, crypt AS password, maildir as userdb_home, 508 as
userdb_uid, 503 as userdb_gid FROM local_account WHERE userid = 'te' and
mbox_host = 'env:CLUSTERNAME}' and ( ( imap_aktiv='1' and 'pop3'='imap'
) or ( pop_aktiv='1' and 'pop3'='pop3' ) or ( sieve_aktiv='1' and
'pop3'='sieve' ) ) and aktiv_abruf='1'

So

%{env:CLUSTERNAME}

was parsed to

env:CLUSTERNAME}

which is not what the doc (http://wiki.dovecot.org/Variables) says, and
it also seems like the parser somehow sees this as a short variable
(removing %+{).

Any hints what might be happening here / how I can make it work.

Regards,

Tim