On Fri, 2009-11-13 at 20:25 +0000, Darren Latter wrote:
Hi Timo,
When deleting the index files they get regenerated with the current time. All email in the inbox then is shown with correct time.
-rw------- 2 XX mail 9924 Nov 13 20:21 .nfs.20052ab0.544d -rw------- 2 XX mail 67584 Nov 13 20:21 .nfs.20052ab3.544d drwx------ 2 XX mail 16384 Nov 13 20:20 cur -rw------- 1 XX mail 244 Nov 13 20:20 dovecot-keywords -rw------- 1 XX staff 5060 Nov 13 20:20 dovecot-uidlist -rw------- 1 XX staff 8 Nov 13 20:20 dovecot-uidvalidity -rw------- 1 XX mail 0 Jul 8 2037 dovecot-uidvalidity.4afdbfa4 -rw------- 1 XX staff 1688 Nov 13 20:21 dovecot.index -rw------- 2 XX mail 67584 Nov 13 20:21 dovecot.index.cache -rw------- 2 XX mail 9924 Nov 13 20:21 dovecot.index.log
The mail files are in new/ or cur/ directory. Those are the timestamps that matter, not the ones above.
New incoming email still has same issue - the email client will show either the correct time or the 2037 date. When checking the email headers - dates/times are correct.
Do you have idxview utility somewhere (probably in the same dir as e.g. imap binary)? You could then see what "idxview dovecot.index" says. Anyway, this sounds like a NFS-related bug. Dovecot gets saved message's time by fstat()ing the created file. Sounds like the fstat() returns mtime in future.. Probably because the hasn't actually been flushed to disk because it hasn't been close()d or fsync()ed yet.
I could probably write a patch to Dovecot that fsync()s first, then fstat()s to get the mtime. But since you're using Apple's Dovecot version that probably wouldn't help much.