Dovecot/K9/Thunderbird IMAP interaction issues: replicated messages, constant reloading (TB) & missing new messages (K-9)

David Gessel gessel at blackrosetech.com
Tue Jul 15 21:21:14 UTC 2014


-------- Original Message --------
Subject: Re: Dovecot/K9/Thunderbird IMAP interaction issues: replicated
messages, constant reloading (TB) & missing new messages (K-9)
From: David Gessel <gessel at blackrosetech.com>
To: Alex JOST <jost+lists at dimejo.at>, dovecot at dovecot.org
Date: Tue Jul 15 2014 15:08:31 GMT+0300 (Arabic Standard Time)

> -------- Original Message --------
> Subject: Re: Dovecot/K9/Thunderbird IMAP interaction issues: replicated
> messages, constant reloading (TB) & missing new messages (K-9)
> From: Alex JOST <jost+lists at dimejo.at>
> To: dovecot at dovecot.org
> Date: Tue Jul 15 2014 13:30:31 GMT+0300 (Arabic Standard Time)
> 
>> Am 15.07.2014 03:12, schrieb David Gessel:
>>> * In thunderbird, I get constant downloading of messages.  Every time I
>>> switch to the inbox from another folder, the messages start
>>> redownloading.  This sometimes, but not always, seems to create
>>> duplicate messages, but I'm now fairly sure they are only created in the
>>> client and not on the server.  Searching through various forums, it
>>> appears  this has been a problem for Thunderbird for some time, but it
>>> wasn't for me on Courier.  As posts about similar errors seem to have
>>> petered out over the last year without any clear guidance on how to fix
>>> it that I could find, I expect there's a simple fix I just haven't found
>>> yet, either in TB configuration or in Dovecot.  Any hints? I tried
>>> Thunderfix to remove the .msf files and will be redownloading my mail
>>> over the thin pipe out to Iraq for the next 6 months (DOH!). One
>>> artifact is that when I restart thunderbird, my inbox is reported as
>>> having about 130 messages in it, then thunderbird starts redownloading
>>> headers and eventually gets back up to the 1297 currently listed both in
>>> the TB pane and by ls | wc -l in /cur.  Is it possible there is a time
>>> out that needs to be extended?  In TB, I've set (among other less
>>> apparently relevant options)
>>> mailnews.tcptimeout;1000
>>> mail.db.idle_limit;30000000
>>
>> How old is your Thunderbird profile. Have you tried creating a new one
>> and see if the problem persists?
> 
> It is a new profile created with the transition from Cyrus to Dovecot
> about a week ago, but I used IMAPSync to move all my mail from the
> ancient Cyrus server to the shiny new Dovecot server.  I then deleted
> the old profile.
> 
>>
>> Thunderfix should not be needed by the way. Just right click on the
>> folder => Properties => Repair
> 
> I did see that, but first thought there was something magic about
> "thunderfix" then decided to use it anyway because I have annual
> sent/recieved archives from 2000 (and one for pre-2000) so that would
> have been a lotta right-clicking.
> 
>>
>>
>>> server # dovecot -n
>>> # 2.2.13: /usr/local/etc/dovecot/dovecot.conf
>>> # OS: FreeBSD 9.2-RELEASE amd64
>>> auth_default_realm = mydomain.com
>>> auth_mechanisms = plain login
>>> auth_realms = mydomain.com mydomain2.org
>>> disable_plaintext_auth = no
>>> first_valid_gid = 5000
>>> first_valid_uid = 5000
>>> hostname = mydomain.com
>>> imap_client_workarounds = tb-extra-mailbox-sep tb-lsub-flags
>>> imap_idle_notify_interval = 29 mins
>>> last_valid_gid = 5000
>>> last_valid_uid = 5000
>>> lda_mailbox_autocreate = yes
>>> listen = *
>>> mail_gid = 5000
>>> mail_location = maildir:~/:CONTROL=/var/no-quota/%u
>>> mail_plugins = quota mail_log notify
>>> mail_temp_dir = /var/tmp
>>> mail_uid = 5000
>>> 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 ihave duplicate spamtest spamtestplus editheader
>>> mbox_lazy_writes = no
>>> namespace inbox {
>>>    inbox = yes
>>>    location =
>>>    mailbox Drafts {
>>>      special_use = \Drafts
>>>    }
>>>    mailbox Junk {
>>>      special_use = \Junk
>>>    }
>>>    mailbox Sent {
>>>      special_use = \Sent
>>>    }
>>>    mailbox "Sent Messages" {
>>>      special_use = \Sent
>>>    }
>>>    mailbox Trash {
>>>      special_use = \Trash
>>>    }
>>>    prefix =
>>> }
>>> passdb {
>>>    args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
>>>    driver = sql
>>> }
>>> plugin {
>>>    expire = Trash
>>>    mail_log_events = delete undelete expunge copy mailbox_delete
>>> mailbox_rename
>>>    mail_log_fields = uid box msgid size
>>>    quota = maildir:User quota
>>>    quota_exceeded_message = Storage quota for this account has been
>>> exceeded, please try again later.
>>>    quota_rule = *:storage=50G
>>>    quota_rule2 = Trash:storage=+30%%
>>>    quota_rule3 = Sent:storage=+30%%
>>>    quota_warning = storage=90%% quota-warning 90 %u
>>>    quota_warning2 = storage=75%% quota-warning 75 %u
>>>    sieve = ~/.dovecot.sieve
>>>    sieve_before = /usr/local/etc/dovecot/sieve/
>>>    sieve_dir = ~/sieve
>>>    sieve_extensions = +spamtest +spamtestplus +relational
>>> +comparator-i;ascii-numeric +editheader
>>> }
>>> postmaster_address = gessel at mydomain.com
>>> protocols = imap lmtp sieve sieve
>>> sendmail_path = /usr/local/sbin/sendmail
>>> service auth {
>>>    unix_listener /var/spool/postfix/private/auth {
>>>      group = postfix
>>>      mode = 0666
>>>      user = postfix
>>>    }
>>>    unix_listener auth-userdb {
>>>      group = vmail
>>>      mode = 0600
>>>      user = vmail
>>>    }
>>> }
>>> service managesieve-login {
>>>    inet_listener sieve {
>>>      port = 4190
>>>    }
>>>    service_count = 1
>>>    vsz_limit = 128 M
>>> }
>>> service quota-warning {
>>>    executable = script /usr/local/bin/quota-warning.sh
>>>    unix_listener quota-warning {
>>>      user = vmail
>>>    }
>>>    user = vmail
>>> }
>>> ssl = required
>>> ssl_cert = </usr/local/etc/ca/server-cert.pem
>>> ssl_cipher_list =
>>> ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:!SSLv2
>>>
>>> ssl_key = </usr/local/etc/ca/server-unencrypted-key.pem
>>> ssl_prefer_server_ciphers = yes
>>> userdb {
>>>    driver = prefetch
>>> }
>>> userdb {
>>>    args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
>>>    driver = sql
>>> }
>>> protocol lda {
>>>    mail_plugins = quota mail_log notify sieve
>>> }
>>> protocol imap {
>>>    mail_max_userip_connections = 20
>>>    mail_plugins = quota mail_log notify imap_quota imap_zlib
>>> }
>>> protocol lmtp {
>>>    mail_plugins = quota mail_log notify sieve
>>> }
>>>
>>
>> I don't know if it makes a difference for you as you are not using
>> "LAYOUT=fs" but try to disable those imap_client_workarounds.
>>
> 
> Good catch, thank you. (I used LAYOUT=fs at first, but found behavior a
> little anomalous.  I forgot to disable the workarounds).
> 
> This may have stopped the problem of redownloading the entire mailbox
> (on restart I got  downloading 1 of 8 instead of 1 of 170... 30 of 1330
> in the status pane) .  My other mailboxes still need to sync and it
> might take a few days to verify that things are stable.  I did get 81
> immediate "Warning: Maildir /mail/mydomain.com/gessel//.Bulkmail:
> Expunged message reappeared, giving a new UID" warnings on connect, but
> if this is the problem, it might stop after all the directories are
> resynced.
> 
> I'll update with further data as it comes in.
> 
> I am also somewhat suspect of QRSYNC from this post:
> http://dovecot.org/pipermail/dovecot/2011-August/130687.html  - though
> this is from a long time ago and it seems a little surprising that bugs
> on this seemingly useful capability would persist.  In any event (if
> useful information), my capability enumeration reads:
> 
> # telnet localhost 143
> 
> * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE
> IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
> a login user pass
> 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 COMPRESS=DEFLATE QUOTA] Logged in
> 
> 
> I did try setting mail.server.default.use_condstore;false in
> Thunderbird, but that didn't change the behavior of reloading the entire
> inbox on startup so I've changed that back as that wasn't the desired
> result.
>

Disabling the imap_client_workarounds in TB ended up neither helping nor
harming.  The first sync was promising but as soon as that was finished
(it can take a while to download 8 messages to Iraq) it started over
re-downloading the entire mailbox.  I don't seem to be generating
duplicate messages, but I am redownloading every message over and over.
 My TB activity manager is filled with paused "bringing folder XXX up to
date" messages.

Is there any indication of current problems with CONDSTORE/QRESYNC since
2011 or so?

I've set:
imap_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 ESEARCH ESORT SEARCHRES
WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE
COMPRESS=DEFLATE QUOTA

and will report if this yields any changes


More information about the dovecot mailing list