Dovecot supports SAVEDATE IMAP extension [1].
This is however not implemented correctly for Maildir storage.

Compared to "internal date", "save date" is supposed to be the same
but well-defined for APPEND and preserved when COPY command is used.

However, for Maildir storage INTERNALDATE is implemented
using mtime (modification timestamp)
and SAVEDATE is implemented using ctime (status change timestamp) [2].
ctime is changed even more often than mtime.
For example, chown or chmod operations on the message change its
ctime, but preserve its mtime.

Dovecot should instead use btime (creation timestamp) when it is available
and not implement SAVEDATE at all if there is no btime.

Just one example of the message in Maildir:

stat 1708031310.M769290P3712350.nine,S=7898,W=8002:2,Sa
  File: 1708031310.M769290P3712350.nine,S=7898,W=8002:2,Sa
  Size: 7898            Blocks: 16         IO Block: 4096   regular file
Device: 9,2     Inode: 7864351     Links: 1
Access: (0600/-rw-------)  Uid: (  999/   vmail)   Gid: (  996/   vmail)
Access: 2024-02-16 08:34:04.374097798 +0100
Modify: 2024-02-15 22:08:30.769813368 +0100
Change: 2024-02-21 13:39:14.878163244 +0100
 Birth: 2024-02-15 22:08:30.769813368 +0100

Its Birth date (btime) and Modify date (mtime) are the same, but Change date 
(ctime)
was changed, likely by someone doing chown/chmod manually.

You can read more in the issue [3] where we have problems with incorrect 
INTERNALDATE
and investigated the possibility of using SAVEDATE, but found that it is not 
implemented correctly
and is changed even more often than INTERNALDATE. According to the standard it 
should be the other way round,
SAVEDATE should be more stable and survive COPY.

[1] <https://www.rfc-editor.org/rfc/rfc8514.html>
[2] 
<https://github.com/dovecot/core/blob/93eb0663336b17f66a67324de43e64bf0bc796c1/src/lib-storage/index/maildir/maildir-mail.c#L152-L182>
[3] <https://github.com/deltachat/deltachat-core-rust/issues/5339>
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org

Reply via email to