Hi,
Timo Sirainen wrote:
On Tue, 2007-08-07 at 12:21 +0200, Bernd Kuhls wrote:
Now I create a new message in Thunderbird and save it as draft. A zero byte file "Drafts" is created in /home/$user/.imap_mail/ but the message I wanted to save got _lost_, /home/$user/.imap_mail/Drafts stays at zero bytes. The next message I try to save as draft finds its way to the Drafts mbox however.
Did you check what commands Thunderbird sends? Use e.g. rawlog (http://dovecot.org/bugreport.html). I don't think snarf plugin should cause this, and in general I can't think of a bug in Dovecot that would cause this.
I reproduced the bug with Dovecot 1.0.5 without snarf plugin and it happened again.
The user I used is "kuhls2", its home is /home/kuhls2, the mail folder (mbox format) is "/home/kuhls2/.imap_mail". This directory does not exist when I started my tests with a fresh install of Thunderbird 2.0.0.6 on Windows XP. I need this scenario working because I am about to switch from a working UW-IMAP install using /var/mail/$USER to Dovecot using "$HOME/.imap_mail/". Saved mails should not get lost with the new setup.
After setting up Thunderbird with IMAP/SSL access I connected to the Dovecot server and logged in, .imap_mail looks like this after login:
bach:/home/kuhls2/dovecot.rawlog# ls -la ../.imap_mail/ total 12 -rw------- 1 kuhls2 worker 0 2007-09-09 22:49 inbox -rw------- 1 kuhls2 worker 6 2007-09-09 22:49 .subscriptions -rw------- 1 kuhls2 worker 0 2007-09-09 22:49 Trash
These files were created during the first login with Thunderbird, note that neither a mbox "Drafts" is created nor is it visible in Thunderbirds folder list, which is ok.
Here is the rawlog of this transaction:
# cat 20070909-234323-10517.in 3 namespace 4 lsub "" "*" 5 list "" "INBOX" 6 list "" "Trash" 7 create "Trash" 8 subscribe "Trash" 9 list "" "Trash" 10 select "INBOX" 11 getquotaroot "INBOX" 12 IDLE
# cat 20070909-234323-10517.out
- OK [RAWLOG TIMESTAMP] 2007-09-09 23:43:23
- NAMESPACE (("" "/")) NIL NIL 3 OK Namespace completed. 4 OK Lsub completed.
- LIST (\NoInferiors \UnMarked) "/" "INBOX" 5 OK List completed. 6 OK List completed. 7 OK Create completed. 8 OK Subscribe completed.
- LIST (\NoInferiors \UnMarked) "/" "Trash" 9 OK List completed.
- FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
- OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
- 0 EXISTS
- 0 RECENT
- OK [UIDVALIDITY 1189369511] UIDs valid
- OK [UIDNEXT 1] Predicted next UID 10 OK [READ-WRITE] Select completed.
- QUOTAROOT "INBOX" ""
- QUOTA "" (STORAGE 84 0) 11 OK Getquotaroot completed.
- idling
Then I started to write a new mail and saved it as Draft, mbox Drafts gets created with 0 byte length, no error message in Dovecot logfile nor in Thunderbird, the mail content was not saved at all:
bach:/home/kuhls2/dovecot.rawlog# ls -la ../.imap_mail/ total 12 -rw------- 1 kuhls2 worker 0 2007-09-09 22:51 Drafts -rw------- 1 kuhls2 worker 0 2007-09-09 22:49 inbox -rw------- 1 kuhls2 worker 13 2007-09-09 22:51 .subscriptions -rw------- 1 kuhls2 worker 0 2007-09-09 22:49 Trash bach:/home/kuhls2/dovecot.rawlog# cat ../.imap_mail/.subscriptions Trash Drafts
Here is the rawlog when saving the mail into drafts folder. The first two log files had some lines added:
# cat 20070909-234323-10517.in ... DONE 13 list "" "Drafts" 14 create "Drafts" 15 subscribe "Drafts" 16 list "" "Drafts" 17 IDLE
# cat 20070909-234323-10517.out ... 12 OK Idle completed. 13 OK List completed. 14 OK Create completed. 15 OK Subscribe completed.
- LIST (\NoInferiors \UnMarked) "/" "Drafts" 16 OK List completed.
- idling
And two new logfiles were created:
# cat 20070909-234439-10531.in 3 select "Drafts" 4 IDLE
# cat 20070909-234439-10531.out
- OK [RAWLOG TIMESTAMP] 2007-09-09 23:44:39
- FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
- OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
- 0 EXISTS
- 0 RECENT
- OK [UIDVALIDITY 1189370254] UIDs valid
- OK [UIDNEXT 1] Predicted next UID 3 OK [READ-WRITE] Select completed.
- idling
Please note that I start Dovecot using inetd:
imap stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/imap-login imaps stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/imap-login --ssl pop3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/pop3-login pop3s stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/pop3-login --ssl
Doesn't Dovecot use /var/mail/$user then as the INBOX if the .imap_mail/inbox doesn't exist?
Yes, it seems so but its not a problem for me because the mails get snarfed later on.
Here is the config:
# dovecot -n # 1.0.5: /etc/dovecot/dovecot.conf log_path: /var/log/dovecot/dovecot.main log_timestamp: %Y-%m-%d %H:%M:%S protocols: imap imaps pop3 pop3s login_dir: /var/run/dovecot/login login_executable(default): /usr/lib/dovecot/imap-login login_executable(imap): /usr/lib/dovecot/imap-login login_executable(pop3): /usr/lib/dovecot/pop3-login mail_extra_groups: mail mail_location: mbox:~/.imap_mail:INDEX=/var/mail/indexes/%u mail_executable(default): /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap mail_executable(imap): /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap mail_executable(pop3): /usr/lib/dovecot/pop3 mail_plugins(default): quota imap_quota mail_plugins(imap): quota imap_quota mail_plugins(pop3): mail_plugin_dir(default): /usr/lib/dovecot/modules/imap mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap mail_plugin_dir(pop3): /usr/lib/dovecot/modules/pop3 imap_client_workarounds(default): outlook-idle netscape-eoh tb-extra-mailbox-sep delay-newmail imap_client_workarounds(imap): outlook-idle netscape-eoh tb-extra-mailbox-sep delay-newmail imap_client_workarounds(pop3): outlook-idle pop3_uidl_format(default): pop3_uidl_format(imap): pop3_uidl_format(pop3): %08Xv%08Xu auth default: passdb: driver: pam userdb: driver: passwd plugin: quota: fs
Greetings, Bernd Kuhls