[Dovecot] dovecot with maildir not using mtime on reindex

Richard Platel rplatel at tucows.com
Thu Feb 20 18:57:21 UTC 2014


Furthermore: it seems the behaviour is correct (mtime is used for internaldate) if the message is not compressed.

On Feb 20, 2014, at 12:09 PM, Richard Platel <rplatel at tucows.com> wrote:

> Hi.
> 
> It seems that dovecot is using the current time, not a maildir file's mtime for INTERNALDATE when a message is re-indexed:
> 
> $ cd Index
> $ rm -rf .INBOX
> $ cd ../Maildir/cur
> $ stat *
>  File: `1392914632.P54451Q0M08633.smtpin01,S=2215,W=2249:2,'
>  Size: 960             Blocks: 8          IO Block: 1048576 regular file
> Device: 36h/54d Inode: 11132959    Links: 1
> Access: (0600/-rw-------)  Uid: (    8/    mail)   Gid: (    8/    mail)
> Access: 2012-01-01 00:00:00.000000000 +0000
> Modify: 2012-01-01 00:00:00.000000000 +0000
> Change: 2014-02-20 16:46:20.000000000 +0000
> Birth: -
> $ telnet imap01 143
> Trying 10.5.45.1...
> Connected to imap01.dev.firefly.tucows.com.
> Escape character is '^]'.
> * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
> A LOGIN rplatel at ff-dev.com ********
> A OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE QUOTA] Logged in
> A SELECT INBOX
> * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
> * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
> * 1 EXISTS
> * 0 RECENT
> * OK [UNSEEN 1] First unseen.
> * OK [UIDVALIDITY 1265835133] UIDs valid
> * OK [UIDNEXT 4548] Predicted next UID
> A OK [READ-WRITE] Select completed (0.035 secs).
> A FETCH 1:* FULL
> * 1 FETCH (FLAGS () INTERNALDATE "20-Feb-2014 16:59:51 +0000" RFC822.SIZE 2249 ENVELOPE ("Thu, 20 Feb 2014 11:43:50 -0500" "Test message" (("Richard Platel" NIL "rplatel" "tucows.com")) (("Richard Platel" NIL "rplatel" "tucows.com")) (("Richard Platel" NIL "rplatel" "tucows.com")) ((NIL NIL "rplatel" "ff-dev.com")) NIL NIL NIL "<BED6EB46-CC88-4BDB-AE8B-98C1CDEAD67C at tucows.com>") BODY ("text" "plain" ("charset" "us-ascii") NIL NIL "7bit" 23 4))
> A OK Fetch completed.
> A LOGOUT
> * BYE Logging out
> A OK Logout completed.
> Connection closed by foreign host.
> $ date
> Thu Feb 20 16:59:58 UTC 2014
> 
> Stracing the imap process, it seems dovecot does not stat the message file at all.  Performing the above with an old dovecot 1 server yields the expected result, the INTERNALDATE of the message is the file's mtime.
> 
> $ dovecot -n -c /he/dovecot/conf/dovecot.conf
> # 2.2.10.3: /he/dovecot/conf/dovecot.conf
> # OS: Linux 3.4.46-dom0-2.0.0 x86_64 Debian 7.0
> debug_log_path = syslog
> disable_plaintext_auth = no
> first_valid_uid = 8
> info_log_path = syslog
> lock_method = dotlock
> log_timestamp =
> mail_fsync = always
> mail_gid = mail
> mail_nfs_index = yes
> mail_nfs_storage = yes
> mail_plugins = zlib quota tc_mail_log notify tc_proc
> mail_temp_dir = /var/run/dovecot_tmp
> mail_uid = mail
> maildir_very_dirty_syncs = 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 ihave
> mmap_disable = yes
> namespace inbox {
>  inbox = yes
>  location =
>  prefix =
> }
> passdb {
>  args = host=localhost port=1143 username=%L{user}::%L{service}::%L{rip}::%L{session}
>  driver = imap
> }
> plugin {
>  antispam_backend = pipe
>  antispam_debug_target = syslog
>  antispam_pipe_program = /he/dovecot/utils/he_spamtrain.pl
>  antispam_pipe_program_args = --user=%u
>  antispam_pipe_program_notspam_arg = --falsepositive
>  antispam_pipe_program_spam_arg = --missed
>  antispam_pipe_tmpdir = /var/run/dovecot_as_tmp
>  antispam_signature_missing = move
>  antispam_spam = Spam;Inbox.Spam;INBOX.Spam;Junk;INBOX.Junk
>  antispam_trash_pattern_ignorecase = trash
>  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename flag_change append
>  mail_log_fields = uid box msgid flags hetag
>  memcached_servers = 10.5.47.223,10.5.47.222
>  zlib_save = gz
>  zlib_save_level = 6
> }
> protocols = imap pop3
> service anvil {
>  unix_listener anvil-auth-penalty {
>    mode = 00
>  }
> }
> service imap-login {
>  inet_listener imap {
>    address = 0
>  }
>  inet_listener imaps {
>    port = 0
>  }
>  process_limit = 29
>  process_min_avail = 14
>  service_count = 0
> }
> service imap-postlogin {
>  executable = script-login -d /he/dovecot/utils/post_login.sh
> }
> service imap {
>  executable = imap imap-postlogin
>  process_limit = 1270
>  vsz_limit = 0
> }
> service pop3-login {
>  inet_listener pop3 {
>    address = 0
>  }
>  inet_listener pop3s {
>    port = 0
>  }
>  process_limit = 29
>  process_min_avail = 14
>  service_count = 0
> }
> service pop3-postlogin {
>  executable = script-login -d /he/dovecot/utils/post_login.sh
> }
> service pop3 {
>  executable = pop3 pop3-postlogin
>  process_limit = 206
>  vsz_limit = 512 M
> }
> ssl = no
> userdb {
>  args = /he/dovecot/conf/dovecot-tc-dict-auth.conf
>  driver = dict
> }
> verbose_proctitle = yes
> protocol imap {
>  mail_max_userip_connections = 30
>  mail_plugins = zlib quota tc_mail_log notify tc_proc imap_quota antispam
> }
> protocol pop3 {
>  mail_max_userip_connections = 30
>  pop3_uidl_format = %08Xv%08Xu
> }



More information about the dovecot mailing list