[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gnus reads my mail
From: |
Simon Josefsson |
Subject: |
Re: Gnus reads my mail |
Date: |
Tue, 15 Feb 2005 22:54:48 +0100 |
User-agent: |
Gnus/5.110003 (No Gnus v0.3) Emacs/22.0.50 (gnu/linux) |
Stefan Monnier <address@hidden> writes:
> Although Gnus did not literally *eat* my email, I find this problem to be
> very serious since it might make me miss important email messages.
Agreed.
> - .../trunk/src/emacs --eval '(setq imap-debug t nnimap-debug t)' -f gnus
> - type in my imap password
> - save *imap-debug* to `imap-log-startup'
It appears the problem is in this part alone. It is easier to read if
you only enable `imap-log', and paste the result from the *imap-log*
buffer, but the same information is stored in the debug buffers too,
so I'm trying to read them below:
> | | | | | | 7 -> imap-arrival-filter: proc=#<process imap> string="* STATUS
> emacs (UNSEEN 35 UIDNEXT 22270 UIDVALIDITY 1062436086)
Ok, here your server reports that there are 35 unseen messages in the
emacs group. Good.
> | | | | | 6 -> imap-send-command: command="EXAMINE \"emacs\"" buffer=nil
> | | | | | | 7 <- imap-send-command-1: nil
> | | | | | 6 <- imap-send-command: 26
> | | | | | 6 -> imap-wait-for-tag: tag=26 buffer=nil
> | | | | | | 7 -> imap-arrival-filter: proc=#<process imap> string="* 5415
> EXISTS
> * 0 RECENT
> * OK [UIDVALIDITY 1062436086] UID validity status
> * OK [UIDNEXT 22270] Predicted next UID
> * FLAGS (gnus-expire gnus-forward \\Answered \\Flagged \\Deleted \\Draft
> \\Seen)
> * OK [PERMANENTFLAGS ()] Permanent flags
> * OK [UNSEEN 5381] first unseen message in
> /export/home/mail/monnier/Mail/emacs
> 26 OK [READ-ONLY] EXAMINE completed
And here Gnus enter the group read-only (EXAMINE).
> | | | | 5 -> imap-send-command-1: cmdstr="28 STATUS \"emacs\" (UIDNEXT)"
> | | | | 5 <- imap-send-command-1: nil
> | | | 4 <- imap-send-command: 28
> | | | 4 -> imap-wait-for-tag: tag=28 buffer=nil
> | | | | 5 -> imap-arrival-filter: proc=#<process imap> string="* NO CLIENT
> BUG DETECTED: STATUS on selected mailbox: emacs
> * STATUS emacs (UIDNEXT 22270)
> 28 OK STATUS completed
> "
Here Gnus asks for the UIDNEXT, which seem fine.
I believe the UoW warning is incorrect, sending STATUS on the
currently selected mailbox is valid according to RFC 2060. This have
changed in RFC 3501, which say this is a SHOULD NOT operation, but the
justification given and the suggested workarounds aren't applicable to
what Gnus want to do. Admittedly, Gnus (nnimap) could special-case
the STATUS on a selected mailbox, and return correct data immediately.
(Patches welcome..)
> | | | | | | 7 -> imap-send-command-1: cmdstr="65 SELECT \"emacs\""
> | | | | | | 7 <- imap-send-command-1: nil
> | | | | | 6 <- imap-send-command: 65
> | | | | | 6 -> imap-wait-for-tag: tag=65 buffer=nil
> | | | | | | 7 -> imap-arrival-filter: proc=#<process imap> string="* 5415
> EXISTS
> * 0 RECENT
> * OK [UIDVALIDITY 1062436086] UID validity status
> * OK [UIDNEXT 22270] Predicted next UID
> * FLAGS (gnus-expire gnus-forward \\Answered \\Flagged \\Deleted \\Draft
> \\Seen)
> * OK [PERMANENTFLAGS (gnus-expire gnus-forward \\* \\Answered \\Flagged
> \\Deleted \\Draft \\Seen)] Permanent flags
> * OK [UNSEEN 5381] first unseen message in
> /export/home/mail/monnier/Mail/emacs
> 65 OK [READ-WRITE] SELECT completed
Here Gnus select the group read-write.
> | | | | 5 -> imap-send-command-1: cmdstr="68 STATUS \"emacs\" (UNSEEN)"
> | | | | 5 <- imap-send-command-1: nil
> | | | 4 <- imap-send-command: 68
> | | | 4 -> imap-wait-for-tag: tag=68 buffer=nil
> | | | | 5 -> imap-arrival-filter: proc=#<process imap> string="* NO CLIENT
> BUG DETECTED: STATUS on selected mailbox: emacs
> * STATUS emacs (UNSEEN 0)
> 68 OK STATUS completed
And here Gnus asks for the number of UNSEEN messages in the group. It
is now 0. I didn't remove any operation on your emacs folder above,
and Gnus didn't remove any SEEN flags in the group, so something other
than Gnus must have reset the unseen count.
I suspect the UoW implementation of the STATUS command on a currently
selected mailbox is buggy.
The STATUS value is used by Gnus in the group buffer, that's why it
reads 0 there.